SlideShare a Scribd company logo
@Eiji-Kb
Chainerを使って
白黒アニメの彩色実験をしてみた
色物企画
2
Eiji-K (Eiji-Kb)
 2013 ゼネコン勤務
 2013〜15 大学院(修士)
動画認識(スポーツ)の研究
 現在 ディープラーニング勉強中
自己紹介
3
 Deep Colorization Zezhou Cheng Qingxiong Yang Bin Sheng
http://www.cs.cityu.edu.hk/~qiyang/publications/iccv-15.pdf
 Automatic Colorization Ryan Dahl
http://tinyclouds.org/colorize/
 Colorful Image Colorization Richard Zhang Phillip Isola Alexei A. Efros
http://richzhang.github.io/colorization/
 ディープネットワークを用いた大域特徴と局所特徴の学習による白黒写真の
自動色付け 飯塚里志 シモセラ エドガー 石川博
http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/
 Learning Representations for Automatic Colorization Gustav LarssonMichael
MaireGregory Shakhnarovich
http://people.cs.uchicago.edu/~larsson/colorization/
ディープラーニングによる自動彩色
4
colornet
 作者 Pavel Gonchar
 Automatic Colorizationがベース(損失関数は違う)
 Tensorflowでの実装
 ネットワークや学習部分のソースも公開
 https://github.com/pavelgonchar/colornet
? これで白黒アニメの彩色はできるだろうか
5
 原作:横山光輝 アニメ:東映アニメーション
 最初の魔法少女アニメ 記念碑的作品
 17話まで白黒、18話からカラーで製作
 オープニングは白黒版とカラー版が存在
