Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SeRanet
ディープラーニングを用いた超解像ソフト
https://github.com/corochann/SeRanet
目次
導入
機械学習とは
ディープラーニングとは
SRCNN
問題設定
既存研究・ソフトの紹介
“Image Super-Resolution Using Deep Convolutional Networks”
waifu2x
SeRanet...
目次
導入
機械学習とは
ディープラーニングとは
機械学習とは
有名なものは大きくわけて3種類
・教師あり学習
訓練時には大量の入力データに対し、”正解”となる出力データも与えられる。
機械学習の目的は与えられた入力データから正解を出力するように訓練すること。
例:画像認識(入力:画像データ、...
機械学習とは
有名なものは大きくわけて3種類
・教師あり学習
訓練時には大量の入力データに対し、”正解”となる出力データも与えられる。
機械学習の目的は与えられた入力データから正解を出力するように訓練すること。
例:画像認識(入力:画像データ、...
ディープラーニングとは
日本語では深層学習
生物の神経回路を模した、多層のニューラルネットワーク(→以下NN)を用いて行われる機械学習。
入力 出力
“情報が第1層からより深くへ伝達されるうちに、各層で学習が繰り返される。この過程で、これまでは...
目次
SRCNN
問題設定
既存研究・ソフトの紹介
“Image Super-Resolution Using Deep Convolutional Networks”
waifu2x
機械学習を用いた超解像タスク
訓練時のタスク設定
・サイズを半分に圧縮した画像がインプットとして与えられる。
オリジナルの画像を復元してアウトプットせよ
この写像を構成したい。
機械学習の目標は、この写像としてより最適に近いものを構成(学習)す...
機械学習を用いた超解像タスク
機械学習後
・任意の画像をインプット → 超解像された2倍のサイズの画像をアウトプット
与えられたインプット画像に2倍のサイズのオリジナル画像があったかのように
その(存在しない)予測画像を”復元”して出力する。
...
写像の構成方法
画像認識などでも用いられる、深層畳み込みニューラルネットワークを用いる。
Deep Convolutional Neural Network (→以下CNN)
先行研究①
“Image Super-Resolution Using Deep Convolutional Networks”
Chao Dong, Chen Change Loy, Kaiming He and Xiaoou Tang
ht...
手法の概要
1.画像ファイルを読み込む
2.事前処理として先に画像を2倍に拡大しておく (n倍も可)
3.RGBフォーマットをYCbCrへ変換し、Y Channelのみを取り出す。
4.正規化:0-255の値を0-1へ。
5.ニューラルネットワ...
従来手法の特徴①
・Y Channelのみを入出力としてトレーニング
人間の視覚特性として、輝度(Luminance)には色差よりも敏感だという特徴があるので、RGB
Channelではなく、YCbCrフォーマットのY 成分のみを入出力と扱うこ...
従来手法の特徴①
・Y Channelのみを入出力としてトレーニング
人間の視覚特性として、輝度(Luminance)には色差よりも敏感だという特徴があるので、RGB
Channelではなく、YCbCrフォーマットのY 成分のみを入出力と扱うこ...
従来手法の特徴②
・入力にあらかじめ拡大された画像を用いる。
SRCNNの論文ではBicubic法、waifu2x(後述)ではNearest neighbor法で拡大した画像を
CNNに入力している。
[理由]
ニューラルネットワークの畳み込み...
先行研究① CNNモデル
CNNの構成 Layer1 Layer2 Layer3
In channel 1 32 64
Out channel 32 64 1
Kernel size 9 5 5
パラメータ数 2628 51264 1664
畳...
先行ソフト② waifu2x
waifu2x
https://github.com/nagadomi/waifu2x
ちなみにwaifuは俺の嫁(wife)のローマ字綴りから来ているよう
https://github.com/nagadomi/...
先行ソフト② waifu2x
論文という形から、実際にアプリケーションとしてオープンソースで公開されたことにより、
一般のソフトウェアエンジニアにもソフト開発できるように。
現在多くの派生ソフトが開発されています。
[関連リンク]
・waifu...
先行ソフト② waifu2xのCNNモデル
畳み込みのKernel sizeを3と小さくとる分、深いニューラルネットを構成している。
waifu2xのCNN
CNNの構成 Layer1 Layer2 Layer3 Layer4 Layer5 L...
SRCNNタスクの特徴
画像認識タスクと比べた場合の違い
1.位置依存性が望まれる。
→画像認識ではTranslation invariantな性質が好まれるが、
超解像では各ピクセルでの値を出力したいためにTranslation varian...
目次
ここからようやく本プロジェクトの話。
既存研究・ソフトに対してより良い結果が得られないか工夫してみた点を紹介します。
SeRanet
工夫1 Sprice
工夫2 Fusion
SeRanetのCNNモデル
SeRanet 工夫1 Splice
CNNにもともとのサイズ w × hの画像を入力して、2w × 2hのサイズの画像を出力として得たい
→ネットワークのSplitとSpliceという概念を導入する。
入力はw × h
Split
Splic...
SeRanet 工夫1 Splice
4つにSplitされたニューラルネットワークはそれぞれ、拡大後の画像の左上(LU)、右上(RU) 、左下
(LD)、右下(RD)のピクセルに対応
Split Splice
入力画像 出力画像
(1, 1) ...
Splice導入による効果
→ ニューラルネットワーク設計の柔軟性が増す
入力はw × h
Split Splice
出力は2w × 2h
第3Phase第2Phase第1Phase
第1Phase:画像サイズがwxh と拡大される前なので、後...
目次
SeRanet
工夫1 Sprice
工夫2 Fusion
SeRanetのCNNモデル
Fusionとは
Colorizationの論文にて紹介されていた手法。まずは論文について紹介を。
・“Let there be Color!: Joint End-to-end Learning of Global and Local Ima...
Colorizationで使用されたニューラルネットワーク
上部がもともとのColorizationで使用されるCNN。
下部のNNは画像分類をするために訓練されたニューラルネットワーク。
下部のNNは”この画像が屋外で撮られたものである”など...
SeRanet 工夫2 Fusion
SeRanetでは画像認識など、他の教師あり学習は行っていないが、二つの種類のCNNをFusionさせている。
狙い:異なる非線形Activationを用いることによるモデルの表現力の向上。
※初めはCon...
SeRanetのCNN ネットワーク
seranet_v1のCNN
Split Splice
第3Phase第2Phase第1Phase
CNNの構成 Layer1 Layer2 Layer3
In channel 3 64 64
Out ch...
各モデルの比較
パラメータ数はwaifu2xの10倍以上
総畳み込み量(≒計算量)は4倍程度
計算量に対して、パラメータ数の増加量が多くなっているのは、Split・Spliceを導入した効果により位置
依存性のあるパラメータがあるため。
(パラ...
目次
結果
パフォーマンス 各画像拡大手法の比較
・ Bicubic法
・ Lanczos法
・ waifu2x
・ SeRanet
従来の画像拡大手法
CNNを用いた画像拡大
スライドを行ったり来たりさせて比較してみてください。
Slides...
結果
入力画像
結果
Bicubic法 (OpenCVのresize関数を使用)
結果
Lanczos法 (OpenCVのresize関数を使用)
結果
waifu2x (http://waifu2x.udp.jp/ にて、スタイル:写真、ノイズ除去無し、拡大x2を選択)
結果
SeRanet
結果
オリジナル画像 (参考)
結果
オリジナル画像 (参考)
違いはわかりましたか?
1番目のようなとても細かい写真や、4番目の写真の茎の細い線の部分などの高周波成分で差が見れるかと思います。
結果
パフォーマンス 各画像拡大手法の比較
個人の見た目感覚では、、、
・ Bicubic法
・ Lanczos法
・ waifu2x
・ SeRanet
・ オリジナル画像
といった結果となりました。
(数値的な計測比較はまだできていません)...
まとめ
SeRanetで取り入れた工夫・従来手法との違い
・ 大規模なCNNを使用(深さ9層、総パラメータ数3303680 )
・Y の1 Channel ではなく、RGB 3 Channel全てを用いたネットワーク構成・訓練
・Split, ...
さいごに
本プロジェクトはオープンソースプロジェクトです、ソースコードはgithubにて公開
しています。
改善案・Discussion大歓迎。
実装のより細かい話はブログにて説明する予定です。
http://corochann.com/
参考...
Upcoming SlideShare
Loading in …5
×

SeRanet

1,288 views

Published on

Convolutional Neural Networkによるディープラーニングを用いた超解像ソフトSeRanetの紹介

Published in: Software
  • Be the first to comment

SeRanet

  1. 1. SeRanet ディープラーニングを用いた超解像ソフト https://github.com/corochann/SeRanet
  2. 2. 目次 導入 機械学習とは ディープラーニングとは SRCNN 問題設定 既存研究・ソフトの紹介 “Image Super-Resolution Using Deep Convolutional Networks” waifu2x SeRanet Sprice Fusion 結果 パフォーマンス おわりに
  3. 3. 目次 導入 機械学習とは ディープラーニングとは
  4. 4. 機械学習とは 有名なものは大きくわけて3種類 ・教師あり学習 訓練時には大量の入力データに対し、”正解”となる出力データも与えられる。 機械学習の目的は与えられた入力データから正解を出力するように訓練すること。 例:画像認識(入力:画像データ、出力:認識結果(人・猫・車など、、)) 音声認識(入力:音声データ、出力:音声をテキストに変換したもの) ・教師無し学習 大量の入力データのみが与えられる。 機械学習の目的はデータに存在する、データ分布の偏りを抽出してカテゴライズすること。 例:癌のタイプ分類 リコメンデーションで趣味が似ているユーザー同士を自動で結びつける ・強化学習 エージェントは毎回可能なアクションが与えられ、選んだアクションによって環境との相互作用をおこしな がら報酬を得る。というモデルのもとで、得られる報酬を最大化する問題。 例:DeepmindのDQNが有名。 バックギャモン・囲碁などのゲーム 機械の動作方法を自動獲得
  5. 5. 機械学習とは 有名なものは大きくわけて3種類 ・教師あり学習 訓練時には大量の入力データに対し、”正解”となる出力データも与えられる。 機械学習の目的は与えられた入力データから正解を出力するように訓練すること。 例:画像認識(入力:画像データ、出力:認識結果(人・猫・車など、、)) 音声認識(入力:音声データ、出力:音声をテキストに変換したもの) ・教師無し学習 大量の入力データのみが与えられる。 機械学習の目的はデータに存在する、データ分布の偏りを抽出してカテゴライズすること。 例:癌のタイプ分類 リコメンデーションで趣味が似ているユーザー同士を自動で結びつける ・強化学習 エージェントは毎回可能なアクションが与えられ、選んだアクションによって環境との相互作用をおこしな がら報酬を得る。というモデルのもとで、得られる報酬を最大化する問題。 例:DeepmingのDQNが有名。 バックギャモン・囲碁などのゲーム 機械の動作方法を自動獲得 今回扱うのはこれ
  6. 6. ディープラーニングとは 日本語では深層学習 生物の神経回路を模した、多層のニューラルネットワーク(→以下NN)を用いて行われる機械学習。 入力 出力 “情報が第1層からより深くへ伝達されるうちに、各層で学習が繰り返される。この過程で、これまでは画像 や音声などそれぞれのデータの研究者、技術者が手動で設定していた特徴量が自動で計算される。” Wikipedia より
  7. 7. 目次 SRCNN 問題設定 既存研究・ソフトの紹介 “Image Super-Resolution Using Deep Convolutional Networks” waifu2x
  8. 8. 機械学習を用いた超解像タスク 訓練時のタスク設定 ・サイズを半分に圧縮した画像がインプットとして与えられる。 オリジナルの画像を復元してアウトプットせよ この写像を構成したい。 機械学習の目標は、この写像としてより最適に近いものを構成(学習)すること。 機械学習後にこのような写像が得られると、、、 オリジナル画像圧縮画像
  9. 9. 機械学習を用いた超解像タスク 機械学習後 ・任意の画像をインプット → 超解像された2倍のサイズの画像をアウトプット 与えられたインプット画像に2倍のサイズのオリジナル画像があったかのように その(存在しない)予測画像を”復元”して出力する。 拡大された画像 高画質! 拡大したい画像 学習された写像
  10. 10. 写像の構成方法 画像認識などでも用いられる、深層畳み込みニューラルネットワークを用いる。 Deep Convolutional Neural Network (→以下CNN)
  11. 11. 先行研究① “Image Super-Resolution Using Deep Convolutional Networks” Chao Dong, Chen Change Loy, Kaiming He and Xiaoou Tang https://arxiv.org/abs/1501.00092 “SRCNN” を提案した元論文。 Convolutional Neural Networkを用いることによって、 既存の超解像手法に勝る結果が得られたことを発表。 本スライドでは以下”SRCNNの論文”と表記します。 http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.htmlより
  12. 12. 手法の概要 1.画像ファイルを読み込む 2.事前処理として先に画像を2倍に拡大しておく (n倍も可) 3.RGBフォーマットをYCbCrへ変換し、Y Channelのみを取り出す。 4.正規化:0-255の値を0-1へ。 5.ニューラルネットワークに入力 出力としてY channelで正規化されたものが得られる 6.得られた出力を0-255の値に戻す。 7.Bicubic法などの方法で拡大された画像のCbCr Channelと合体させて最終画像を得る。 ※ 3.と7.はRGBすべてを入出力として訓練する場合はスキップ。
  13. 13. 従来手法の特徴① ・Y Channelのみを入出力としてトレーニング 人間の視覚特性として、輝度(Luminance)には色差よりも敏感だという特徴があるので、RGB Channelではなく、YCbCrフォーマットのY 成分のみを入出力と扱うことで、問題をより簡単に しようという工夫。 Y成分 Cr成分 Cb成分YCbCr成分に分解
  14. 14. 従来手法の特徴① ・Y Channelのみを入出力としてトレーニング 人間の視覚特性として、輝度(Luminance)には色差よりも敏感だという特徴があるので、RGB Channelではなく、YCbCrフォーマットのY 成分のみを入出力と扱うことで、問題をより簡単に しようという工夫。 Y成分 Cr成分 Cb成分YCbCr成分に分解 ・RGB Channelだとトレーニングが難しくなる。 SRCNNの論文内では、RGBの3 Channel で訓練した際のパフォーマンスも比較されていて、CNNの規模を大きくとった 場合以外にはY ChannelだけでCNNを構成した方がよかったという結果。 Y成分のみをCNNで扱う
  15. 15. 従来手法の特徴② ・入力にあらかじめ拡大された画像を用いる。 SRCNNの論文ではBicubic法、waifu2x(後述)ではNearest neighbor法で拡大した画像を CNNに入力している。 [理由] ニューラルネットワークの畳み込み層を機械学習ライブラリを使って実装する場合、入力と出力の画像サイズはほぼ 等しくなるため、あらかじめサイズ調整しておく必要がある。 (※厳密にはアウトプットの画像サイズはフィルターサイズ分だけ小さくなる) 入力 出力 CNN 画像を拡大 Y 成分のみ抽出 画像を拡大 Cr・Cb ChannelはCNN使用しない 合成
  16. 16. 先行研究① CNNモデル CNNの構成 Layer1 Layer2 Layer3 In channel 1 32 64 Out channel 32 64 1 Kernel size 9 5 5 パラメータ数 2628 51264 1664 畳み込み回数 2592×4WH 51200×4WH 1600×4WH 浅めの階層だが、畳み込みのKernel sizeを大きくとっている。 論文中のCNNの構成の一例 (論文内では他にもいろいろなパラメータでテストされている。) ※パラメータ数 = In channel * Out channel * (kernel size)^2 + Out channel で計算 ※畳み込み回数は1ピクセルあたり= In channel * Out channel * (kernel size) ^2 + Out channel で計算。 拡大前の画像サイズを w × h ピクセルとすると、2倍に拡大後は2w×2hになることから総計では4whピクセル分畳み込みを行っている。 総パラメータ数:55556 総畳み込み量:55392×4WH
  17. 17. 先行ソフト② waifu2x waifu2x https://github.com/nagadomi/waifu2x ちなみにwaifuは俺の嫁(wife)のローマ字綴りから来ているよう https://github.com/nagadomi/waifu2x より もともとはアニメ調の画像を拡大するソフトとして公開 現在は写真画像に対しても対応 サーバーが動いていて、実際に試せます。 http://waifu2x.udp.jp/
  18. 18. 先行ソフト② waifu2x 論文という形から、実際にアプリケーションとしてオープンソースで公開されたことにより、 一般のソフトウェアエンジニアにもソフト開発できるように。 現在多くの派生ソフトが開発されています。 [関連リンク] ・waifu2xとその派生ソフト一覧 http://kourindrug.sakura.ne.jp/waifu2x.html ・サルでも分かる waifu2x のアルゴリズム https://drive.google.com/file/d/0B22mWPiNr-6-RVVpaGhZa1hJTnM/view
  19. 19. 先行ソフト② waifu2xのCNNモデル 畳み込みのKernel sizeを3と小さくとる分、深いニューラルネットを構成している。 waifu2xのCNN CNNの構成 Layer1 Layer2 Layer3 Layer4 Layer5 Layer6 Layer7 In channel 1 32 32 64 64 128 128 Out channel 32 32 64 64 128 128 1 Kernel size 3 3 3 3 3 3 3 パラメータ数 320 9248 18496 36928 73856 147584 1153 畳み込み量 288×4WH 9216×4WH 18432×4WH 36864×4WH 73728×4WH 147456×4WH 1152×4WH 畳み込みのKernel sizeが小さい分、深いCNNを構成。 総パラメータ数:287585 総畳み込み量:287136×4WH
  20. 20. SRCNNタスクの特徴 画像認識タスクと比べた場合の違い 1.位置依存性が望まれる。 →画像認識ではTranslation invariantな性質が好まれるが、 超解像では各ピクセルでの値を出力したいためにTranslation variantな出力が求められる。 つまり、Max poolingやStrideなどの画像認識タスクで用いられる手法は歓迎されない。 2.ネットワークの後段にいっても画像サイズを小さくできない →Feature mapを増やすと計算量がとても大きくなってしまうため、 実行速度・メモリの両方に関してよりシビアな条件が求められる。 CNN計算時に必要なメモリ量≒CNNの図での直方体の体積といえます。 画像認識タスクでは一般的に後段にいくにしたがって画像サイズが小さくなってい くため、Feature mapの数が増えてもメモリサイズに問題がでずらいですが、SRCNNの場合 Feature mapが増やすと(1024など) 6GBほどのメモリがいっぱいになることはすぐ起きてしまう。
  21. 21. 目次 ここからようやく本プロジェクトの話。 既存研究・ソフトに対してより良い結果が得られないか工夫してみた点を紹介します。 SeRanet 工夫1 Sprice 工夫2 Fusion SeRanetのCNNモデル
  22. 22. SeRanet 工夫1 Splice CNNにもともとのサイズ w × hの画像を入力して、2w × 2hのサイズの画像を出力として得たい →ネットワークのSplitとSpliceという概念を導入する。 入力はw × h Split Splice: 4つのニューラルネットワークをひとつに合流させて 2w × 2hのサイズを得る。 Split: ニューラルネットワークを4つに分岐させる Splice 出力は2w × 2h LU RU LD RD
  23. 23. SeRanet 工夫1 Splice 4つにSplitされたニューラルネットワークはそれぞれ、拡大後の画像の左上(LU)、右上(RU) 、左下 (LD)、右下(RD)のピクセルに対応 Split Splice 入力画像 出力画像 (1, 1) (1, 2) (2, 1) (2, 2) (1, 1) (1, 2) (2, 1) (2, 2) (1, 1) (1, 2) (2, 1) (2, 2) (1, 1) (1, 2) (2, 1) (2, 2) (1, 1) (1, 2) (2, 1) (2, 2) (1, 1) (1, 2) (2, 1) (2, 2) (1, 1) (1, 1)(1, 1) (1, 2) (1, 2)(1, 2) (2, 1) (2, 1) (2, 1) (2, 2) (2, 2) (2, 2) Spliceの段階で4つのCNNからの出力結果を”つなぎ合わせ”(splice)して、2倍のサイズの画像にする。 LU RU LD RD
  24. 24. Splice導入による効果 → ニューラルネットワーク設計の柔軟性が増す 入力はw × h Split Splice 出力は2w × 2h 第3Phase第2Phase第1Phase 第1Phase:画像サイズがwxh と拡大される前なので、後段と比べて計算量が1/4と少ない。 →この段階で比較的大きなサイズのFeature map、Kernel sizeを使用できる。 第2Phase:画像サイズwxhの畳み込みを4つ行う。 計算量は第3Phaseと同じだが、LU, RU, LD, RDのそれぞれで異なるパラメータを学習できる。 →モデルの表現力の向上を狙う また、1つ1つの畳み込み計算の際の画像サイズはwxhのままなので、Feature mapの数が多くて もメモリOverflowしづらい 第3Phase:画像サイズ2wx2hの畳み込み。最終出力を得るためのPhase ここでは、Feature mapの数が多くなり過ぎると、簡単にメモリOverflowに達する& 一気に計算時間が長くなってしまうので注意が必要。
  25. 25. 目次 SeRanet 工夫1 Sprice 工夫2 Fusion SeRanetのCNNモデル
  26. 26. Fusionとは Colorizationの論文にて紹介されていた手法。まずは論文について紹介を。 ・“Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification” Satoshi Iizuka, Edgar Simo-Serra and Hiroshi Ishikawa http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/en/ この研究では、 白黒画像の入力から 色付き画像を出力として得るように、 CNNを教師あり学習させている。 https://github.com/satoshiiizuka/siggraph2016_colorization より 入力 出力
  27. 27. Colorizationで使用されたニューラルネットワーク 上部がもともとのColorizationで使用されるCNN。 下部のNNは画像分類をするために訓練されたニューラルネットワーク。 下部のNNは”この画像が屋外で撮られたものである”などのより画像全体にわたる(Globalな)特徴を学んでいると 推測される。 そういったGlobal FeatureをColorizationを行うCNNに組み込む=Fusionさせることによって、色付けの精度が上がっ たという結果。 Global featureの導入がうまく働いている例として以下のようなものが紹介されている、詳しくは論文で。 例:室内画像で画像上部を空の色に塗るような誤認識が減る。 海の部分を土の赤色で塗るような誤認識が減る。など。 http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/en/ より
  28. 28. SeRanet 工夫2 Fusion SeRanetでは画像認識など、他の教師あり学習は行っていないが、二つの種類のCNNをFusionさせている。 狙い:異なる非線形Activationを用いることによるモデルの表現力の向上。 ※初めはConvolutional Restricted Boltzmann MachineによるPre-trainingから得られたネットワークとの Fusionを行いたい、というアイデアから導入したが、いまのところConvolutional RBMの訓練が うまくいっていません。 上部ネットワークはLeaky ReLU関数をActivationとして利用。 下部ネットワークはSigmoid関数をActivationとして利用。
  29. 29. SeRanetのCNN ネットワーク seranet_v1のCNN Split Splice 第3Phase第2Phase第1Phase CNNの構成 Layer1 Layer2 Layer3 In channel 3 64 64 Out channel 64 64 128 Kernel size 5 5 5 パラメータ数 4864 102464 204928 畳み込み量 4800×WH 102400×WH 204800×WH Layer4 Layer5 Layer6 256 512 256 512 256 128 1 1 3 131584 131584 295040 131072×WH 131072×WH 294912×WH Layer7 Layer8 Layer9 Layer10 128 128 128 128 128 128 128 3 3 3 3 3 147584 147584 147584 3584 147456×4WH 147456×4WH 147456×4WH 3456×4WH Fusion 総パラメータ数:3303680 総畳み込み量:1159150×4WH ×2 ×4
  30. 30. 各モデルの比較 パラメータ数はwaifu2xの10倍以上 総畳み込み量(≒計算量)は4倍程度 計算量に対して、パラメータ数の増加量が多くなっているのは、Split・Spliceを導入した効果により位置 依存性のあるパラメータがあるため。 (パラメータ数を増やした方がモデルの表現力が広がり、よい結果が出ることを期待している。) →これだけパラメータ数、計算量が増えたのだからいい結果が期待できる、、、?? モデル SRCNN論文 waifu2x SeRanet_v1 パラメータ数 55556 287585 3303680 畳み込み回数 55392×4WH 287136×4WH 1159150×4WH
  31. 31. 目次 結果 パフォーマンス 各画像拡大手法の比較 ・ Bicubic法 ・ Lanczos法 ・ waifu2x ・ SeRanet 従来の画像拡大手法 CNNを用いた画像拡大 スライドを行ったり来たりさせて比較してみてください。 Slideshareだとわかりづらい場合はこちらで → https://github.com/corochann/SeRanet
  32. 32. 結果 入力画像
  33. 33. 結果 Bicubic法 (OpenCVのresize関数を使用)
  34. 34. 結果 Lanczos法 (OpenCVのresize関数を使用)
  35. 35. 結果 waifu2x (http://waifu2x.udp.jp/ にて、スタイル:写真、ノイズ除去無し、拡大x2を選択)
  36. 36. 結果 SeRanet
  37. 37. 結果 オリジナル画像 (参考)
  38. 38. 結果 オリジナル画像 (参考) 違いはわかりましたか? 1番目のようなとても細かい写真や、4番目の写真の茎の細い線の部分などの高周波成分で差が見れるかと思います。
  39. 39. 結果 パフォーマンス 各画像拡大手法の比較 個人の見た目感覚では、、、 ・ Bicubic法 ・ Lanczos法 ・ waifu2x ・ SeRanet ・ オリジナル画像 といった結果となりました。 (数値的な計測比較はまだできていません) 従来の画像拡大手法 CNNを用いた画像拡大 ほぼ同じ ほぼ同じ 差がある 差がある
  40. 40. まとめ SeRanetで取り入れた工夫・従来手法との違い ・ 大規模なCNNを使用(深さ9層、総パラメータ数3303680 ) ・Y の1 Channel ではなく、RGB 3 Channel全てを用いたネットワーク構成・訓練 ・Split, Splicingを導入 右上・左上・右下・左下それぞれ別パラメータを用いることによるモデル表現力の 向上を狙う ・Fusionの導入 異なる非線形Activationを組み合わせることでモデル表現力の向上 ・Convolutional RBMの導入、Pretraining。 位置依存したローカルな特徴量を教師無し学習で抽出する。 と、いろいろ試しては見たものの、パフォーマンスの大きな向上は見られていない、といった現状。 一方で、オリジナル画像とはまだ確かに差がある状態なので、まだ改善の余地はありそう。
  41. 41. さいごに 本プロジェクトはオープンソースプロジェクトです、ソースコードはgithubにて公開 しています。 改善案・Discussion大歓迎。 実装のより細かい話はブログにて説明する予定です。 http://corochann.com/ 参考文献や写真の引用などで不適切な点があれば削除など対応しますのでお知らせください。 個人で作った資料なので、間違って理解している点があるかもしれません。 間違いがあればご指摘ください。

×