Computer >> 컴퓨터 >  >> 체계 >> Linux

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

신경망은 많은 일을 할 수 있습니다. 그들은 이미지를 해석하고, 우리의 목소리를 이해하고, 대화를 번역할 수 있습니다. 하지만 색칠도 할 수 있다는 사실을 알고 계셨나요?

최근 연구 논문('A Neural Algorithm of Artistic Style')이 몇 가지 눈에 띄는 시각적 예와 함께 온라인 토론을 시작했습니다. 기본적으로 이 논문은 이미지 구조에서 예술적 스타일을 분리하고 한 이미지의 스타일을 다른 이미지의 구조와 결합하도록 심층 신경망을 훈련하는 기술에 대해 논의합니다. 이 모든 것의 결과는 거대한 신경망을 훈련하여 사진을 마치 유명한 예술가가 그린 것처럼 보이는 "신경 그림", 즉 "디지털 위조품"으로 바꿀 수 있다는 것입니다.

다음은 기사의 몇 가지 예입니다. 첫 번째 이미지는 원본입니다. 이후의 이미지는 생성된 결과이며  스타일이 샘플링된 그림이 미니어처로 표시됩니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

원래 연구원은 불행히도 코드를 공개하지 않았습니다. 그러나 일부 대담한 프로그래머는 지난 며칠 동안 결과를 복제했으며 그들의 코드는 인터넷에서 공개 소스로 사용할 수 있습니다. 실행하는 데 필요한 것은 Linux 시스템과 약간의 인내심입니다.

오늘은 그 방법을 알려드리고 제가 만든 결과를 보여드리겠습니다. 이것을 DeepDream 튜토리얼의 느슨한 속편으로 생각할 수 있습니다. 약간 복잡하지만 Linux 머신이 있으면 누구나 따라할 수 있습니다. 코딩 경험이 없어도 됩니다.

소프트웨어 설정

우선, 급하지 않거나 Linux 머신이 없는 경우에도 DeepForger Twitter 봇을 사용하여 DeepStyle을 사용할 수 있습니다. 원하다). 더 많은 이미지를 빠르게 처리하고 결과를 더 많이 제어하려면 튜토리얼을 읽어보세요.

먼저 Ubuntu가 최신 버전인지 확인하세요. (14.04는 내가 사용한 것입니다). 최소한 몇 기가의 추가 하드 드라이브 공간이 있어야 합니다. 자세한 내용은 Windows와 함께 Ubuntu 이중 부팅에 대한 자습서를 확인하십시오. 또한 루트 권한이 필요하므로 계속하기 전에 루트 권한이 있는지 확인하세요.

기본 도구

사실 이것은 오픈 소스 프로젝트이므로 Git 설치되었습니다. Git은 버전 관리 소프트웨어의 표준입니다. 알아야 할 가치가 있는 거의 모든 오픈 소스 프로젝트가 Github에서 호스팅됩니다.

Git을 다운로드하고 설치하려면 터미널을 열고 "

sudo apt-get install git

" 및 설치자의 요구에 동의합니다.

다음:몇 가지 기본 도구를 설정할 것입니다. 소프트웨어를 작동시키는 데 필요합니다.

먼저 Lua를 설치합니다. 이것은 도구가 작성된 언어입니다. 매우 간단합니다. "

를 입력하세요.
sudo apt-get install lua5.2

"를 클릭하고 설치 과정을 따릅니다.

둘째, Luarocks를 얻을 것입니다. 이것은 다른 도구를 더 쉽게 설치할 수 있게 해주는 도구입니다(Linux가 마음에 들지 않습니까?). 이 경우 '

를 입력합니다.
sudo apt-get install luarocks

"를 클릭하고 설치 단계를 따르세요.

셋째, Luajit을 설치하겠습니다. 이것은 우리의 삶을 조금 더 단순하게 만들어줄 Lua용 Just-In-Time 컴파일러입니다. "

를 입력하세요.
sudo apt-get install luajit

."

지금까지는 너무 좋습니다.

