지능적인 코드 아트

Jessie Cho

beauty(아름다움)
/ˈbjuːti/
미적 감각, 특히 시각을 즐겁게 하는 모양, 색상 또는 형태와 같은 특성들의 조합.

아름다움를 만들어 내도록 기계를 훈련시킨다면 어떻게 될까요? 코드로 만들어진 새로운 차원의 예술을 만나게 될 것입니다.

JetBrains에서 스플래시 화면, 배너 및 릴리스 그래픽을 위한 독창적인 그래픽을 만들 때는 항상 코드 생성 아트를 사용합니다. 각 결과물은 고유한 디자인을 가지고 있어 데스크톱에서 만족스러운 미학을 선사합니다.

JetBrains Artwork Generator v4

새로운 기능

이 버전의 그래픽 생성기는 신경망을 사용하여 애니메이션 그래픽과 정적 그래픽을 모두 만들어 냅니다.

이미지 생성기가 생성하는 이미지는 기본적으로 피드포워드 신경망 매핑 기능이 펼쳐내는 풍경입니다! 아름다움을 만들어내는 몇 가지 트릭이 내부에서 작용하고 있지만 대부분은 네트워크에 전달하는 정확한 데이터를 기반으로 합니다.

적은 노력으로 눈을 즐겁게 해주는 이미지를 생성하는 핵심 도구는 Mixer 모드입니다. 여기에는 여러분이 좋아하는 것으로 나타낸 이미지들이 결합되어 있으며 이러한 이미지를 이용해 시각적으로 유사한 새로운 이미지를 생성합니다. 이것은 유전 알고리즘을 간단하게 구현한 것입니다. 선택한 이미지의 매개변수가 함께 혼합되어 완전히 새로운 것으로 진화할 수 있는 기회가 생겨납니다. 사용자가 어떤 이미지를 혼합했는지, 즉 사용자가 아름답다고 간주할 수 있는 정보를 사용하여 어떤 매개변수 집합이 아름다운 이미지로 이어질지 예측할 수 있는 이진 분류 모델을 트레이닝 할 수 있습니다.

따라서 신경망 사용은 두 갈래로 나뉘는데, 이미지 생성 프로세스 자체에 사용되는 부분이 있고, 눈을 사로잡는 결과를 만들기 위해 앞서 언급한 프로세스의 최적 초기 조건을 찾는 데 사용되는 부분이 있습니다.

이제 나만의 디자이너가 되어 진정으로 나에게만 고유한 데스크톱용 배경 화면을 만들 수 있습니다. 간단히 당사 웹 사이트의 데스크톱 아트 페이지를 방문하거나 code2art.jetbrains.com으로 이동하시면 됩니다. 내부에서 신경망이 어떻게 작동하는지 알아보려면 Datalore notebook을 확인하세요.

데스크톱 아트 둘러보기

생성기를 이용해 무엇을 창작할 수 있는지 알아볼 수 있는 몇 가지 사례를 직접 확인하세요.

Ēage

Kubrik
Kubrik

Venus
Venus

GUI의 작동 방식

프런트엔드는 Mixer 모드에서 사용자 인터페이스, 그리고 Solo 모드에서 신경망의 특정한 결과를 조정하기 위한 컨트롤러의 역할을 합니다. 동일한 프런트엔드 코드가 모든 버전의 생성기에 사용되었고 여전히 사용되고 있기 때문에 각 버전을 거치면서 많이 개선되었습니다. 이번에는 구성 가능한 개별 구성 요소로 작동하고 독립적인 정적 또는 동적 아트를 생성할 수 있는 레이어 기능의 완성도를 더욱 높였습니다. 또한 GUI 로직은 시각적 표현과는 독립적으로 만들어졌으며, 이제 플러그가 가능하므로 향후 슬라이더, 노브, 입력 및 버튼의 모든 시각적 공급자에게 연결할 수 있게 될 것입니다.

도구의 새로운 기능 사용법

드롭다운에서 IntelliJ IDEA 또는 MPS와 같은 제품을 선택한 후, 간단히 Prescribed 버튼을 클릭하면 모든 애니메이션의 기교가 담긴 제품의 스플래시 화면이 만들어집니다.

Mixer 모드와의 상호 작용

초기 화면에서 신경망에 의해 개별적으로 생성된 9개의 서로 다른 이미지를 볼 수 있습니다. 임의의 아이디어를 혼합하고 정말로 마음에 드는 이미지를 선택한 다음, 내적 자아를 반영하는 아트를 창작할 수 있는 장소라는 의미에서 이를 Mixer 모드라고 부릅니다.

Venus

제시된 어떤 이미지도 취향에 맞지 않는다면 Regenerate를 눌러 이전과 완전히 다른 새로운 9개의 이미지를 만들 수 있습니다. 하지만 Regenerate를 누르기 전에 항상 이미 생성된 이미지를 세부적을 조정할 수 있다는 점을 잊지 마세요. 이 부분에 대해서는 나중에 자세히 알아보겠습니다. 한편, 기존 이미지가 마음에 든다면 간단히 이미지를 하나씩 클릭하고 Cross-breed 버튼을 눌러주세요. 선택한 이미지가 유지되고 선택한 이미지가 혼합된 일부 새로운 이미지들이 만들어집니다. 완벽한 이미지를 얻을 때까지 이 과정을 원하는 만큼 반복할 수 있습니다.

