신경망을 사용한 일러스트 자동채색
2019 종합설계
이영섭
2012010922
2
Index
1. 동기 / 목적 2. 필요이유
3. 관련 프로젝트 및 논문 4. 차이점
5. 구현 내용
6. 시스템 다이어그램 7. UML
8. 최종목표 및 평가 방법 9. 요구사항 및 평가 기준
10. 일정
1. 동기 / 목적
기존 만화를 컬러로 보고싶다 !
3
- 원피스 1 권 1 화 첫 장
1. 동기 / 목적
4
+ + =
콤마를 나눠서 보면 각각의
그림 ( 일러스트 ) 이지 않을
까 ?
5 Black
Magic
만들
것 .... 원하는결과물 !
1. 동기 / 목적
신경망을 사용해 일러스트를
학습시켜 선화를 채색해 보자
6
- 한국 웹툰 산업에서 신경망을 사용해 채색을 하려는 연구가 일어나고 있다 .- 네이버웹툰이 ' 웹툰 인공지능 (AI)' 으로 하려는 일 들 “딥러닝으로 웹툰 생태계를 더 단단하게 만들겠다”
- 세계 최초로 웹툰 에 딥러닝을 적용한 사례 네이버웹툰 x 하일권
2. 필요이유
7
2. 필요이유
- 미디어 산업에서 프로젝트 초기에 만드는 콘티의 간단한 컬러화를 통해 디자이너와 의사소통을 도운다 .
- "웅진코웨이 정수기 컬러콘티 ", 콘티그라피
- "인랑 콘티 ", 오키우라 히로유키 ( 沖浦啓之 )
3. 관련 프로젝트 및 논문
Papers
- Lvmin Zhang, Yi Ji, Xin Lin. Style Transfer for Anime Sketches with Enhanced Residual U-net and Auxiliary Classifier GAN (2017)
- 김성민 . Consistent Comic Colorization with Pixel-wise Background Classification (2017)
- Paulina Hensman, Kiyoharu Aizawa. cGAN-based Manga Colorization Using a Single Training Image (2017)
- 저자 . 제목 . ( 년도 )
8
9
Papers
- Ceyda Cinarel, Byoung-Tak Zhang. Into the Colorful World of Webtoons: Through the Lens of Neural Networks (2017)
- Ceyda Cinarel. Automatic Colorization of Webtoons Using Deep Convolutional Neural Networks 딥컨볼루션을 이용한 웹툰 자동 채색 (2018)
- 홍준표 , 김형호 , 김동이 , 황원준 . GAN 과 Edge Detector 를 사용한 Webtoon 자동 채색 기법 (2018)
- Yuanzheng Ci, Xinzhu Ma, Zhihui Wang, Haojie Li, Zhongxuan Luo. User-Guided Deep Anime Line Art Colorization with Conditional Adversarial Networks (2018)
3. 관련 프로젝트 및 논문
- 저자 . 제목 . ( 년도 )
10
Project from Github
- taizan. PaintsChainer
- github.com/taizan/PaintsChainer/
- Pixiv 에서 "pixiv sketch" 어플로 상용화 됨
- Kvfrans. deepcolor
- github.com/kvfrans/deepcolor
- lllyasviel. style2paints (v 1,2,3,4)
- github.com/lllyasviel/style2paints
3. 관련 프로젝트 및 논문
11 - Style Transfer for Anime Sketches with Enhanced Residual U-net and Auxiliary Classifier GAN
채색을 위한 힌트 데이터가 충분하지 않아 VGG19 네트워 크를 사용 , 데이터를 1x1x 4096 사이즈의 벡터 데이터 로 만들어 힌트로 사용
- Generates 구조 , style2paints 의 초기모델
3. 관련 프로젝트 및 논문
적대적 네트워크 (Discriminator) 를 사용해 실제 일러스트와 생성된 이미지의 유사도를 평가하는 방식으로 네트워크를 학습
- 생석적 적대적 네트워크 (GAN) 학습 구조
12
- Consistent Comic Colorization with Pixel-wise Background Classification
- 256x256 선화를 입력 각각의 신경망 a, b 를 통해 32x32x3 이미지 , 256x256 흑백 배경 이미지를 만들어 합쳐 신경망 c 을 통해 채색을 진행 - GAN 방식의 학습을 하지 않고 Unet 을 사용하지 않음
- 네트워크 구조
3. 관련 프로젝트 및 논문
13
- User-Guided Deep Anime Line Art Colorization with Conditional Adversarial Networks
- 네트워크 구조
- 네트워크 초기 단계에 선화의 특징을 추출하기 위해 지역 특징 네트워크 (Local Feature Net) 를 추가 - cGAN(Conditional GAN) 방식을 사용해 학습 시킬 때 Discriminator 의 conditional 입력으로 LFN 의
결과를 사용
- 네트워크 모델의 용량을 더욱 증가시키기 위해 ResNet 대신 복수의 ResNext 을 사용 - Loss 계산을 위해 VGG16 네트워크 사용
- 결과 좌 : inputs 선화 및 힌트 , 우 : 생성된 이미지
3. 관련 프로젝트 및 논문
14
NO TITLE
C1 Style Transfer for Anime Sketches with Enhanced Residual U-net and Auxiliary Classifier GAN
C2 GAN
과 Edge Detector 를 사용한 Webtoon 자동 채색 기법C3 Automatic Colorization of Webtoons Using Deep Convolutional Neural Networks C4 Into the Colorful World of Webtoons: Through the Lens of Neural Networks C5 Consistent Comic Colorization with Pixel-wise Background Classification C6 cGAN-based Manga Colorization Using a Single Training Image
C7 User-Guided Deep Anime Line Art Colorization with Conditional Adversarial Networks
G1 PaintsChainer G2 deepcolor G3 style2paints
4. 차이점
15
C1, C2
- 입력하는 일러스트의 스타일을 변경하는 방식 - 원하는 색을 선택할 수 없음
C3, C4, C5, C6
- 선화를 완전 자동으로 채색 - 원하는 색을 선택할 수 없음
- C3, C4, C5의 경우 출력 해상도가 256x256px
- C6의 경우 학습 데이터로 컬러로 된 만화 이미지가 필요
C7
- 성능 향상을 위해 지역 특징 네트워크 (Local Features Network) 사용 - 많은 네트워크를 사용하여 메모리 사용량이 많음
4. 차이점
16
G1 : PaintsChainer
- Chainer framework 사용 - 컬러 포맷으로 YUV 를 사용 - 생성자모델 구조가 다름
G2 : deepcolor
- 작은 네트워크를 사용
- 최대 사이즈가 256x256px
- 원본 이미지 random crop 후 블러를 사용해 학습 시 힌트 데이터를 생성
G3 : style2paints
- Keras 사용 (backend 는 tensorflow) - 스타일 변형 + 사용자 힌트 방식을 같이 사용 - 많은 네트워크를 사용하여 메모리 사용량이 많음
4. 차이점
17
4. 차이점
내용 C1 C2 C3 C4 C5 C6 C7 G
1 G2 G3
본 과제스타일 변형 O O X X X X X X X O X
사용자 힌트
(
색 선택 ) X X X X X X O O O O O출력 해상도 (px) 256 256 256 256 256 512 512 512 256(MAX 512) 512 512(MAX 1024) 메모리 사용량
(
모델 용량 ) L S ? ? ? ? XL M S XL M● 개발환경
● 데이터 수집 및 처리
● 학습 모델 생성
○ Draft model ( 초안모델 )
○ Discriminator ( 분류자 )
○ 512 Model
○ Upscaling model
18
5. 구현 내용
● 모델 학습
○ Data Input Pipeline
○ 초안모델 적대적 학습 (GAN Training)
○ 512 모델 학습
● 모델 테스트
● GUI Program
○ Pyqt
19 OS Ubuntu 18.04.2 LTS x86_64
Kernel 4.15.0-46-generic
CPU AMD Ryzen 7 2700X (16) @ 3.7GHz GPU NVIDIA GeForce RTX 2080
RAM 32GB
사용언어 Python 3
Tensorflow 1.12.0 ~ 1.13.1 CUDA 10 (cuDNN: 7.4.2.24) Numpy 1.15.2
OpenCV 3.4.3
5. 구현 내용 . 개발환경
20
5. 구현 내용 . 데이터 수집 및 처
리
- 약 100 만개 정도의 일러스트 이미지 크롤링
- OpenCV 를 사용해 흑백 , 하이키 , 로우키 를 필터링
-
극단적인 이미지는 모델 학습에 좋지 못한 영향을 끼칠 수 있다고 생각해서 노이즈로 분류- 512x512 px 로 리사이징
- 학습 시간을 단축시키기 위해 미리 리사이징
- Low key Image 예 - high key Image 예
21
- TensorFlow 사용 (1.12.0 ~ 1.13.1 version)
- 사용자가 가장 많고 자료가 풍부함
- 즉시실행모드(Eager Execution) 출시후 학습 및 디버깅 용이함 - 지원 플랫폼 , 언어가 다양함
- tf.keras 모듈을 사용해 네트워크 제작
- 모델 구현 간편함
- 기존 tf.layers 모듈이 사라질 예정
5. 구현 내용 . 학습 모델 생성
22
- 데이터 형태를 유지하면서 학습을 진행하는데효과가 좋은 Unet 을 사용
- 네트워크 용량을 늘리고 망 깊이를 늘려 특징을 잡기 위해 BN(BatchNormalization) 대신
ResBlock을 사용
- 마지막 레이어에서 활성화 함수로 하이퍼볼릭 탄젠트 (Than) 을 사용해 -1~1 사이의 값으로 출력
- fully residual U-net 구조 - ResBlock 구조
5. 구현 내용 . 학습 모델 생성 . Draft
model
23
- DCGAN에서 제안한 분류자 구조를 사용- Pooling 대신 strider 2 CNN 을 사용해 사이즈를 줄임
- 처음과 마지막 레이어에서는 BatchNormalzation 을 사용하지 않음
5. 구현 내용 . 학습 모델 생
성 . Discriminator
- 512px 생성
24
자
5. 구현 내용 . 학습 모델 생성
- 512 Model은 Draft model( 초안 모델 ) 에서 Resblock 대신 BN 을 사용
- Upscling Model은 VGG7 형식의 구조를 가지고 CNN 블럭을 7 개 사용
- VGG7 구조의 Upscaling Model
25 NN Model Input Shape Output Shape
Draft Model
Line:
128x128x1
128x128x3 Hint:
128x128x3 Discriminato
r 128x128x3 1
Model
Line:
512x512x1
512x512x3 Draft:
512x512x1 Upscaling
Model ? x ? x 3 ? x ? x 3
5. 구현 내용
- 생성 모델의 이미지 생성 과정 다이어그램
5. 구현 내용 . 모델 학습 . Data Input Pipeline
26
- 데이터 증식 (data augmentation)- 데이터 좌우상하 Random Flip
- 선화 데이터에 노이즈를 추가해서 모델 안정성을 높임
- 데이터 전처리
- 학습 모델에 맞게 리사이즈 128x128 or 512x512(512 는 학습전에 리사이즈 )
- 데이터 정규화 0~255(uint8) 사이의 픽셀 값을 -1~1 (float32) 사이의 값으로 정규화
- 무작위 픽셀 유출
- 학습 시 힌트로 실제 컬러 이미지의 픽셀을 무작위로 유출 (leak)
- 무작위 픽셀 유출 예시 (Random pixel leak)
(4x4 해상도에서 5 회 실행을 가정 )
27
- 생성적 적대적 네트워크 (Generative Adversarial Networks)- 초안 모델 와 Discriminator 를 적대적으로 학습 - 두 모델의 경쟁을 통해 성능 향상
hint 초안모델
Discriminato r
분류자 진짜
가짜
진짜 ?!
가짜 ?!
- 서로 적대적으로 동작하여
- 생성자 ( 초안 모델 ) 가 더욱 진짜 같은 가짜 이미지를 생성하도록 함
line
5. 구현 내용 . 모델 학습 . 초안모델 적대적
학습
28
5. 구현 내용 . 모델 학습 . 초안모델 적대적
학습
- 적대적 학습을 위한 오차 함수
- 분류자를 위한 Dis loss - 초안모델을 위한 G1 loss
- l 은 입력 선화 , h 는 입력 힌트 , t 는 실제 이미지 , D 는 분류자 G
1은 초안모델 , α 는 100
29
- 초안 모델에서 만들어지는 초안 (Draft) 을 - 512x512 사이즈로 리사이즈 한 다음
- 초안을 힌트로 생성자 학습 - L2 loss 사용
5. 구현 내용 . 모델 학습 . 512 모델 학습
-
l
은 입력 선화 , h 는 입력 힌트 , t 는 실제 이미지 , G2은 512 모델30
- 학습은 즉시 실행 모드 , 테스트는 그래프 모드를 사용
- 즉시 실행 모드에서 학습된 모델을 불러와 사용 가능한지 확인
- 데이터 셋을 학습용 테스트 용을 따로 분류 - 저장된 모델을 사용해 테스트
- 학습에서 나온 오차와 테스트 셋을 사용한 오차 (
G
2loss)
를 비교5. 구현 내용 . 모델 테스트
- Pyqt 를 사용
- Ui 파일 분리가능 - 크로스 플랫폼
- 그림판 형식의 인터페이스
- 선화 위에 원하는 색 ( 힌트 ) 을 그리는 방식
- 일러스트 -> 선화 변경 기능 - 선택적인 업스케일 기능
- 최대 1024x1024 해상도
31
- UI 프로토타입 , 사진 : 진격의 보노보노
5. 구현 내용 .GUI Program
32
6. 시스템 다이어그램
line, hint 입력
GUI 초안 모델
512 모델 전처리
resize
Upscaling Model 후처리
TensorModul
Upscaling
?
Yes
No 이미지 확인
사용자 입출력 데이터 흐름 신경망 모델 GUI
33
7. UML
신경망 관련 Class GUI 관련 Class 유틸 Class
34
8. 최종목표 및 평가 방 법
- 최종목표
- 입력한 선화를 원하는 색으로 채색하기 위해 사용자 힌트를 줄 수 있는 신경망 자동채색 프로그램을 개발한다 .
- 평가 방법
- 데이터를 학습용 , 데스트용 으로 분류하여 학습에 사용하지 않은 테스트 데이 터를 사용해 최종모델의 정확도를 평가한다 .
- 평가에 사용할 Loss 함수는
G
2loss
를 사용한다 .35
9. 요구사항 및 평가 기 준
No
요구사항FR-01
펜 사이즈를 변경할 수 있다 .FR-02
펜 색을 변경할 수 있다 .FR-03
가로 , 세로 이미지 모두 사용할 수 있다 .FR-04
입력 이미지를 선화로 만들 수 있다 .FR-05
업 스케일 취소 시 최대 512x512px 해상도 혹은 가로 , 세로 중 한쪽 길이가 512px 이상으로 출력할 수 있다 .FR-06
업 스케일 선택 시 최대 1024x1024px 해상도 혹은 가로 , 세로 중 한쪽 길이가 1024px 이상으로 출력할 수 있 다 .FR-07 "jpg, jpeg, png”
파일을 입력 이미지로 사용할 수 있다 .FR-08
출력된 결과물은“ *.jpg ”
파일로 저장할 수 있다 .36
No
평가 항목 평가 기준ER-01 요구사항 전부 만족
ER-02 채색 성능 테스트 셋의 G
2loss 평균 0.18 이하 ER-03 Model 용량 300mb 이하
ER-04
힌트 정보량 사용자 힌트 없이 채색할 수 있다 .ER-05
정확도 사용자 힌트 ( 색 정보 ) 를 주면 해당 지점 이 힌트의 색으로 채색이 되어야 한다 .9. 요구사항 및 평가 기
준
37
10. 일정
진행내용
1 2 3 4 5 6 7 8 9 10 11 12 13 14
학습 전처리 코 드
모델 생성 학습 GUI
테스트 코드 버그수정 평가및 테스
트 보고서 및 발
표
최종
보고서01 epoch = 09h
10 epoch = 90h = 3~4 일
20 epoch = 180h = 7~8 일
38
Reference
[1] Zhang, L., Ji, Y., Lin, X., & Liu, C. (2017, November). Style transfer for anime sketches with enhanced residual u-net and auxiliary classifier gan. In 2017 4th IAPR Asian Conference on Pattern Recognition (ACPR) (pp. 506-511). IEEE.
[2] Kang, S., Choo, J., & Chang, J. (2017). Consistent Comic Colorization with Pixel-wise Background Classification (Doctoral dissertation, Thesis, NIPS. KAIST. https://nips2017creativity. github.
io/doc/Consistent_Comic_Colorization. pdf).
[3] Hensman, P., & Aizawa, K. (2017, November). cGAN-based Manga Colorization Using a Single Training Image. In 2017 14th IAPR International Conference on Document Analysis and Recognition (ICDAR) (Vol. 3, pp.
72-77). IEEE.
[4] Cinarel, C., & Zhang, B. T. (2017, November). Into the Colorful World of Webtoons: Through the Lens of Neural Networks. In 2017 14th IAPR International Conference on Document Analysis and Recognition (ICDAR) (Vol. 3, pp. 35-40). IEEE.
[5] 재이다 . (2018). Automatic Colorization of Webtoons Using Deep Convolutional Neural Networks (Doctoral dissertation, 서울대학교 대학원 ).
[6] 홍준표 , 김형호 , 김동이 , & 황원준 . (2018). GAN 과 Edge Detector 를 사용한 Webtoon 자동 채색 기법 . 한국정 보과학회 학술발표논문집 , 2166-2168.
39
Reference
[7] Ci, Y., Ma, X., Wang, Z., Li, H., & Luo, Z. (2018, October). User-Guided Deep Anime Line Art Colorization with Conditional Adversarial Networks. In 2018 ACM Multimedia Conference on Multimedia Conference (pp. 1536- 1544). ACM.
[8] Ronneberger, O., Fischer, P., & Brox, T. (2015, October). U-net: Convolutional networks for biomedical image segmentation. In International Conference on Medical image computing and computer-assisted intervention (pp. 234-241). Springer, Cham.
[9] Radford, A., Metz, L., & Chintala, S. (2015). Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv:1511.06434.
[10] Isola, P., Zhu, J. Y., Zhou, T., & Efros, A. A. (2017). Image-to-image translation with conditional adversarial networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1125-1134).
[11] Zhu, J. Y., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired image-to-image translation using cycle-
consistent adversarial networks. In Proceedings of the IEEE International Conference on Computer Vision (pp.
2223-2232).