프레임워크

다음으로 응용 프로그램의 중추를 구성하는 과학 컴퓨팅 및 기계 학습 프레임워크인 Torch를 설치합니다. 불행히도 이것은 apt-get(표준 Ubuntu 패키지 관리자)을 사용하여 설치할 수 없습니다.

운 좋게도 일부 명령줄 마법을 사용하는 한 줄 설치 프로그램이 있습니다. 터미널로 돌아가 "

를 입력하세요.
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash

".

완료되면 "

를 입력하십시오.
luajit -ltorch

". 그러면 토치 인터페이스가 표시되고 모든 것이 올바르게 설치되었는지 확인합니다.

빠져나가세요.

이제 loadcaffe를 설치하겠습니다. -- 신경망 특정 패키지. "

를 입력하여 유일한 종속성을 설치하십시오.
sudo apt-get install libprotobuf-dev protobuf-compiler

". 그런 다음 "

를 사용하여 패키지 자체를 설치할 수 있습니다.
sudo luarocks install loadcaffe"

.

이중 검사 종속성

마지막으로 모든 것이 원활하게 진행될 수 있도록 일부 항목을 사전에 업데이트할 예정입니다.

"

입력
sudo luarocks install image

" 이미지 패키지가 최신 상태인지 확인하십시오. 다음으로 "

를 입력하십시오.
luarocks install nn

" 'nn' 패키지에 대해서도 동일한 작업을 수행합니다.

딥 스타일 설치

괜찮은! 이 시점에서 우리는 실제로 소프트웨어 자체를 설치할 준비가 되었습니다. 청결을 위해 홈 디렉토리('mkdir DeepStyle')에 새 폴더를 만드십시오. 그런 다음 "

를 사용하여 입력하십시오.
cd Deepstyle

". 이제 "

를 입력하세요.
sudo git clone https://github.com/jcjohnson/neural-style.git".

다음으로 모델을 다운로드해야 합니다. 커피 한잔이나 하세요. 시간이 좀 걸립니다. 터미널로 돌아가서 "

를 입력하십시오.
sudo sh models/download_models.sh

". 길고 정교한 다운로드 프로세스가 시작됩니다. 권한 오류로 인해 실패했다면 chmod를 사용하여 관련 폴더에 대한 읽기-쓰기 권한을 부여해 보세요.

딥 스타일 사용

좋아, 가자. 소프트웨어 사용은 매우 간단합니다.

DeepStyle/neural-style 디렉토리에 있는지 확인하세요. 터미널에서. 이제 작업할 이미지가 필요합니다. 인터넷(또는 무엇이든)에서 다운로드한 다음 DeepStyle/neural-style 폴더에 복사합니다. 파일 브라우저를 사용합니다.

이제 명령줄을 사용하여 개별 이미지를 처리할 수 있습니다. 형식은 매우 간단합니다.

th neural_style.lua -style_image YOURPAINTINGHERE.jpg - content_image YOURPHOTOHERE.jpg -gpu -1

(물론 ALL 대문자로 된 청크를 파일 이름으로 바꿔야 합니다.)

그러면 신경망이 시작됩니다. 약 1시간 동안 실행되며 완료될 때까지 몇 분마다 부분적으로 수렴된 새로운 이미지를 내보냅니다.

-gpu -1

플래그는 GPU 액세스 시도를 중지합니다.

몇 시간 동안(그리고 운영 체제를 여러 번 벽돌로 만든) 내 GPU(NVIDIA GTX 970)에서 우분투와 CUDA를 제대로 사용할 수 없었습니다. 운이 좋다면 CUDA와 cudann.torch를 설치하고 싶을 것입니다(자세한 내용은 github repo 참조). 그렇지 않은 경우 괜찮습니다. CPU를 사용하면 계속 작동합니다. 조금 느려질 뿐입니다.

이 모든 작업을 수행하는 데 문제가 있는 경우 댓글로 문의해 주세요. 최선을 다해 도와드리겠습니다.