試したアニメ 魔法使いサリー(1966〜1968)
光プロ・東映アニメーション, 魔法使いサリー,http://www.toei-anim.co.jp/lineup/tv/sally/
6
色が付きました
実験結果 Colornetで学習、テスト
自分でも色々試してみたくなった
いじくりやすいソースが欲しい →Chainerへ移植
7
Automatic Colorization
図:Ryan Dahl, Automatic Colorization
http://tinyclouds.org/colorize/
写真: Wikipedia, YUV
https://ja.wikipedia.org/wiki/YUV
(学習)
空
間
情
報
意
味
的
情
報
Y
U
V
8
Automatic Colorization
図:Ryan Dahl, Automatic Colorization
http://tinyclouds.org/colorize/
写真: Wikipedia, YUV
https://ja.wikipedia.org/wiki/YUV
(テスト)
空
間
情
報
意
味
的
情
報
9
Chainerで記述
class COLORNet(chainer.Chain):
"""
COLORNet
"""
def __init__(self):
super(COLORNet, self).__init__(
conv4_1=L.Convolution2D(512, 256, 1, stride=1, pad=0),
bn1 = L.BatchNormalization(512),
deconv4_1 = L.Deconvolution2D(256, 256, 2, stride=2, pad=0),
bn2 = L.BatchNormalization(256),
conv4_2=L.Convolution2D(256, 128, 3, stride=1, pad=1),
bn3 = L.BatchNormalization(128),
deconv3_1 = L.Deconvolution2D(128, 128, 2, stride=2, pad=0),
bn4 = L.BatchNormalization(128),
conv3_1=L.Convolution2D(128, 64, 3, stride=1, pad=1),
bn5 = L.BatchNormalization(64),
deconv2_1 = L.Deconvolution2D(64, 64, 2, stride=2, pad=0),
bn6 = L.BatchNormalization(64),
conv2_1=L.Convolution2D(64, 3, 3, stride=1, pad=1),
bn7 = L.BatchNormalization(3),
bn8 = L.BatchNormalization(3),
conv1_1=L.Convolution2D(3, 3, 3, stride=1, pad=1),
bn9 = L.BatchNormalization(3),
conv0_5=L.Convolution2D(3, 2, 3, stride=1, pad=1),
def __call__(self, t, sw):
h1 = F.relu(self.conv4_1(self.bn1(vgg.h4)))
h2 = self.deconv4_1(h1)
h3 = self.bn2(vgg.h3)
h4 = h2 + h3
h4 = self.conv4_2(h4)
h4 = F.relu(self.bn3(h4))
h4 = self.deconv3_1(h4)
h5 = self.bn4(vgg.h2)
h5 = h4 + h5
h5 = self.conv3_1(h5)
h5 = F.relu(self.bn5(h5))
h5 = self.deconv2_1(h5)
h6 = self.bn6(vgg.h1)
h6 = h5 + h6
h6 = self.conv2_1(h6)
h6 = F.relu(self.bn7(h6))
h7 = self.bn8(vgg.x)
h8 = h6 + h7
h8 = self.conv1_1(h8)
h8 = F.relu(self.bn9(h8))
h8 = self.conv0_5(h8)
zx81 = F.split_axis(h8,1,0)
zx82 = F.split_axis(zx81,2,1)
if sw == 1:
t1 = F.reshape(t,(1, 224*224))
x = F.reshape(zx82[0],(1, 224*224))
self.loss = F.mean_squared_error(x, t1)
return self.loss
(ネットワーク)
・・・
10
Chainerで記述if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("inputMovie", type=file)
parser.add_argument("outputMovie")
parser.add_argument('--parm', default=0.0001, type=float)
parser.add_argument("--mon", const=1, nargs="?")
parser.add_argument('--loop', default=1, type=int)
parser.add_argument('-gpu', default=0, type=int)
parser.add_argument("--load", const=1, nargs="?")
parser.add_argument("--test", const=1, nargs="?")
parser.add_argument('--savec', default=5000, type=int)
parser.add_argument('--log', default=100, type=int)
parser.add_argument("--fast", const=1, nargs="?")
args = parser.parse_args()
inputMovie = args.inputMovie.name
outputMovie = args.outputMovie
cap = cv2.VideoCapture(inputMovie)
heightInputMovie = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
widthInputMovie = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
FPS = cap.get(cv2.CAP_PROP_FPS)
allFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fourcc = "XVID"
out = cv2.VideoWriter(outputMovie, cv2.VideoWriter_fourcc(*fourcc), FPS,
(widthInputMovie,heightInputMovie))
vgg_mean = np.array([123.68, 116.779, 103.939 ])
vgg = VGGNet()
colornet = COLORNet()
optimizer = optimizers.SGD(args.parm)
optimizer.setup(colornet)
while vplaycnt <= args.loop:
for frameNo in range(1, allFrames+1):
ret, frame = cap.read()
if ret == True:
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB).astype(np
frame_rgb_f = (frame_rgb / 255)
frame_rgb -= vgg_mean
frame_gray = cv2.cvtColor(frame_rgb, cv2.COLOR_RGB2GRAY)
frame_gray_vgg = cv2.resize(frame_gray, (224, 224))
inputd = np.zeros((1, 3, 224, 224), dtype=np.float32)
inputd[0,0,:,:] = frame_gray_vgg
inputd[0,1,:,:] = frame_gray_vgg
inputd[0,2,:,:] = frame_gray_vgg
inputd = xp.asarray(inputd, dtype=np.float32)
pred = vgg(Variable(inputd), None)
frame_lab = cv2.cvtColor(frame_rgb_f, cv2.COLOR_RGB2Lab)
frame_lab_l = frame_lab[:,:,0]
frame_lab_vgg = cv2.resize(frame_lab, (224, 224))
labd = xp.asarray(frame_lab_vgg, dtype=np.float32)
if not args.test :
sw = 1
colornet.zerograds()
loss1 = colornet(Variable(labd[:,:,1]),sw) #EK
loss1.backward()
optimizer.update()
(学習
ループ)
・・・ ・・・
11
VGGネット Shunta Saito( mitmul )氏
colornetとの違い
Lab色空間
最終層出力(sigmoidなし)
その他
動画ファイルを直接読み込み(OpenCV)
Chainerへの移植
Chainer版で学習
12
https://youtu.be/pM_5hXjZmkQ
Chainer版でテスト
13
https://youtu.be/cb7nBtKaQDs
14
学習データの量・与え方・偏り…
アニメ 色設計の違い
色の乗りがいまいち
白黒
カラー
→グレー
スケール
参考
15
https://youtu.be/9vB9KdGksS0
16
まとめ
いじりやすい自動彩色のコードが書けた(318
行)
ソースはGitHubに上げる予定です
トイプログラムですが、こういうのが好きな人に
試していただけるとうれしい
ご清聴ありがとうございました

More Related Content

Viewers also liked

Chainerを使って細胞を数えてみた
Chainerを使って細胞を数えてみたChainerを使って細胞を数えてみた
Chainerを使って細胞を数えてみた
samacoba1983
 
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
Yahoo!デベロッパーネットワーク
 
Chainer Update v1.8.0 -> v1.10.0+
Chainer Update v1.8.0 -> v1.10.0+Chainer Update v1.8.0 -> v1.10.0+
Chainer Update v1.8.0 -> v1.10.0+
Seiya Tokui
 
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
Yusuke HIDESHIMA
 
On the benchmark of Chainer
On the benchmark of ChainerOn the benchmark of Chainer
On the benchmark of Chainer
Kenta Oono
 
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
Yuta Kashino
 
マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例
nlab_utokyo
 
Chainer, Cupy入門
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門
Yuya Unno
 
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA Japan
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能
Yuya Unno
 
ごちうサーチ
ごちうサーチごちうサーチ
ごちうサーチ
Kazuhiro Sasao
 
Acidification Limnology Lit Review
Acidification Limnology Lit ReviewAcidification Limnology Lit Review
Acidification Limnology Lit Review
Jorge Gomez
 
Completa revista pagina web 2016
Completa revista  pagina web  2016Completa revista  pagina web  2016
Completa revista pagina web 2016
alcorcon28924
 
Butler APC Brochure
Butler APC BrochureButler APC Brochure
Butler APC Brochure
Lauren Steinbach Pharm.D, MBA
 
Carlos Garabito Visual Resume Rev_02
Carlos Garabito Visual Resume Rev_02Carlos Garabito Visual Resume Rev_02
Carlos Garabito Visual Resume Rev_02
Carlos Garabito
 
Motivos, Actitudes y estrategias de aprendizaje
Motivos, Actitudes y estrategias de aprendizajeMotivos, Actitudes y estrategias de aprendizaje
Motivos, Actitudes y estrategias de aprendizaje
Andres Olaya
 
Credit Seminar
Credit SeminarCredit Seminar
Credit Seminar
JAIPRAKASH BISEN
 
FUJIFILM Europe: Corporate Profile 2016
FUJIFILM Europe: Corporate Profile 2016FUJIFILM Europe: Corporate Profile 2016
FUJIFILM Europe: Corporate Profile 2016
Petra C. Fujiwara
 
7 tips to manage stress and build resilience
7 tips to manage stress and build resilience7 tips to manage stress and build resilience
7 tips to manage stress and build resilience
Gadens
 
Problemas ortográficos del español actual
Problemas ortográficos del español actualProblemas ortográficos del español actual
Problemas ortográficos del español actual
Andres Olaya
 

Viewers also liked (20)

Chainerを使って細胞を数えてみた
Chainerを使って細胞を数えてみたChainerを使って細胞を数えてみた
Chainerを使って細胞を数えてみた
 
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
 
Chainer Update v1.8.0 -> v1.10.0+
Chainer Update v1.8.0 -> v1.10.0+Chainer Update v1.8.0 -> v1.10.0+
Chainer Update v1.8.0 -> v1.10.0+
 
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
 
On the benchmark of Chainer
On the benchmark of ChainerOn the benchmark of Chainer
On the benchmark of Chainer
 
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
 
マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例
 
Chainer, Cupy入門
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門
 
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能
 
ごちうサーチ
ごちうサーチごちうサーチ
ごちうサーチ
 
Acidification Limnology Lit Review
Acidification Limnology Lit ReviewAcidification Limnology Lit Review
Acidification Limnology Lit Review
 
Completa revista pagina web 2016
Completa revista  pagina web  2016Completa revista  pagina web  2016
Completa revista pagina web 2016
 
Butler APC Brochure
Butler APC BrochureButler APC Brochure
Butler APC Brochure
 
Carlos Garabito Visual Resume Rev_02
Carlos Garabito Visual Resume Rev_02Carlos Garabito Visual Resume Rev_02
Carlos Garabito Visual Resume Rev_02
 
Motivos, Actitudes y estrategias de aprendizaje
Motivos, Actitudes y estrategias de aprendizajeMotivos, Actitudes y estrategias de aprendizaje
Motivos, Actitudes y estrategias de aprendizaje
 
Credit Seminar
Credit SeminarCredit Seminar
Credit Seminar
 
FUJIFILM Europe: Corporate Profile 2016
FUJIFILM Europe: Corporate Profile 2016FUJIFILM Europe: Corporate Profile 2016
FUJIFILM Europe: Corporate Profile 2016
 
7 tips to manage stress and build resilience
7 tips to manage stress and build resilience7 tips to manage stress and build resilience
7 tips to manage stress and build resilience
 
Problemas ortográficos del español actual
Problemas ortográficos del español actualProblemas ortográficos del español actual
Problemas ortográficos del español actual
 

Similar to Chainerを使って白黒アニメの彩色実験をしてみた

EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
Kiwamu Okabe
 
Simulation_assignment2
Simulation_assignment2Simulation_assignment2
Simulation_assignment2
T2C_
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Fixstars Corporation
 
Coqチュートリアル
CoqチュートリアルCoqチュートリアル
Coqチュートリアル
Yoshihiro Mizoguchi
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けて
onotchi_
 

Similar to Chainerを使って白黒アニメの彩色実験をしてみた (6)

EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
 
Simulation_assignment2
Simulation_assignment2Simulation_assignment2
Simulation_assignment2
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
Coqチュートリアル
CoqチュートリアルCoqチュートリアル
Coqチュートリアル
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けて
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 

Recently uploaded (8)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 

Chainerを使って白黒アニメの彩色実験をしてみた

  • 2. 2 Eiji-K (Eiji-Kb)  2013 ゼネコン勤務  2013〜15 大学院(修士) 動画認識(スポーツ)の研究  現在 ディープラーニング勉強中 自己紹介
  • 3. 3  Deep Colorization Zezhou Cheng Qingxiong Yang Bin Sheng http://www.cs.cityu.edu.hk/~qiyang/publications/iccv-15.pdf  Automatic Colorization Ryan Dahl http://tinyclouds.org/colorize/  Colorful Image Colorization Richard Zhang Phillip Isola Alexei A. Efros http://richzhang.github.io/colorization/  ディープネットワークを用いた大域特徴と局所特徴の学習による白黒写真の 自動色付け 飯塚里志 シモセラ エドガー 石川博 http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/  Learning Representations for Automatic Colorization Gustav LarssonMichael MaireGregory Shakhnarovich http://people.cs.uchicago.edu/~larsson/colorization/ ディープラーニングによる自動彩色
  • 4. 4 colornet  作者 Pavel Gonchar  Automatic Colorizationがベース(損失関数は違う)  Tensorflowでの実装  ネットワークや学習部分のソースも公開  https://github.com/pavelgonchar/colornet ? これで白黒アニメの彩色はできるだろうか
  • 5. 5  原作:横山光輝 アニメ:東映アニメーション  最初の魔法少女アニメ 記念碑的作品  17話まで白黒、18話からカラーで製作  オープニングは白黒版とカラー版が存在 試したアニメ 魔法使いサリー(1966〜1968) 光プロ・東映アニメーション, 魔法使いサリー,http://www.toei-anim.co.jp/lineup/tv/sally/
  • 7. 7 Automatic Colorization 図:Ryan Dahl, Automatic Colorization http://tinyclouds.org/colorize/ 写真: Wikipedia, YUV https://ja.wikipedia.org/wiki/YUV (学習) 空 間 情 報 意 味 的 情 報 Y U V
  • 8. 8 Automatic Colorization 図:Ryan Dahl, Automatic Colorization http://tinyclouds.org/colorize/ 写真: Wikipedia, YUV https://ja.wikipedia.org/wiki/YUV (テスト) 空 間 情 報 意 味 的 情 報
  • 9. 9 Chainerで記述 class COLORNet(chainer.Chain): """ COLORNet """ def __init__(self): super(COLORNet, self).__init__( conv4_1=L.Convolution2D(512, 256, 1, stride=1, pad=0), bn1 = L.BatchNormalization(512), deconv4_1 = L.Deconvolution2D(256, 256, 2, stride=2, pad=0), bn2 = L.BatchNormalization(256), conv4_2=L.Convolution2D(256, 128, 3, stride=1, pad=1), bn3 = L.BatchNormalization(128), deconv3_1 = L.Deconvolution2D(128, 128, 2, stride=2, pad=0), bn4 = L.BatchNormalization(128), conv3_1=L.Convolution2D(128, 64, 3, stride=1, pad=1), bn5 = L.BatchNormalization(64), deconv2_1 = L.Deconvolution2D(64, 64, 2, stride=2, pad=0), bn6 = L.BatchNormalization(64), conv2_1=L.Convolution2D(64, 3, 3, stride=1, pad=1), bn7 = L.BatchNormalization(3), bn8 = L.BatchNormalization(3), conv1_1=L.Convolution2D(3, 3, 3, stride=1, pad=1), bn9 = L.BatchNormalization(3), conv0_5=L.Convolution2D(3, 2, 3, stride=1, pad=1), def __call__(self, t, sw): h1 = F.relu(self.conv4_1(self.bn1(vgg.h4))) h2 = self.deconv4_1(h1) h3 = self.bn2(vgg.h3) h4 = h2 + h3 h4 = self.conv4_2(h4) h4 = F.relu(self.bn3(h4)) h4 = self.deconv3_1(h4) h5 = self.bn4(vgg.h2) h5 = h4 + h5 h5 = self.conv3_1(h5) h5 = F.relu(self.bn5(h5)) h5 = self.deconv2_1(h5) h6 = self.bn6(vgg.h1) h6 = h5 + h6 h6 = self.conv2_1(h6) h6 = F.relu(self.bn7(h6)) h7 = self.bn8(vgg.x) h8 = h6 + h7 h8 = self.conv1_1(h8) h8 = F.relu(self.bn9(h8)) h8 = self.conv0_5(h8) zx81 = F.split_axis(h8,1,0) zx82 = F.split_axis(zx81,2,1) if sw == 1: t1 = F.reshape(t,(1, 224*224)) x = F.reshape(zx82[0],(1, 224*224)) self.loss = F.mean_squared_error(x, t1) return self.loss (ネットワーク) ・・・
  • 10. 10 Chainerで記述if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("inputMovie", type=file) parser.add_argument("outputMovie") parser.add_argument('--parm', default=0.0001, type=float) parser.add_argument("--mon", const=1, nargs="?") parser.add_argument('--loop', default=1, type=int) parser.add_argument('-gpu', default=0, type=int) parser.add_argument("--load", const=1, nargs="?") parser.add_argument("--test", const=1, nargs="?") parser.add_argument('--savec', default=5000, type=int) parser.add_argument('--log', default=100, type=int) parser.add_argument("--fast", const=1, nargs="?") args = parser.parse_args() inputMovie = args.inputMovie.name outputMovie = args.outputMovie cap = cv2.VideoCapture(inputMovie) heightInputMovie = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) widthInputMovie = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) FPS = cap.get(cv2.CAP_PROP_FPS) allFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) fourcc = "XVID" out = cv2.VideoWriter(outputMovie, cv2.VideoWriter_fourcc(*fourcc), FPS, (widthInputMovie,heightInputMovie)) vgg_mean = np.array([123.68, 116.779, 103.939 ]) vgg = VGGNet() colornet = COLORNet() optimizer = optimizers.SGD(args.parm) optimizer.setup(colornet) while vplaycnt <= args.loop: for frameNo in range(1, allFrames+1): ret, frame = cap.read() if ret == True: frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB).astype(np frame_rgb_f = (frame_rgb / 255) frame_rgb -= vgg_mean frame_gray = cv2.cvtColor(frame_rgb, cv2.COLOR_RGB2GRAY) frame_gray_vgg = cv2.resize(frame_gray, (224, 224)) inputd = np.zeros((1, 3, 224, 224), dtype=np.float32) inputd[0,0,:,:] = frame_gray_vgg inputd[0,1,:,:] = frame_gray_vgg inputd[0,2,:,:] = frame_gray_vgg inputd = xp.asarray(inputd, dtype=np.float32) pred = vgg(Variable(inputd), None) frame_lab = cv2.cvtColor(frame_rgb_f, cv2.COLOR_RGB2Lab) frame_lab_l = frame_lab[:,:,0] frame_lab_vgg = cv2.resize(frame_lab, (224, 224)) labd = xp.asarray(frame_lab_vgg, dtype=np.float32) if not args.test : sw = 1 colornet.zerograds() loss1 = colornet(Variable(labd[:,:,1]),sw) #EK loss1.backward() optimizer.update() (学習 ループ) ・・・ ・・・
  • 11. 11 VGGネット Shunta Saito( mitmul )氏 colornetとの違い Lab色空間 最終層出力(sigmoidなし) その他 動画ファイルを直接読み込み(OpenCV) Chainerへの移植