SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
NINと画像分類
for 【第1回】人工知能ハッカソン in メディア工房
Tomomi Daigo
sat.Dec.17.2016
自己紹介
名前:大郷 友海
職業:プログラマ
話すこと
1. Chainerで画像分類を試みている
2. 正解率(accuracy)が上がらない
3. NIN(Network in Network)について
話すこと
1. Chainerで画像分類を試みている
2. 正解率(accuracy)が上がらない
3. NIN(Network in Network)について
1. Chainerで画像分類を試みている
動機
・ キノコを分類したい!
http://cdn-ak.f.st-hatena.com/images/fotolife/d/defender_21/20160114/20160114085535.jpg
データセット
・ 画像検索で集めたキノコ画像742枚
・ クラス数は7
・ 256*256(カラー)に揃える
プログラム
・ chainer v1.5.01
付属のexamplesより、imagenetをコピー
・ ブログ記事等を参考に動かす
・ threadingなどコードが難しいため、簡略化
・ モデルは3層CNN + 2層全結合層 を作成
試行錯誤の末・・・
1
 https://github.com/pfnet/chainer/releases?after=v1.6.2
結果
Validationの正解率(accuracy) = 56.25%
内訳・・・アルゴリズム
・ 学習用画像は540枚
・ (画像-平均画像) / 標準偏差 で正規化
・ 224*224(カラー)にランダム切り抜き
・ 16枚ずつミニバッチ学習
・ epoch=50
・ optimizerはAdam
・ WeightDecay=0.0005, GradientClipping=8.75
内訳・・・モデル
・ L.Convolution2D(3, 6, 7),
・ L.Convolution2D(6, 3, 5),
・ L.Convolution2D(3, 2, 3),
・ l1=F.Linear(1152,500),
・ l2=F.Linear(500,7),
< reluとmax_pooling_2d(ksize=3, stride=2)
< reluとaverage_pooling_2d(ksize=3, stride=2)
< reluとaverage_pooling_2d(ksize=3, stride=2)
< reluと F.dropout(ratio=0.3)
in, out, ksize
2. 正解率(accuracy)が上がらない
結果
Validationの正解率(accuracy) = 56.25%
・・・せっかくなのでもう少し上げたい。
データセット見直し
・ 画像検索で集めたキノコ画像742枚→ノイズ付加で水増し1
して13,356枚に!
・ クラス数は7
・ 256*256(カラー)に揃える →64, 32pxおよびモノクロも試す
1 
http://qiita.com/bohemian916/items/9630661cd5292240f8c7
アルゴリズム見直し
・ 学習用画像は540枚 →10,017枚
・ (画像-平均画像) / 標準偏差 で正規化
・ 224*224(カラー)にランダム切り抜き →192,128,64,32,28px等・・・
・ 16枚ずつミニバッチ学習 →20, 8枚(20枚以上は厳しい)
・ epoch=50 →200等(上げると過学習する)
・ optimizerはAdam
・ WeightDecay=0.0005, GradientClipping=8.75 →Clippingを1〜10まで変化
モデル見直し
・ L.Convolution2D(in_channels, out_channels, ksize)をひたすら調整
・ Convolution→BatchNormalization→relu→maxPooling とするとaccuracy改善
するらしいが、今回は観測できず。
・ Convolution層のチャネル数が入力から出力側へ向けて大きくなっていく構造を
よく見かけた。どういうことかというと・・・
1
 http://hirotaka-hachiya.hatenablog.com/entry/2016/08/06/175824
モデル見直し
・ L.Convolution2D(3, 6, 7),
・ L.Convolution2D(6, 3, 5),
・ L.Convolution2D(3, 2, 3),
・ l1=F.Linear(1152,500),
・ l2=F.Linear(500,7),
こうではなく
て、
・ L.Convolution2D(3, 6, 7),
・ L.Convolution2D(6, 9, 5),
・ L.Convolution2D(9,12, 3),
・ l1=F.Linear(1152,500),
・ l2=F.Linear(500,7),
こう。(値は適当)
ksizeはその逆パターン?(未確
認)
in, out, ksize
見直し結果
良さそうなものもあったが、全体的に過学習気味。
(train と validation の差が非常に大きい・・・)
見直し結果
・ 大きめのミスに気づく
 epoch毎に画像をランダムに並び替えるはずが、最初の1回しか並び替えていない
修正すると・・・
見直し結果
一気に未学習気味になった。epochを上げても改善せず。
(train も validation も正解率が小さい・・・)
(参考) 過学習 / 未学習
● 過学習に有効
○ 学習データを増やす
○ 変数を減らす
○ λ(正則化パラメータ)を大きくする
● 高バイアスに有効
○ 変数増やす
○ 多項式にする(モデルを複雑にする)
○ λ減らす
※2
※1 "Python Machine Learning" より引用 参考: http://chezou.hatenablog.com/entry/2016/05/29/215739
※2 http://lab.synergy-marketing.co.jp/blog/tech/machine-learning-stanford-3
※1
NIN
・ 未学習気味になったものと同じアルゴリズムで、chainer付属のninを移植して学習
させてみると・・・
NIN
正解率が63.9%に!
3. NIN(Network in Network)について
NIN(Network in Network)
・ Min Linら(2014)の提案したニューラルネットワークアーキテクチャ1
・ 従来のCNNの線形フィルタを多層パーセプトロン(MLP)に置き換える
・ CNNは層が進むほど広域をフィルタして高次の概念を生成するが、この提案は局
所的な画像が統合されて高次の概念になる前により良い抽象化をすることに意義が
ある。
1
 https://arxiv.org/abs/1312.4400