결과

다음은 지난 며칠 동안 생성한 몇 가지 이미지입니다. 결과는 엇갈리지만 그 중 상당수는 꽤 인상적입니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

전체 해상도를 보려면 여기를 클릭하십시오.

이것은 내 친구 Zack이 옐로스톤으로 하이킹 여행을 가는 것입니다. 스타일은 Theresa Paden이 만든 추상 회화에서 비롯됩니다. 구조가 전혀 없는 이미지를 사용하여 시스템이 어떻게 작동하는지 궁금했습니다. 결과는 꽤 깔끔하고 스타일 이미지와 확실히 유사함을 확인할 수 있습니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

전체 해상도를 보려면 여기를 클릭하십시오.

이것은 내가 가장 좋아하는 예술가 중 한 명인 Charles Demuth의 작품입니다(참조:새 교회의 향 및 그림 5 in Gold). 흥미롭게도 Demuth는 스타일 이미지에서 볼 수 있듯이 Team Fortress 2의 예술에 대한 주요 시각적 영감 중 하나입니다.

Wikimedia에서 찾은 Jersey City의 이미지를 제공했습니다. 결과는... 꽤 좋습니다. Demuth 스타일의 각진 부분을 선택하지 않았지만 부드럽고 질감이 있는 모양과 색상 팔레트는 확실히 선택했습니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

전체 해상도를 보려면 여기를 클릭하십시오.

이것은 내가 찾은 일부 꽃의 평범한 사진을 사용하여 합성 O'Keeffe를 생성하려는 시도입니다. 결과는 솔직히 훌륭합니다. 미학적으로 이것은 내가 가장 좋아하는 결과 중 하나입니다. O'Keeff의 색상과 모양의 풍부함이 명확하게 나타납니다. 꽃잎의 겹겹이 쌓인 가장자리는 배경에 있는 나뭇잎의 가장자리가 됩니다. 꽃 자체가 색으로 분해되어 거의 추상화됩니다.

사람이 그린다면 좋은 그림이 될 것입니다. 이 버전의 고해상도 버전을 렌더링하고 액자에 넣고 싶은 마음이 큽니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

전체 해상도를 보려면 여기를 클릭하십시오.

여기 피카소 프린트로 할로윈 의상을 입은 내 친구 섀넌이 있습니다. 흥미롭게도 이 장치는 그녀의 얼굴 아래 부분을 흰색으로 칠하기로 선택했습니다(피카소 작품의 색상 배치와 유사). 이것이 우연의 일치인지 아닌지는 확실하지 않지만 결과는 놀랍습니다. 또한 섀넌의 왼쪽 머리를 정확하게 식별하여 스타일 이미지에 있는 머리카락의 색상과 라인워크를 이용하여 다시 그려준 것 같습니다. 그녀의 모자도 마찬가지입니다.

이는 기술의 한계가 명확해지기 시작하는 부분 중 하나이다. 피카소가 실제로 섀넌을 그렸다면 원하는 효과를 얻기 위해 그녀의 얼굴 구조를 버리고 특징을 왜곡했을 것입니다. 이 시스템은 그런 종류의 높은 수준의 개념을 이해하지 못하고 어둡고 각진 선 및 색상 팔레트와 같은 스타일의 피상적인 측면만 모방할 수 있습니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

전체 해상도를 보려면 여기를 클릭하십시오.

상당히 간단합니다. 에펠탑과 반 고흐의 다른  사진 별이 빛나는 밤. 원본 이미지에 구름이 없음에도 불구하고 Van Gogh-ey 스타일로 구름을 잘 렌더링합니다. 또한 장면을 낮에서 밤으로 잘 번역합니다.

