파이썬 인공지능AI 라이브러리 사용 - 사진 변환 (3/5)
목차
AI와 관련된 뉴스를 보면서 인공지능을 활용한 다양한 작업들이 소개된다. 그 중에 어떤 것이 가장 흥미로웠는가? 필자는 고흐나 피카소 같은 유명 화가의 스타일로 그림을 그리는 것이 가장 인상적이었다. 내가 찍은 사진으로 유명 화가의 그림을 만들어낼 수 있다는 것이 재밌고 유용해 보였다.
오늘은 zAI를 이용하여 사진을 유명 화가의 그림으로 변환하는 작업을 해 보고자 한다.
zAI에는 사진을 특정 확가의 스타일로 변환하는 작업을 할 수 있다. 이미지는 이전 포스팅에서 작업한 트럼프의 얼굴을 가지고 작업하기로 하였다.
(참조: 파이썬 AI 라이브러리 zAI 사용기 -AI이미지 추출 (2/5) )
작업을 하기 위해 어떤 화가의 스타일로 사진을 변환할 지 정해야 한다. 라이브러리에서 sample로 제공된 피카소의 그림을 먼저 이용해보자.
1 2 | picasso = zImage('./zAI/samples/Picasso_ Pablo_ Autorretrato_ 1907.jpg') | cs |
(피카소의 그림)
그림에는 약간 문외한이라 어떤 그림인지는 잘 모르겠다. 이제 이전에 작업한 트럼프의 얼굴을 피카소의 그림 스타일로 변환하면 된다.
1 | myCustomProfilePhoto = myCloseup.style(picasso) | cs |
zImage로 생성한 변수에 .style을 적용하면 된다. 위 함수를 실행시키면 이미지 변환을 하기 위한 파일을 다운로드 받기 시작하는데 이게 꽤 시간이 오래 걸린다.
중간에 다운로드를 중지시키면 이후에 에러가 난다. 중간까지 다운로드 받은 파일로 작업을 하기 때문이다. 이 때에는 다운로드 받던 파일을 지워줘야 한다. 맥에서는 'User/open/.zAI/models'에 저장을 하기 때문에 해당 폴더로 가서 삭제하면 된다. 윈도우 PC를 사용한다면 아래 코드를 실행하면 어느 폴더에 저장하고 있는지 알 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # -*- coding: utf-8 -*- import os def get_zai_dir(): ''' Work out where to store configuration and model files locally ''' _zAI_base_dir = os.path.expanduser('~') if not os.access(_zAI_base_dir, os.W_OK): _zAI_base_dir = '/temp' _zAI_dir = os.path.join(_zAI_base_dir,'.zAI') return _zAI_dir print(get_zai_dir()) | cs |
라이브러리의 downloads에 있는 소스인데, 해당 코드를 실행해서 나오는 경로에 /models를 붙이면 파일이 다운로드 되는 경로를 알 수 있다. 다운로드 받는 파일이 어떤 파일인지 궁금해서 다운 받는 주소를 따라가 보았다.
필자는 잘 모르지만, 관련 업계 종사자에게는 유명한 싸이트일 수 있다는생각이 든다. VLFeat는 오픈 소스 라이브러리이다. 이미지를 이해하고 특성을 추출하고 매칭시키데 특화된 컴퓨터 비전 알고리즘 구현하는 라이브러리라고 한다. 여기서 imagenet-vgg-verydeep-19.mat 이라는 파일을 다운로드 하는데 파일용량이 510mb이다. 직접 다운 받아서 폴더에 넣어주어도 프로그램은 잘 작동한다.
위와 같은 우여곡절(?)을 겪어 변환된 이미지는 아래와 같다.
(변환된 이미지)
어떤가? 피카소의 스타일로 잘 변환됐지만 조금 아쉽다. 오른쪽 눈이 약간 이상해다. 스타일뿐만 아니라 그림도 피카소와 트럼프의 중간이 된 듯하다. 피카소의 그림과 유사한 포즈로 찍어야 변환이 잘 될 것 같은 생각이 든다.
추천포스트
필자의 얼굴도 한 번 변환해 보았다.
........ 필자의 사진을 공개할 수는 없지만, 이렇게 괴물같이 생기지는 않았다. 트럼프 사진보다 변환이 잘 된 것 같다. 여전히 눈은 좀 변환이 잘 안 되는 듯 하다.
고흐의 그림을 이용해서 변환하는 작업을 해 보았다.
(고흐의 그림)
풍경 사진이 잘 될 것 같은데, 풍경사진을 찾아서 변환해 보았다.
(변환된 이미지)
꽤 괜찮은 품질로 변환된 듯 하다. 하지만 역시 변환하고자 하는 이미지와 구도와 스타일이 비슷한 이미지가 더 잘 변환될 듯 하다.
트럼프의 사진을 변환한 코드를 올리면 아래와 같다. 겨우 10줄 남짓한 코드로 이런 재미있는(?) 이미지변환을 할 수 있다니 놀랍다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # coding=utf-8 import zAI from zAI import zImage picasso = zImage('./zAI/samples/Picasso_ Pablo_ Autorretrato_ 1907.jpg') picasso.display() myPhoto = zImage('./zAI/samples/Donald_Trump_8566730507.jpg') myPhoto.find_faces(backend='local') myCloseup = myPhoto.extract_face(margin=15) myCloseup.display() myCustomProfilePhoto = myCloseup.style(picasso) myCustomProfilePhoto.display() | cs |
오늘은 파이썬 인공지능AI 라이브러리 zAI를 이용하여 사진을 변환하는 작업을 해 보았다. 개인마다 차이는 있지만 꽤 괜찮은 품질로 사진이 변환됐다. 그리고 단 몇 줄의 코드로 변환이 가능하다는 것이 참 편리했다. 다음에는 텍스트를 번역하고 음성으로 읽어주는 작업을 해 보고자 한다.
오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.
(참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)
'Python > 파이썬 배우기' 카테고리의 다른 글
2018 파이썬 개발자 설문조사 결과 알아보기 (0) | 2019.03.30 |
---|---|
파이썬 AI라이브러리 zAI - 번역과 텍스트음성변환하기 (4/4) (4) | 2018.10.03 |
SQLITE3 파이참에서 SQL로 사용하기 (0) | 2018.09.22 |
파이참 화면 레이아웃 알아보기 (0) | 2018.08.26 |
파이썬 AI 라이브러리 zAI 사용기 -AI이미지 추출 (2/5) (2) | 2018.08.21 |
파이썬 AI 라이브러리 zAI 사용기 -문자인식 (1/5) (2) | 2018.08.20 |
한스 로슬링 교수와 gapminder 알아보기 (0) | 2018.06.25 |
파이썬프로그래밍 유료&무료 교육 강좌 알아보기 (3) | 2018.02.18 |