NIN(Network in Network)
http://qiita.com/muddydixon/items/11ce0e7352c82bc07fcc
↑ 論文中にあるNINの全体図。3つのMLP層とGlobalAveragePooling層が使
用されている
←NIN内の各レイヤ出力の計算式。活性化関数にreluが使われている。
 i,jは入力フィーチャマップpixelのインデックス。kはチャネルのインデックス、
 nはMLP層の数 
Global Average Pooling
 
1
 https://arxiv.org/abs/1312.4400
・ 同論文で提案されている正則化手法(regularizer)1
・ 従来のCNNはConvolutionで特徴抽出をし、全結合層で分類するが、全結合層は
過学習しやすい。
・ 本手法はこの全結合層をAveragePoolingで置き換え、CNNと各クラスへの出力
を橋渡しする。(クラスラベル1つにつき1つのフィーチャーマップが出力される)
・ 学習パラメータを持たないため、過学習に強い
chainer付属nin.pyのモデル定義
 w = math.sqrt(2)
mlpconv1=L.MLPConvolution2D(3, (96, 96, 96), 11, stride=4, wscale=w),
mlpconv2=L.MLPConvolution2D(96, (256, 256, 256), 5, pad=2, wscale=w),
mlpconv3=L.MLPConvolution2D(256, (384, 384, 384), 3, pad=1, wscale=w),
mlpconv4=L.MLPConvolution2D(384, (1024, 1024, 1000), 3, pad=1,wscale=w),
chainer付属nin.pyのforward
  h = F.max_pooling_2d(F.relu(self.conv1(x)), 3, stride=2)
h = F.max_pooling_2d(F.relu(self.conv2(h)), 3, stride=2)
h = F.max_pooling_2d(F.relu(self.conv3(h)), 3, stride=2)
h = self.conv4(F.dropout(h, train=self.train))
y = F.reshape(F.average_pooling_2d(h, 6), (x.data.shape[0], 1000))
展望
 ・ NIN等の手法から学んで、分類精度を上げて行きたい。
 
ご清聴ありがとうございました。

Weitere ähnliche Inhalte

Ähnlich wie NINと画像分類

mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
kunihikokaneko1
 
静岡Developers勉強会コンピュータビジョンvol2
静岡Developers勉強会コンピュータビジョンvol2静岡Developers勉強会コンピュータビジョンvol2
静岡Developers勉強会コンピュータビジョンvol2
niku9Tenhou
 

Ähnlich wie NINと画像分類 (16)

ゼロから深層学習を学ぶ方法 - CMS大阪夏祭り2017
ゼロから深層学習を学ぶ方法 - CMS大阪夏祭り2017ゼロから深層学習を学ぶ方法 - CMS大阪夏祭り2017
ゼロから深層学習を学ぶ方法 - CMS大阪夏祭り2017
 
第1回NIPS読み会・関西発表資料 篠崎
 第1回NIPS読み会・関西発表資料 篠崎 第1回NIPS読み会・関西発表資料 篠崎
第1回NIPS読み会・関西発表資料 篠崎
 
第1回NIPS読み会・関西発表資料
第1回NIPS読み会・関西発表資料第1回NIPS読み会・関西発表資料
第1回NIPS読み会・関西発表資料
 
Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話
 
2018/06/22 Neural Network Console Tutorial
2018/06/22 Neural Network Console Tutorial2018/06/22 Neural Network Console Tutorial
2018/06/22 Neural Network Console Tutorial
 
ニコニコ動画タグネットワーク
ニコニコ動画タグネットワークニコニコ動画タグネットワーク
ニコニコ動画タグネットワーク
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
 
Unity道場08「絵づくりの基礎」ライティング虎の巻
Unity道場08「絵づくりの基礎」ライティング虎の巻Unity道場08「絵づくりの基礎」ライティング虎の巻
Unity道場08「絵づくりの基礎」ライティング虎の巻
 
Unity道場08 Unityとアセットツールで学ぶ 「絵づくり」の基礎 ライティング 虎の巻
Unity道場08 Unityとアセットツールで学ぶ「絵づくり」の基礎 ライティング虎の巻Unity道場08 Unityとアセットツールで学ぶ「絵づくり」の基礎 ライティング虎の巻
Unity道場08 Unityとアセットツールで学ぶ 「絵づくり」の基礎 ライティング 虎の巻
 
リクルートにおける画像解析事例紹介と周辺技術紹介
リクルートにおける画像解析事例紹介と周辺技術紹介リクルートにおける画像解析事例紹介と周辺技術紹介
リクルートにおける画像解析事例紹介と周辺技術紹介
 
マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会
マルウェア分類に用いられる特徴量	 Kaggle - Malware Classification Challenge勉強会マルウェア分類に用いられる特徴量	 Kaggle - Malware Classification Challenge勉強会
マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
 
静岡Developers勉強会コンピュータビジョンvol2
静岡Developers勉強会コンピュータビジョンvol2静岡Developers勉強会コンピュータビジョンvol2
静岡Developers勉強会コンピュータビジョンvol2
 
Eccv 2020 dsmnet
Eccv 2020 dsmnetEccv 2020 dsmnet
Eccv 2020 dsmnet
 
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz SpaceUnity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
 
Chainer meetup2016 03-19pub
Chainer meetup2016 03-19pubChainer meetup2016 03-19pub
Chainer meetup2016 03-19pub
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

NINと画像分類