왜 피펠탑의 끝부분을 불기둥으로 하기로 결정했는지 모르겠습니다. 멋져 보이지만 입력 데이터에서 실제로 정당화되지는 않습니다. 그런 다음 나는 스타일 이미지에 물에 반사된 형태로 13개의 긴 수직 노란색 스트립이 있다는 것을 깨달았습니다. 훈련 데이터가 너무 적다는 점을 감안할 때 이는 상당히 방대한 클러스터입니다. 불쌍한 사람은 고대비 수직 가장자리가 이러한 반사 중 하나여야 한다는 것을 배웠을 것입니다. 구름에서 희미하게 더 많은 관련 없는 수직 줄무늬를 볼 수 있습니다.

DeepStyle 및 Ubuntu로 자신만의 신경 그림 만들기

전체 해상도를 보려면 여기를 클릭하십시오.

같은 반 고흐 그림이지만 이번에는 페인트할 실제 별을 몇 개 주었습니다. 이 경우 독수리 성운의 기둥 부분입니다. 결과가 마음에 듭니다. 하지만 다시 한 번 노란색 줄무늬에 대한 집착을 볼 수 있습니다. 기둥의 모든 수직 부분은 밝고 흔들리는 노란색 선이 됩니다. 또한 훈련 데이터에서 발생하지 않은 녹색에 대해 분명히 속상해하며 파란색과 검은색을 위해 최선을 다해 제거합니다.

기술

이 기술에는 분명한 한계가 있지만 일부 결과는 매우 설득력이 있습니다. 일부 이미지는 구도가 좋지 않으며 주제를 왜곡하고 특징을 흩뜨리는 것을 좋아하는 것으로 유명했던 피카소와 같은 보다 추상적인 예술가에게는 시스템이 어렵습니다. 알고리즘은 그의 각진 선과 충돌하는 색상을 선택하지만 여전히 이미지의 픽셀 값에 종속됩니다. 소스 자료에서 너무 멀리 벗어나는 데 필요한 이해력이 없습니다.

이 모든 것에 대해 저를 흥분시키는 것은 이러한 제한이 근본적인 것이라고 생각하지 않는다는 것입니다.

여기에서 사용되는 접근 방식(한 이미지로 네트워크를 훈련시키고 다른 이미지를 구성하는 데 사용)은 근본적으로 일종의 해킹입니다. 네트워크에 작업할 데이터가 거의 없습니다. 이 응용 프로그램의 고급 버전은 많은 그림과 실제 이미지에 대한 정보가 있는 네트워크를 사용하여 "페인트"하려는 이미지에 대한 충분한 컨텍스트를 제공합니다.

스타일에 대한 깊은 이해는 더 넓은 맥락에서만 존재할 수 있습니다. 단일 이미지에서 파생될 수 없습니다. 시스템이 더 광범위한 데이터에 액세스할 수 있도록 하는 아키텍처를 설계하면 이미지에 대한 보다 "인간적인" 이해와 아티스트가 현실 세계의 다양한 요소를 표현하는 방법을 도출할 수 있습니다. 그러한 네트워크는 더 추상적이고 더 나은 구성을 가진 이미지를 생성할 수 있습니다. 그러한 알고리즘은 더 이상 멋진 장난감(이와 같은)이 아니며 실제적이고 독창적인 예술을 생산하는 방법이 될 것입니다.

어떤 면에서는 매우 독특한 생각입니다.

나만의 이미지 만들기

실망스러운 결과를 얻은 경우 옵션을 약간 조정하여 더 설득력 있는 결과를 얻을 수 있습니다. 전체 목록은 Github에 있습니다. 중요한 것은

  • -content_weight -값 콘텐츠 재구성 기간에 가중치를 적용할 정도입니다. 기본값은 5e0입니다.
  • -style_weight -값: 스타일 이미지에 부여할 가중치. 기본값은 1e2입니다.
  • -style_scale - 값: 시스템이 분석해야 하는 이미지 패치의 크기(크면 클수록 추상화됨). 기본값은 1.0입니다.

모든 것이 만족스럽게 작동하면 댓글에 가장 흥미로운 이미지를 게시하십시오. 여러분이 무엇을 생각해 냈는지 정말 궁금합니다.

이미지 크레딧:Shutterstock을 통한 인간 두뇌 화가