또한, 신경망은 사용자의 선택을 통해 학습하는데, 이를 “Crowdsourcing”이라고 부르겠습니다. 세상은 진정으로 아름다운 것을 알고 있습니다. 이 집합적인 지식을 취합하고 결합하면 신경망도 아름다운 것을 인식하는 단계에 이를 수 있습니다. Mixer 모드에는 이미 JetBrains의 선택을 통해 훈련된 신경망이 제공됩니다. 자신의 선택과 이를 비교하거나 Trained by에서 wild로 전환하여 사전 훈련된 네트워크를 비활성화할 수 있습니다.

Solo 튜닝

Mixer 모드에서 이미지를 더블 클릭하여 이 특정 이미지의 모든 측면을 제어할 수 있는 Solo 모드로 들어갑니다. 오른쪽의 Neuro 폴더에 여러 가지 슬라이더와 확인란이 있습니다. 이러한 요소들을 다양하게 시도해보세요.

언제든지 이미지를 더블 클릭하여 Mixer 모드로 돌아갈 수 있습니다.

장면 저장

완벽한 조합의 이미지를 공유할 준비가 되었거나 나중에 다시 돌아와 마지막 손질을 하고 싶다면 간단히 Get URL 버튼을 누르세요. 그러면 브라우저의 주소 표시줄에 현재 창작물을 공유하거나 나중에 다시 돌아올 때 이용할 수 있는 고유한 URL이 생성됩니다.

Solo 이미지 애니메이션 처리

Solo 모드에서 Animate 버튼을 누르고 잠시 기다립니다. 시간이 좀 오래 걸릴 수도 있습니다. 대기열에 놓여질 수도 있는데, 이 경우 대기열의 어디에 있는지 알려줍니다. 탭을 닫고 나중에 다시 돌아올 수 있습니다. 장면을 저장하고 Animate를 다시 눌러 상태를 확인하는 것을 잊지 마세요. 최종적으로, 레이어에서 이미지의 애니메이션 비디오를 보게 됩니다. 뫼비우스의 띠처럼 무한하게 반복되는 루프입니다. Back to static 버튼을 누르면 이미지의 정적 버전으로 돌아갑니다.
애니메이션 장면에 대한 URL을 생성하고 세상과 공유할 수 있습니다.

비디오로 내보내기

.mp4 파일로 내보내기를 원한다면 그렇게 할 수 있습니다! 정말 까다로운 과정이지만 노력할만한 가치가 있습니다. 농담입니다, Export Video 버튼만 누르면 끝납니다!

애니메이션의 경우에도 동일한 조건이 적용됩니다. 대기열이 있고 렌더링 진행 표시줄이 있지만 렌더링 프로세스 중에 장면을 저장하기 위한 URL을 생성하고 이를 이용해 나중에 다시 돌아와 렌더링이 완료되었는지 확인할 수 있습니다(기다리는 동안 브라우저 탭을 닫아도 안전합니다).

예감이 좋나요?

행운을 시험해 보려면 I feel lucky 버튼을 누르세요. 인공적이지 않고 지능적이지 않은 임의성은 예상치 못한 설정들의 조합을 제시합니다. 임의의 설정 조차도 아름다운 것을 만들어낼 수 있습니다. 예쁘지 않은 이미지를 만들어낼 수도 있지만 아름다운 경우가 더 많습니다.

기술적 세부 사항

기술적으로, 서버쪽은 여러 부분으로 분할됩니다.

  • TensorFlow로 생성된 신경망 기반* 이미지 생성 엔진
  • 이미지로부터 비디오를 생성하는 비디오 렌더링 엔진
  • 장면 저장
  • CPU 및 GPU 집약적 작업을 서버 구성 요소 사이에 분산시키기 위한 작업 대기열
  • Mixer 모드 – 일반 알고리즘을 통해 생성된 이미지를 더욱 전개시키기 위한 도구
    • Mixer 모드, 그리고 사용자의 선호도를 취합하여 어떤 이미지가 더 아름다울 가능성이 높은지 예측하는 이미지 생성 엔진을 기반으로 개발된 또 다른 신경망이 있습니다.

*신경망 자체는 데이터 과학자를 위한 온라인 노트북인 JetBrains의 Datalore에서 생성되었습니다. 네트워크 아키텍처에 대한 자세한 내용은 여기를 참조하세요. 노트북 사본을 만들고 모델 매개변수를 직접 실험해 보세요.

생성기로 재미 있는 시도를 해보고 #code2art 및 태그 @JetBrains를 사용하여 소셜 미디어에서 다른 사람들과 결과를 공유하는 것을 잊지 마세요. 여러분이 어떤 작품을 만들어낼지 궁금합니다!

JetBrains
The Drive to Develop

이 게시물은 Olga Andreevskikh가 작성한 Intelligent Code Art를 번역한 글입니다.