畳み込みニューラルネットワーク(CNN)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-戻る([[ニューラルネットワーク]]、[[画像処理とコンピュー...
--一般的なフツーの[[ニューラルネットワーク]]
---[[順伝播型ニューラルネットワーク(FNN)>ニューラルネッ...
---[[ディープニューラルネットワーク(DNN)>ニューラルネッ...
---畳み込みニューラルネットワーク(CNN)
--[[再帰型ニューラルネットワーク(RNN)]]
---[[長短期記憶ニューラルネットワーク(LSTM)]]
---[[RNN Encoder-Decoder(Sequence-to-Sequence)]]
--[[生成モデル>機械学習の理論#p3f4e303]]系の[[ニューラル...
---[[自己符号化器(AE:オートエンコーダ)]]
---[[テキスト生成系(Transformer系)]]
---[[敵対的生成ネットワーク(GAN)]]
*目次 [#qe9e0017]
#contents
*概要 [#v359904c]
(Convolutional Neural Network: CNN)
**特徴 [#v6676d34]
-一般的な順伝播型ニューラルネットワークとは異なる。
-1989年に単純な数字画像の認識のために開発された[[LeNet>深...
-データの空間的構造を学習する画像分類において、圧倒的な性...
-視覚神経系を模した畳み込み処理で画像から特徴抽出すること...
-[[大規模画像認識競技会(ILSVRC)>#x295ae3d]]で使われてい...
-大規模コーパスで学習されたモデルの重みは公開されていて、...
**できること [#c28a3736]
***[[物体識別>画像処理とコンピュータビジョン(AI)#c30857...
-[[LeNet>深層学習(deep learning)#gecfeadd]]
-[[AlexNet, GoogLeNet, VGGNet, ResNet>深層学習(deep lear...
***[[物体検出>画像処理とコンピュータビジョン(AI)#j5d31a...
-R-CNN
-Fast R-CNN
-Faster R-CNN
-FCOS
-YOLO
-SSD
***[[領域検出>画像処理とコンピュータビジョン(AI)#o768dc...
-FCN (Fully Convolutional Network)
***[[特定物体検出>画像処理とコンピュータビジョン(AI)#d5...
-YOCLACT
-Mask R-CNN
*詳細 [#hac529cb]
**ILSVRC [#x295ae3d]
大規模画像認識競技会(ILSVRC)
***内容 [#i0d2d27a]
-[[ImageNet>G検定:試験対策#f5df0a4a]]画像を使った1000分類
-(チーター、ジャガー、ヒョウ、ユキヒョウとか単純でない)
-256*256カラー画像(訓練 : 検証 : テスト = 120万 : 5万 : ...
***進展 [#a3cc232e]
|before 2017|after 2017|h
|#ref(ILSVRCbefore2017.png,left,nowrap,ILSVRCbefore2017,3...
**パート [#w5d47a4e]
CNNは大きく分けて2つのパートに分けることができる。
-特徴量抽出パート
--[[畳み込み層>#wf1a76fb]]
--[[プーリング層>#j79f3aa4]]~
-識別パート~
脳の神経系を模した全結合層と出力層(≒ [[DNN>ニューラルネ...
--全結合層を繰り返すことで最終的な出力を得る
--得られた特徴量を活性化関数、[[Softmax関数>ニューラルネ...
***畳み込み層 [#wf1a76fb]
-視神経系(視覚を司る神経系)を模して画像から特徴抽出する。
-全結合層に入力する特徴を取り出すために自動化された前処理。
-畳み込み処理
--画像のフィルタ処理+活性化関数
--特徴マップを生成(様々な特徴を取り出す)
-特徴
--細かい(局所的な)特徴の組み合わせから、~
大まかな(大局的、複雑な)特徴を捉えられる。
---手前の階層 → 波長の光に反応
---奥の階層に進むにつれ → 線の向き、折れ線の角、直線の交...
---最奥の階層 → 特定の模様(≒ 特定のカテゴリ)に反応
--ただし、理論的な裏付けは無い。~
生体の神経系を見よう見まねで模倣してみたら上手くいっただ...
CNNが高性能を実現している理由は厳密には分かっていない。
-特徴マップの生成~
--特徴マップは、画像の局所的な特徴を抽出したもの。
--1つのカーネル(フィルタ、ウィンドウ)につき1つの特徴...
--カーネルをn個、用意して、特徴マップをn個、生成する。
--特定のパターンを検出する「カーネルの行列」と「画像中の...
て得たスカラを「画像中の一部領域」の中心に置いて、元画像...
---「画像の一部領域」と「カーネルの行列」のサイズは同じに...
---位置を探し少しずつずらしながら(ストライド)内積を計算...
---RGB(複数チャンネル)の場合、チャンネル毎の「カーネル...
---ベクトルの内積と同じ様にパターンが似ている場合、スカラ...
---一部領域の中心部分と同じ位置に計算したスカラを置き、元...
---最後に、特徴マップにバイアスの値を足す。
-パディングとストライド
--パディング(P):入力データの周りを一定の値で埋める操作
--ストライド(S):畳み込み操作において、ウィンドウを移動...
--式~
入力サイズ(H, W)、フィルタ・サイズ(FH, FW)、出力サイ...
---OH = 1 + (H + 2P - FH) / S
---OW = 1 + (W + 2P - FW) / S
--例
---4×4のサイズの画像に対して、3×3のカーネルをパディング0...
= 1 + (4 + 0 - 3) / 1 = 1 + 1/1 = 2 なので 2×2
---5×5のサイズの画像に対して、3×3のカーネルをパディング1...
= 1 + (5 + 2 - 3) / 1 = 1 + 4/1 = 5 なので 5×5
-イメージ
--計算の全体像(とあるが1画像の処理)~
#ref(filter.png,left,nowrap,filter)
--フルのイメージはコチラをご参照~
https://1drv.ms/p/s!Amfs5caPP9r5jlAZEt6cg2zg_2cU?e=CgwVew
--○の画像を斜線のフィルタを使って特徴マップにした例
#ref(ConvolutionalLayer.png,left,nowrap,畳み込み層,60%)
***プーリング層 [#j79f3aa4]
-位置ずれや形の歪みに対する頑健性
--特徴マップから位置のズレに対して頑強な特徴抽出を行う。
--特徴同士の位置関係で見る(絶対座標ではなく、相対座標で...
-特徴が特徴マップ中のどの部分に位置するか?
--出力が縮小され処理の計算量が減る。
--位置ずれや形の歪みに「頑健になる」(≒同じ値を返す)。
-プーリングの種類
--最大値
---MaxPooling:通常
---GlobalMaxPooling:全結合層へ渡す前、Flatten代替
--平均値
---AvgPooling:通常
---GlobalAvgPooling:全結合層へ渡す前、Flatten代替
--Lp(Lp pooling)
---Lpノルムの値を使用する。
---Global~は無いっぽい。
-パディングとストライド
--パディング(P):なし
--ストライド(S):
---(以下は)ウィンドウサイズと同じの固定値(の例)
---ウィンドウサイズと同じではない場合もある(略)
--式~
入力サイズ(H, W)、ウィンドウ・サイズ(WH, WW)、出力サ...
---OH = H / WH
---OW = W / WW
--例
---4×4の特徴マップに対して、2×2のウィンドウを適当した場合...
= 4 / 2 = 2 なので 2×2
---6×6の特徴マップに対して、3×3のウィンドウを適当した場合...
= 6 / 3 = 2 なので 2×2
-イメージ
--特徴マップにプーリングを施した例
#ref(PoolingLayer.png,left,nowrap,プーリング層,60%)
**パラメタ [#c983cefd]
CNNのパラメタには、[[畳み込み層>#m6368b2f]]のパラメタと[[...
***畳み込み層 [#m6368b2f]
-この時点でカーネルは畳み込みのパラメタとして機能する。
-カーネルは重みパラメタとして機能し誤差逆伝播法によって学...
***全結合層 [#g52ecf28]
-全結合層の重みは[[DNN>ニューラルネットワーク#ge448516]]...
-重みパラメタは誤差逆伝播法によって学習できる。
**様々な畳み込み [#k2ad6c23]
***depth-wise畳込 [#x8fd2ba5]
depth-wise Convolution(グループ化畳込)
***point-wise畳込 [#qfbf41f7]
1*1 Convolution(1*1畳込)、
-概要
--空間グリッド上の1点のみにチャンネル方向に畳み込む
--点単位畳み込み層 (pointwise convolution)とも呼ばれる。
--Network-in-Networkで提案されたアイデアで[[GoogLeNet>#w8...
[[Inceptionモジュール>#o50ffd37]]で採用されたことをきっか...
-内容
--入力画像のサイズを変えずにチャンネル数(特徴マップ数)...
--特徴マップ上の各1グリッドにおいて深さ方向の畳み込みのみ...
--チャンネル数を減らすことでパラメタ数が減り次元削減の効...
上記はConvのFN(フィルタ数)で特徴マップ数が変わることか...
あまり、処理内容を詳しくイメージできなくても、「確かに。...
(チャンネル数(CH)は二層目以降ではフィルタ数(FN)に対...
-用途
--「画素単位での識別器」としての使用~
物体検出、[[セマンティック・セグメンテーション>画像処理と...
空間サイズが狭まった特徴マップに対し使用することが試され...
--「チャンネル方向の次元削減」としての使用~
フィルタ数を少なくしておくと、「チャンネル方向の次元削減...
***逆畳み込み [#k21bbb51]
-様々な呼称がある。
--逆畳み込み(Deconvolution)
--転置畳み込み(Transposed Convolution)
--上昇畳込み(Up Convolution)
--アップサンプリング(Up Sampling)
-畳み込みの逆プロセスではない事に注意。
--入力データを拡大してから畳み込みを行う処理
--一度畳み込みで圧縮したデータをもとのサイズに戻す。
--入力データを完全に復元するものでもない
--[[セグメンテーション>画像処理とコンピュータビジョン(AI...
https://nisshingeppo.com/ai/whats-deconvolution/
**モジュールやブロック [#o97abafa]
***Inceptionモジュール [#o50ffd37]
-概要
--省パラメタながらも高い表現力を持ち計算効率性も良い「ブ...
--大きな畳み込みフィルタを小さな畳み込みフィルタのグルー...
---CNNはパラメタ数が増えてもスパース(疎)になってしまい...
---スパース(疎)をデンス(密)にする ≒ 人間 / 犬 / 猫の...
---スパース(疎)をデンス(密)にするには、相関のあるニュ...
・相関のあるニューロンとは特徴マップ上の同じ位置のニュー...
・[[1*1 Conv>#qfbf41f7]]で次元削減すると相関のあるニュー...
---コレは重み0のパラメタを排除しているとみなせるため、相...
-並列化
--多様なサイズ経路に4並列化(=ワイド化)
--多様な畳み込みサイズの特徴マップを合成
-パラメタ削減~
各経路の次元削減による軽量化
--4並行パス構成だとパラメタ数が多い
--何個も繋げていくとパラメタが多過ぎて上手く学習できなく...
--[[1*1 Conv>#qfbf41f7]]を3つの各経路の最初に導入し次元削...
--同時期の[[VGGNet>#b9831538]]よりも、かなりパラメタ数が...
***Residualブロック [#z4eca8cf]
(残差ブロック)
-概要
--劣化問題を解決する残差学習に対応した「ブロック」([[構...
---Bottleneckアーキテクチャ(1*1, 3*3, 1*1)
---畳み込み層とSkip Connection(Identity mapping)~
・層が深くても恒等写像の維持が可能になる(変換が必要ない...
・また、僅かな勾配も消失することなく残すので僅かな変換も...
---<ResNet-34>~
・[[3*3 Conv>#wf1a76fb]](FNは指定の値)~
・[[3*3 Conv>#wf1a76fb]](FNは指定の値)~
・入力を残差接続で迂回させて足す。
---<ResNet-152>~
TypeA, B, C, D でFN値が異なる。~
・[[1*1 Conv>#qfbf41f7]](FN = A:64, B:128, C:256, D:512)~
・[[3*3 Conv>#wf1a76fb]](FN = A:64, B:128, C:256, D:512)~
・[[1*1 Conv>#qfbf41f7]](FN = A:256, B:512, C:1024, D:20...
・入力を残差接続で迂回させて足す。
--処理内容は、単純に、
---[[1*1 Conv>#qfbf41f7]]、[[n*n Conv>#wf1a76fb]]した後に、
---入力を残差接続 (residual connection) で迂回させて足す。
---足す際のサイズ調整には2通りの方法がある。~
・(パラメタ節約)単純に画像を圧縮しチャネルは削る方法~
・(精度は高い)[[1*1 Conv>#qfbf41f7]](S>1)で画像を圧縮...
-劣化問題・残差学習~
degradation(劣化問題) と residual learning(残差学習)
--degradation(劣化問題)
---深くしたほうが性能が悪くなる(18層 → 34層)。
---しかも訓練データに対しても性能劣化した(過学習&汎化性...
---深くした方が「数学的には」・「表現力が豊か」であるはず。
---「数学的には」→ 学習の(近似計算の最適化)問題を考慮し...
---「表現力が豊か」→ (34が18に劣るというのは)恒等写像の...
--residual learning(残差学習)
---通常の学習はy=h(x)のhのパラメタを学習
---残差学習はy=h(x)=f(x)+xのfのパラメタを学習(xは恒等写像
---パラメタ0で恒等写像を出力(学習?)可能 ≒ 恒等写像との...
---その他にも、[[勾配消失>ニューラルネットワーク#id252e38...
-パラメタ削減
--residual learning(残差学習)ではパラメタが増加しない。
--ResNet-152のResidualブロックでは[[3*3 Conv>#qfbf41f7]]...
[[1*1 Conv>#qfbf41f7]]により実質パラメタの削減・復元を行...
**著名なモデル(物体識別) [#l62c4148]
***LeNet [#n2ea2983]
-LeNet
--[[歴史>深層学習(deep learning)#gecfeadd]]~
誤差逆伝播法の発見から僅か2年後
--論文(89)~
Introduction(多変量解析には無かった)
---誤差逆伝播法
---訓練&テスト・データ
---複雑なモデルには大規模なデータ
---過学習に気を付ける。
--タスク
---手書き文字認識(MINST未満のマウスdeペイント文字)
---16 * 16の480枚(訓練 : テスト = 320 : 160)
--アーキテクチャ
---図がない。
---構造の説明~
・入力 : 16*16~
・Conv : FN=2, FHW=3*3, S=2, + tanh → 8*8*2~
・Conv : FN=4, FHW=5*5, S=2, + tanh → 4*4*4~
・4*4*4 をFlatten → Affine → tanh(≠ Softmax)で10~
・損失関数は、Categorical Cross EntropyではなくMSE
--精度とポイント
---精度:98.4%
---ポイント~
・AffineよりConvでパラメタ数削減~
・チャンネルを増やすと良い結果が出る
-LeNet-5
--[[歴史>深層学習(deep learning)#l4dfaaff]]
---10年後の性能向上版
---(間にLeNet-1、-4、Boosted -4 とか色々ある)
--論文(98)~
Introduction:(SDGの)局所解だけどOK
--タスク~
郵便番号のようなものを分類
--アーキテクチャ
---[[LeNet-5 図>https://www.google.com/search?q=LeNet-5&t...
---構造の説明~
・入力 : 32*32(Padding済みらしい)~
・Conv : FN=6, FHW=5*5, S=1, + tanh → 28*28*6~
・Avg Pooling : 2*2, S=1, + tanh → 14*14*6~
・Conv : FN=16, FHW=5*5, S=1, + tanh → 10*10*16~
(フィルタの見る特徴マップがマッピングで指定されているら...
・Avg Pooling : 2*2, S=1, + tanh → 5*5*6~
・Conv : FN=120, FHW=1*1, S=1, + tanh → 1*1*120(実質Affi...
・1*1*120 をFlatten → Affine + tanhで84 → Affine + ERBF(...
***AlexNet [#w1e5ff6b]
-[[歴史>深層学習(deep learning)#gecfeadd]]~
--[[ReLU>ニューラルネットワーク#x80775f2]]の発見から僅か...
--[[ドロップアウト(Dropout)>深層学習のテクニック#hf3c7a...
--[[ILSVRC>#x295ae3d]]2012で優勝し、Deep Learningブームの...
-論文(12)~
Introduction:
--活性化関数に[[ReLU>ニューラルネットワーク#x80775f2]]を...
--[[ドロップアウト(Dropout)>深層学習のテクニック#hf3c7a...
--大量のデータ + [[GPUと並列計算>深層学習(deep learning...
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[AlexNet 図>https://www.google.com/search?q=AlexNet&tb...
--特徴の説明~
--構造の説明
---入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
---Conv : FN=96, FHW=11*11, S=4, + LRN → 55*55*96 → 55*55...
---Max Pooling : 3*3, S=2 → 27*27*48*2(サイズで割るんじ...
---Conv : FN=128, FHW=5*5, P=2, S=1, + LRN = 27*27*128*2
---Max Pooling : 3*3, S=2 → 13*13*128*2
---Conv : FN=192, FHW=3*3, P=1, S=1, + LRN = 13*13*192*2...
---Conv : FN=192, FHW=5*5, P=2, S=1, + LRN = 13*13*192*2
---Conv : FN=128, FHW=5*5, P=2, S=1, + LRN = 13*13*128*2
---Max Pooling : 3*3, S=2 → 6*6*128*2
---6*6*128*2 をFlatten → Affine で2024*2 → Affine で2024*...
-精度とポイント
--精度:
---誤答率16%と2位が前年度優勝と≒の26%に大差
---ココからの怒涛の精度改善のきっかけになった。
---なお、AlexNetでのCIFAR-10の精度は89%らしい。
--ポイント
---非DL時代からDL時代へ。
---力技のモデル(CNN層をシンプルに積重ね深く、並列計算で...
---LRN(Local Response Normalization、局所応答正規化)は...
***GoogLeNet [#w86a9171]
-[[歴史>深層学習(deep learning)#gd4ee195]]
--Google, 2014
--分類、検出部門で優勝
--[[Inceptionモジュール>#o50ffd37]]で更に深いCNNを構成
-論文(15)~
Introduction:
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[GoogLeNet 図>https://www.google.com/search?q=GoogLeNe...
--9個の[[Inceptionモジュール>#o50ffd37]]
-精度とポイント
--精度:6.7%
--ポイント~
深いネットワークを構築できる。
---1*1 Convで軽量になった[[Inceptionモジュール>#o50ffd37]...
---ネットワークの途中からの分岐でクラス分類を行うAuxiliar...
勾配消失問題に対処する効果があり、また、バッチ正規化、ア...
***VGGNet [#b9831538]
このうちの性能が良かった VGG16 または VGG19 が使われてい...
-[[歴史>深層学習(deep learning)#gd4ee195]]
--オックスフォード, 2014
--分類部門で2位
--多層から成るCNN
-論文(14)~
19層より深いものも試したが、19層がベストだった。
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[VGGNet 図>https://www.google.com/search?q=VGGNet&tbm=...
--特徴の説明~
アーキテクチャがシンプル
---VGG16 は 畳み込み13層と全結合3層の計16
---VGG19 は 畳み込み16層と全結合3層の計19
--構造の説明
---入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
---Conv : FN=64, FHW=3*3, P=1(以下Conv3でFWH, P略)
---Conv3 : FN=64
---Max Pooling : 2*2, S=2(以下略) → 112*112*64
---Conv3 : FN=128
---Conv3 : FN=128
---Max Pooling → 56*56*128
---Conv3 : FN=256(VGG16*3、VGG19*4
---Max Pooling → 28*28*256
---Conv3 : FN=512(VGG16*3、VGG19*4
---Max Pooling → 14*14*512
---Conv3 : FN=512(VGG16*3、VGG19*4
---Max Pooling → 7*7*512
---7*7*512 をFlatten → Affineで4096 → Affineで4096 → Affi...
-精度とポイント
--精度:6.8%
--ポイント
---[[3*3 Conv>#wf1a76fb]]だけでこの精度
---奥の階層が汎用的な特徴を獲得しているから~
[[転移学習>深層学習のテクニック#ebe9edcc]]、[[ファイン・...
***ResNet [#x56d1a9e]
[[Residualブロックにおける残差学習の導入>畳み込みニューラ...
-[[歴史>深層学習(deep learning)#ca8279e0]]
--Microsoft Research, 2015
--初めて人間のエラー率 5% を上回る精度を達成。
--[[Residualブロックにおける残差学習の導入>畳み込みニュー...
--ある層で求める最適な出力を学習するのではなく層の入力を...
--入力層から出力層まで伝播する値と入力層の値を足し合わせ...
勾配値がきちんと伝わり、今では1000層といったかなり深い構...
-論文(16)
--[[勾配消失>ニューラルネットワーク#id252e38]]の話は全く...
--[[劣化問題>#z4eca8cf]]の問題から、どのようにResNetへ辿...
--18、34、154、1202層のものを評価して劣化問題が発生しない...
--1202でも学習可能で[[AlexNet>#w1e5ff6b]]よりパラメタ数が...
--あとは、[[Heの初期値>深層学習のテクニック#cda1d3c9]]と[...
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[ResNet 図>https://www.google.com/search?q=ResNet&tbm=...
--[[Residualブロック>#z4eca8cf]]
--構造の説明
---<ResNet-34>~
・入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
・Conv : FN=64, FHW=7*7, S=2~
・Max Pooling : 3*3, S=2~
・Residualブロック(全部のConvのFN= 64, 先頭ConvだけS=2)...
・Residualブロック(全部のConvのFN=128, 先頭ConvだけS=2)...
・Residualブロック(全部のConvのFN=256, 先頭ConvだけS=2)...
・Residualブロック(全部のConvのFN=512, 先頭ConvだけS=2)...
・Global Average Pooling~
・...をFlatten → Affine + Softmaxで1000
---<ResNet-152>~
・入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
・Conv : FN=256, FHW=7*7, S=2~
・Max Pooling : 3*3, S=2~
・ResidualブロックA(先頭ConvだけS=2)を3層~
・ResidualブロックB(先頭ConvだけS=2)を8層~
・ResidualブロックC(先頭ConvだけS=2)を36層~
・ResidualブロックD(先頭ConvだけS=2)を3層~
・Global Average Pooling~
・...をFlatten → Affine + Softmaxで1000
-精度とポイント
--精度:3.57%
--ポイント:[[Residualブロック>#z4eca8cf]]
-WideResNet
--概要
---層の深さを減らし幅(フィルタ数)を増やす。
---結果としてパラメタ数は増えるが高精度かつ高速。
--[[Residualブロック>#z4eca8cf]]の改良~
表現力を向上させる方法は以下の3つが考えられる。
+++ブロックにより多くの畳み込み層を加える。
+++より多くの特徴マップを加えることで畳み込み層を広げる。
+++畳み込みフィルターサイズを大きくする。~
--検証結果、フィルター数を大きくするのが効果的。
---小さいフィルターの方が効率的と研究では明らかになってい...
---パラメタk:フィルタ数を k 倍する(パラメタ数と計算量...
---シート中のk=1 のとき、元のResNetと同じで、k>1のときWi...
***HighwayNets、DenseNet [#gd254232]
-HighwayNets (2015
--ただ持ち越すだけで良いか?
--持ち越す割合を重みとして一緒に学習する。
--f(x)+x → f(x)+wx
-DenseNet (2016
--全層間をスキップ接続する
--複数のスキップが合流する所は足し算じゃないよね?
***EfficientNet [#fcab09bd]
-Google, 2019
--シンプルな CNN モデルを効率的(Efficient)にスケーリング
--スケーリングとは計算リソースを大きくすることで精度向上...
--パラメタは関係しあっているためバランスをとりながらスケ...
-パラメタ
--深さ:層の深さ、α^φ~
層を深くすることで
---複雑な特徴を捉えられる
---その分学習コストがかかる
---勾配消失問題により精度向上に限界がある
--幅:フィルタ数、β^φ~
広さ(フィルタ数)を広げることで
---細かい特徴を捉えられる
---広さに対して深さが浅いと複雑な特徴を捉え辛い
--解像度:入力画像の大きさ、γ^φ~
解像度が高いほうが細かい特徴を捉えられる
-FLOPSは (α*β^2*γ^2)^ϕに従って増えてしまうため~
α*β^2*γ^2 ≒ 2に制限することで増え方を 2^ϕ で増えるように...
-αβγを[[グリッド・サーチ>データマイニング(DM)- Python#d...
***MobileNet [#wa2069dd]
スマホ用CNNで、ボトルネックの畳み込みの分割で計算量を減ら...
-CNNはパラメタ数が多過ぎるのでパラメタ数削減を考える。
-空間方向とチャネル方向の畳み込みを別々に行いパラメタの数...
--各チャネルを独立に畳み込み、チャネル方向を大きさ1のカー...
--パラメタ数 = FH*FW*FN*CH → = FH*FW*CH + 1*1*CH*FN = FH*...
**CNNの応用([[物体識別>画像処理とコンピュータビジョン(...
***[[物体検出>画像処理とコンピュータビジョン(物体検出)]...
***[[領域検出>画像処理とコンピュータビジョン(領域検出)]...
***[[特定領域検出>画像処理とコンピュータビジョン(特定領...
*参考 [#k630d354]
-コンテンツへのリンク - OSSコンソーシアム~
https://www.osscons.jp/joho108j0-537
--深層学習についてのレポート(CNN編)~
https://1drv.ms/p/s!Amfs5caPP9r5jlAZEt6cg2zg_2cU
--機械学習・深層学習についてのNotebook~
https://github.com/OpenTouryoProject/DxCommon/tree/master...
-[[O'Reilly Japan - ゼロから作るDeep Learning>ニューラル...
(Pythonで学ぶディープラーニングの理論と実装)
**YouTube [#o71ae073]
***[[予備校のノリで学ぶ「大学の数学・物理」>深層学習(dee...
-高校数学からはじめる深層学習入門~
(畳み込みニューラルネットワークの理解)~
https://www.youtube.com/watch?v=xzzTYL90M8s
***[[t-uesugi/videos>深層学習(deep learning)#ga71ee2d]]...
-深層学習概論
--1. 画像の扱い~
https://www.youtube.com/watch?v=V-lVzF7Ue7M
--2. 畳み込み層~
https://www.youtube.com/watch?v=AWUyOdJJ7Sg
--3. プーリング層~
https://www.youtube.com/watch?v=hwCudq8ZCwg
--4. ミニバッチ学習~
https://www.youtube.com/watch?v=nty3w5HnHZ4
--5. ドロップアウトとバッチ正規化~
https://www.youtube.com/watch?v=Dk4wEI8WDPU
***[[AIcia Solid Project>深層学習(deep learning)#z59ed2...
-CNN紹介動画~
https://www.youtube.com/playlist?list=PLhDAH9aTfnxIGIvLci...
-深層学習 ディープラーニングの世界(中にCNNも含まれる~
https://www.youtube.com/playlist?list=PLhDAH9aTfnxKXf__so...
--畳み込み層の本当の意味、あなたは説明できますか?~
https://www.youtube.com/watch?v=vU-JfZNBdYU
--プーリング層 - シンプルだけど大きな役割を担う層~
https://www.youtube.com/watch?v=MLixg9K6oeU
**Qiita [#cb0de391]
-畳み込みニューラルネットワークの最新研究動向 (〜2017)~
https://qiita.com/yu4u/items/7e93c454c9410c4b5427
**[[TensorFlow・Kerasでの実装例>TensorFlow・Keras#m54cf12...
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-戻る([[ニューラルネットワーク]]、[[画像処理とコンピュー...
--一般的なフツーの[[ニューラルネットワーク]]
---[[順伝播型ニューラルネットワーク(FNN)>ニューラルネッ...
---[[ディープニューラルネットワーク(DNN)>ニューラルネッ...
---畳み込みニューラルネットワーク(CNN)
--[[再帰型ニューラルネットワーク(RNN)]]
---[[長短期記憶ニューラルネットワーク(LSTM)]]
---[[RNN Encoder-Decoder(Sequence-to-Sequence)]]
--[[生成モデル>機械学習の理論#p3f4e303]]系の[[ニューラル...
---[[自己符号化器(AE:オートエンコーダ)]]
---[[テキスト生成系(Transformer系)]]
---[[敵対的生成ネットワーク(GAN)]]
*目次 [#qe9e0017]
#contents
*概要 [#v359904c]
(Convolutional Neural Network: CNN)
**特徴 [#v6676d34]
-一般的な順伝播型ニューラルネットワークとは異なる。
-1989年に単純な数字画像の認識のために開発された[[LeNet>深...
-データの空間的構造を学習する画像分類において、圧倒的な性...
-視覚神経系を模した畳み込み処理で画像から特徴抽出すること...
-[[大規模画像認識競技会(ILSVRC)>#x295ae3d]]で使われてい...
-大規模コーパスで学習されたモデルの重みは公開されていて、...
**できること [#c28a3736]
***[[物体識別>画像処理とコンピュータビジョン(AI)#c30857...
-[[LeNet>深層学習(deep learning)#gecfeadd]]
-[[AlexNet, GoogLeNet, VGGNet, ResNet>深層学習(deep lear...
***[[物体検出>画像処理とコンピュータビジョン(AI)#j5d31a...
-R-CNN
-Fast R-CNN
-Faster R-CNN
-FCOS
-YOLO
-SSD
***[[領域検出>画像処理とコンピュータビジョン(AI)#o768dc...
-FCN (Fully Convolutional Network)
***[[特定物体検出>画像処理とコンピュータビジョン(AI)#d5...
-YOCLACT
-Mask R-CNN
*詳細 [#hac529cb]
**ILSVRC [#x295ae3d]
大規模画像認識競技会(ILSVRC)
***内容 [#i0d2d27a]
-[[ImageNet>G検定:試験対策#f5df0a4a]]画像を使った1000分類
-(チーター、ジャガー、ヒョウ、ユキヒョウとか単純でない)
-256*256カラー画像(訓練 : 検証 : テスト = 120万 : 5万 : ...
***進展 [#a3cc232e]
|before 2017|after 2017|h
|#ref(ILSVRCbefore2017.png,left,nowrap,ILSVRCbefore2017,3...
**パート [#w5d47a4e]
CNNは大きく分けて2つのパートに分けることができる。
-特徴量抽出パート
--[[畳み込み層>#wf1a76fb]]
--[[プーリング層>#j79f3aa4]]~
-識別パート~
脳の神経系を模した全結合層と出力層(≒ [[DNN>ニューラルネ...
--全結合層を繰り返すことで最終的な出力を得る
--得られた特徴量を活性化関数、[[Softmax関数>ニューラルネ...
***畳み込み層 [#wf1a76fb]
-視神経系(視覚を司る神経系)を模して画像から特徴抽出する。
-全結合層に入力する特徴を取り出すために自動化された前処理。
-畳み込み処理
--画像のフィルタ処理+活性化関数
--特徴マップを生成(様々な特徴を取り出す)
-特徴
--細かい(局所的な)特徴の組み合わせから、~
大まかな(大局的、複雑な)特徴を捉えられる。
---手前の階層 → 波長の光に反応
---奥の階層に進むにつれ → 線の向き、折れ線の角、直線の交...
---最奥の階層 → 特定の模様(≒ 特定のカテゴリ)に反応
--ただし、理論的な裏付けは無い。~
生体の神経系を見よう見まねで模倣してみたら上手くいっただ...
CNNが高性能を実現している理由は厳密には分かっていない。
-特徴マップの生成~
--特徴マップは、画像の局所的な特徴を抽出したもの。
--1つのカーネル(フィルタ、ウィンドウ)につき1つの特徴...
--カーネルをn個、用意して、特徴マップをn個、生成する。
--特定のパターンを検出する「カーネルの行列」と「画像中の...
て得たスカラを「画像中の一部領域」の中心に置いて、元画像...
---「画像の一部領域」と「カーネルの行列」のサイズは同じに...
---位置を探し少しずつずらしながら(ストライド)内積を計算...
---RGB(複数チャンネル)の場合、チャンネル毎の「カーネル...
---ベクトルの内積と同じ様にパターンが似ている場合、スカラ...
---一部領域の中心部分と同じ位置に計算したスカラを置き、元...
---最後に、特徴マップにバイアスの値を足す。
-パディングとストライド
--パディング(P):入力データの周りを一定の値で埋める操作
--ストライド(S):畳み込み操作において、ウィンドウを移動...
--式~
入力サイズ(H, W)、フィルタ・サイズ(FH, FW)、出力サイ...
---OH = 1 + (H + 2P - FH) / S
---OW = 1 + (W + 2P - FW) / S
--例
---4×4のサイズの画像に対して、3×3のカーネルをパディング0...
= 1 + (4 + 0 - 3) / 1 = 1 + 1/1 = 2 なので 2×2
---5×5のサイズの画像に対して、3×3のカーネルをパディング1...
= 1 + (5 + 2 - 3) / 1 = 1 + 4/1 = 5 なので 5×5
-イメージ
--計算の全体像(とあるが1画像の処理)~
#ref(filter.png,left,nowrap,filter)
--フルのイメージはコチラをご参照~
https://1drv.ms/p/s!Amfs5caPP9r5jlAZEt6cg2zg_2cU?e=CgwVew
--○の画像を斜線のフィルタを使って特徴マップにした例
#ref(ConvolutionalLayer.png,left,nowrap,畳み込み層,60%)
***プーリング層 [#j79f3aa4]
-位置ずれや形の歪みに対する頑健性
--特徴マップから位置のズレに対して頑強な特徴抽出を行う。
--特徴同士の位置関係で見る(絶対座標ではなく、相対座標で...
-特徴が特徴マップ中のどの部分に位置するか?
--出力が縮小され処理の計算量が減る。
--位置ずれや形の歪みに「頑健になる」(≒同じ値を返す)。
-プーリングの種類
--最大値
---MaxPooling:通常
---GlobalMaxPooling:全結合層へ渡す前、Flatten代替
--平均値
---AvgPooling:通常
---GlobalAvgPooling:全結合層へ渡す前、Flatten代替
--Lp(Lp pooling)
---Lpノルムの値を使用する。
---Global~は無いっぽい。
-パディングとストライド
--パディング(P):なし
--ストライド(S):
---(以下は)ウィンドウサイズと同じの固定値(の例)
---ウィンドウサイズと同じではない場合もある(略)
--式~
入力サイズ(H, W)、ウィンドウ・サイズ(WH, WW)、出力サ...
---OH = H / WH
---OW = W / WW
--例
---4×4の特徴マップに対して、2×2のウィンドウを適当した場合...
= 4 / 2 = 2 なので 2×2
---6×6の特徴マップに対して、3×3のウィンドウを適当した場合...
= 6 / 3 = 2 なので 2×2
-イメージ
--特徴マップにプーリングを施した例
#ref(PoolingLayer.png,left,nowrap,プーリング層,60%)
**パラメタ [#c983cefd]
CNNのパラメタには、[[畳み込み層>#m6368b2f]]のパラメタと[[...
***畳み込み層 [#m6368b2f]
-この時点でカーネルは畳み込みのパラメタとして機能する。
-カーネルは重みパラメタとして機能し誤差逆伝播法によって学...
***全結合層 [#g52ecf28]
-全結合層の重みは[[DNN>ニューラルネットワーク#ge448516]]...
-重みパラメタは誤差逆伝播法によって学習できる。
**様々な畳み込み [#k2ad6c23]
***depth-wise畳込 [#x8fd2ba5]
depth-wise Convolution(グループ化畳込)
***point-wise畳込 [#qfbf41f7]
1*1 Convolution(1*1畳込)、
-概要
--空間グリッド上の1点のみにチャンネル方向に畳み込む
--点単位畳み込み層 (pointwise convolution)とも呼ばれる。
--Network-in-Networkで提案されたアイデアで[[GoogLeNet>#w8...
[[Inceptionモジュール>#o50ffd37]]で採用されたことをきっか...
-内容
--入力画像のサイズを変えずにチャンネル数(特徴マップ数)...
--特徴マップ上の各1グリッドにおいて深さ方向の畳み込みのみ...
--チャンネル数を減らすことでパラメタ数が減り次元削減の効...
上記はConvのFN(フィルタ数)で特徴マップ数が変わることか...
あまり、処理内容を詳しくイメージできなくても、「確かに。...
(チャンネル数(CH)は二層目以降ではフィルタ数(FN)に対...
-用途
--「画素単位での識別器」としての使用~
物体検出、[[セマンティック・セグメンテーション>画像処理と...
空間サイズが狭まった特徴マップに対し使用することが試され...
--「チャンネル方向の次元削減」としての使用~
フィルタ数を少なくしておくと、「チャンネル方向の次元削減...
***逆畳み込み [#k21bbb51]
-様々な呼称がある。
--逆畳み込み(Deconvolution)
--転置畳み込み(Transposed Convolution)
--上昇畳込み(Up Convolution)
--アップサンプリング(Up Sampling)
-畳み込みの逆プロセスではない事に注意。
--入力データを拡大してから畳み込みを行う処理
--一度畳み込みで圧縮したデータをもとのサイズに戻す。
--入力データを完全に復元するものでもない
--[[セグメンテーション>画像処理とコンピュータビジョン(AI...
https://nisshingeppo.com/ai/whats-deconvolution/
**モジュールやブロック [#o97abafa]
***Inceptionモジュール [#o50ffd37]
-概要
--省パラメタながらも高い表現力を持ち計算効率性も良い「ブ...
--大きな畳み込みフィルタを小さな畳み込みフィルタのグルー...
---CNNはパラメタ数が増えてもスパース(疎)になってしまい...
---スパース(疎)をデンス(密)にする ≒ 人間 / 犬 / 猫の...
---スパース(疎)をデンス(密)にするには、相関のあるニュ...
・相関のあるニューロンとは特徴マップ上の同じ位置のニュー...
・[[1*1 Conv>#qfbf41f7]]で次元削減すると相関のあるニュー...
---コレは重み0のパラメタを排除しているとみなせるため、相...
-並列化
--多様なサイズ経路に4並列化(=ワイド化)
--多様な畳み込みサイズの特徴マップを合成
-パラメタ削減~
各経路の次元削減による軽量化
--4並行パス構成だとパラメタ数が多い
--何個も繋げていくとパラメタが多過ぎて上手く学習できなく...
--[[1*1 Conv>#qfbf41f7]]を3つの各経路の最初に導入し次元削...
--同時期の[[VGGNet>#b9831538]]よりも、かなりパラメタ数が...
***Residualブロック [#z4eca8cf]
(残差ブロック)
-概要
--劣化問題を解決する残差学習に対応した「ブロック」([[構...
---Bottleneckアーキテクチャ(1*1, 3*3, 1*1)
---畳み込み層とSkip Connection(Identity mapping)~
・層が深くても恒等写像の維持が可能になる(変換が必要ない...
・また、僅かな勾配も消失することなく残すので僅かな変換も...
---<ResNet-34>~
・[[3*3 Conv>#wf1a76fb]](FNは指定の値)~
・[[3*3 Conv>#wf1a76fb]](FNは指定の値)~
・入力を残差接続で迂回させて足す。
---<ResNet-152>~
TypeA, B, C, D でFN値が異なる。~
・[[1*1 Conv>#qfbf41f7]](FN = A:64, B:128, C:256, D:512)~
・[[3*3 Conv>#wf1a76fb]](FN = A:64, B:128, C:256, D:512)~
・[[1*1 Conv>#qfbf41f7]](FN = A:256, B:512, C:1024, D:20...
・入力を残差接続で迂回させて足す。
--処理内容は、単純に、
---[[1*1 Conv>#qfbf41f7]]、[[n*n Conv>#wf1a76fb]]した後に、
---入力を残差接続 (residual connection) で迂回させて足す。
---足す際のサイズ調整には2通りの方法がある。~
・(パラメタ節約)単純に画像を圧縮しチャネルは削る方法~
・(精度は高い)[[1*1 Conv>#qfbf41f7]](S>1)で画像を圧縮...
-劣化問題・残差学習~
degradation(劣化問題) と residual learning(残差学習)
--degradation(劣化問題)
---深くしたほうが性能が悪くなる(18層 → 34層)。
---しかも訓練データに対しても性能劣化した(過学習&汎化性...
---深くした方が「数学的には」・「表現力が豊か」であるはず。
---「数学的には」→ 学習の(近似計算の最適化)問題を考慮し...
---「表現力が豊か」→ (34が18に劣るというのは)恒等写像の...
--residual learning(残差学習)
---通常の学習はy=h(x)のhのパラメタを学習
---残差学習はy=h(x)=f(x)+xのfのパラメタを学習(xは恒等写像
---パラメタ0で恒等写像を出力(学習?)可能 ≒ 恒等写像との...
---その他にも、[[勾配消失>ニューラルネットワーク#id252e38...
-パラメタ削減
--residual learning(残差学習)ではパラメタが増加しない。
--ResNet-152のResidualブロックでは[[3*3 Conv>#qfbf41f7]]...
[[1*1 Conv>#qfbf41f7]]により実質パラメタの削減・復元を行...
**著名なモデル(物体識別) [#l62c4148]
***LeNet [#n2ea2983]
-LeNet
--[[歴史>深層学習(deep learning)#gecfeadd]]~
誤差逆伝播法の発見から僅か2年後
--論文(89)~
Introduction(多変量解析には無かった)
---誤差逆伝播法
---訓練&テスト・データ
---複雑なモデルには大規模なデータ
---過学習に気を付ける。
--タスク
---手書き文字認識(MINST未満のマウスdeペイント文字)
---16 * 16の480枚(訓練 : テスト = 320 : 160)
--アーキテクチャ
---図がない。
---構造の説明~
・入力 : 16*16~
・Conv : FN=2, FHW=3*3, S=2, + tanh → 8*8*2~
・Conv : FN=4, FHW=5*5, S=2, + tanh → 4*4*4~
・4*4*4 をFlatten → Affine → tanh(≠ Softmax)で10~
・損失関数は、Categorical Cross EntropyではなくMSE
--精度とポイント
---精度:98.4%
---ポイント~
・AffineよりConvでパラメタ数削減~
・チャンネルを増やすと良い結果が出る
-LeNet-5
--[[歴史>深層学習(deep learning)#l4dfaaff]]
---10年後の性能向上版
---(間にLeNet-1、-4、Boosted -4 とか色々ある)
--論文(98)~
Introduction:(SDGの)局所解だけどOK
--タスク~
郵便番号のようなものを分類
--アーキテクチャ
---[[LeNet-5 図>https://www.google.com/search?q=LeNet-5&t...
---構造の説明~
・入力 : 32*32(Padding済みらしい)~
・Conv : FN=6, FHW=5*5, S=1, + tanh → 28*28*6~
・Avg Pooling : 2*2, S=1, + tanh → 14*14*6~
・Conv : FN=16, FHW=5*5, S=1, + tanh → 10*10*16~
(フィルタの見る特徴マップがマッピングで指定されているら...
・Avg Pooling : 2*2, S=1, + tanh → 5*5*6~
・Conv : FN=120, FHW=1*1, S=1, + tanh → 1*1*120(実質Affi...
・1*1*120 をFlatten → Affine + tanhで84 → Affine + ERBF(...
***AlexNet [#w1e5ff6b]
-[[歴史>深層学習(deep learning)#gecfeadd]]~
--[[ReLU>ニューラルネットワーク#x80775f2]]の発見から僅か...
--[[ドロップアウト(Dropout)>深層学習のテクニック#hf3c7a...
--[[ILSVRC>#x295ae3d]]2012で優勝し、Deep Learningブームの...
-論文(12)~
Introduction:
--活性化関数に[[ReLU>ニューラルネットワーク#x80775f2]]を...
--[[ドロップアウト(Dropout)>深層学習のテクニック#hf3c7a...
--大量のデータ + [[GPUと並列計算>深層学習(deep learning...
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[AlexNet 図>https://www.google.com/search?q=AlexNet&tb...
--特徴の説明~
--構造の説明
---入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
---Conv : FN=96, FHW=11*11, S=4, + LRN → 55*55*96 → 55*55...
---Max Pooling : 3*3, S=2 → 27*27*48*2(サイズで割るんじ...
---Conv : FN=128, FHW=5*5, P=2, S=1, + LRN = 27*27*128*2
---Max Pooling : 3*3, S=2 → 13*13*128*2
---Conv : FN=192, FHW=3*3, P=1, S=1, + LRN = 13*13*192*2...
---Conv : FN=192, FHW=5*5, P=2, S=1, + LRN = 13*13*192*2
---Conv : FN=128, FHW=5*5, P=2, S=1, + LRN = 13*13*128*2
---Max Pooling : 3*3, S=2 → 6*6*128*2
---6*6*128*2 をFlatten → Affine で2024*2 → Affine で2024*...
-精度とポイント
--精度:
---誤答率16%と2位が前年度優勝と≒の26%に大差
---ココからの怒涛の精度改善のきっかけになった。
---なお、AlexNetでのCIFAR-10の精度は89%らしい。
--ポイント
---非DL時代からDL時代へ。
---力技のモデル(CNN層をシンプルに積重ね深く、並列計算で...
---LRN(Local Response Normalization、局所応答正規化)は...
***GoogLeNet [#w86a9171]
-[[歴史>深層学習(deep learning)#gd4ee195]]
--Google, 2014
--分類、検出部門で優勝
--[[Inceptionモジュール>#o50ffd37]]で更に深いCNNを構成
-論文(15)~
Introduction:
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[GoogLeNet 図>https://www.google.com/search?q=GoogLeNe...
--9個の[[Inceptionモジュール>#o50ffd37]]
-精度とポイント
--精度:6.7%
--ポイント~
深いネットワークを構築できる。
---1*1 Convで軽量になった[[Inceptionモジュール>#o50ffd37]...
---ネットワークの途中からの分岐でクラス分類を行うAuxiliar...
勾配消失問題に対処する効果があり、また、バッチ正規化、ア...
***VGGNet [#b9831538]
このうちの性能が良かった VGG16 または VGG19 が使われてい...
-[[歴史>深層学習(deep learning)#gd4ee195]]
--オックスフォード, 2014
--分類部門で2位
--多層から成るCNN
-論文(14)~
19層より深いものも試したが、19層がベストだった。
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[VGGNet 図>https://www.google.com/search?q=VGGNet&tbm=...
--特徴の説明~
アーキテクチャがシンプル
---VGG16 は 畳み込み13層と全結合3層の計16
---VGG19 は 畳み込み16層と全結合3層の計19
--構造の説明
---入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
---Conv : FN=64, FHW=3*3, P=1(以下Conv3でFWH, P略)
---Conv3 : FN=64
---Max Pooling : 2*2, S=2(以下略) → 112*112*64
---Conv3 : FN=128
---Conv3 : FN=128
---Max Pooling → 56*56*128
---Conv3 : FN=256(VGG16*3、VGG19*4
---Max Pooling → 28*28*256
---Conv3 : FN=512(VGG16*3、VGG19*4
---Max Pooling → 14*14*512
---Conv3 : FN=512(VGG16*3、VGG19*4
---Max Pooling → 7*7*512
---7*7*512 をFlatten → Affineで4096 → Affineで4096 → Affi...
-精度とポイント
--精度:6.8%
--ポイント
---[[3*3 Conv>#wf1a76fb]]だけでこの精度
---奥の階層が汎用的な特徴を獲得しているから~
[[転移学習>深層学習のテクニック#ebe9edcc]]、[[ファイン・...
***ResNet [#x56d1a9e]
[[Residualブロックにおける残差学習の導入>畳み込みニューラ...
-[[歴史>深層学習(deep learning)#ca8279e0]]
--Microsoft Research, 2015
--初めて人間のエラー率 5% を上回る精度を達成。
--[[Residualブロックにおける残差学習の導入>畳み込みニュー...
--ある層で求める最適な出力を学習するのではなく層の入力を...
--入力層から出力層まで伝播する値と入力層の値を足し合わせ...
勾配値がきちんと伝わり、今では1000層といったかなり深い構...
-論文(16)
--[[勾配消失>ニューラルネットワーク#id252e38]]の話は全く...
--[[劣化問題>#z4eca8cf]]の問題から、どのようにResNetへ辿...
--18、34、154、1202層のものを評価して劣化問題が発生しない...
--1202でも学習可能で[[AlexNet>#w1e5ff6b]]よりパラメタ数が...
--あとは、[[Heの初期値>深層学習のテクニック#cda1d3c9]]と[...
-タスク~
[[ILSVRC>#x295ae3d]]
-アーキテクチャ
--[[ResNet 図>https://www.google.com/search?q=ResNet&tbm=...
--[[Residualブロック>#z4eca8cf]]
--構造の説明
---<ResNet-34>~
・入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
・Conv : FN=64, FHW=7*7, S=2~
・Max Pooling : 3*3, S=2~
・Residualブロック(全部のConvのFN= 64, 先頭ConvだけS=2)...
・Residualブロック(全部のConvのFN=128, 先頭ConvだけS=2)...
・Residualブロック(全部のConvのFN=256, 先頭ConvだけS=2)...
・Residualブロック(全部のConvのFN=512, 先頭ConvだけS=2)...
・Global Average Pooling~
・...をFlatten → Affine + Softmaxで1000
---<ResNet-152>~
・入力 : 224*224*3ch([[256*256をデータ拡張>深層学習のテ...
・Conv : FN=256, FHW=7*7, S=2~
・Max Pooling : 3*3, S=2~
・ResidualブロックA(先頭ConvだけS=2)を3層~
・ResidualブロックB(先頭ConvだけS=2)を8層~
・ResidualブロックC(先頭ConvだけS=2)を36層~
・ResidualブロックD(先頭ConvだけS=2)を3層~
・Global Average Pooling~
・...をFlatten → Affine + Softmaxで1000
-精度とポイント
--精度:3.57%
--ポイント:[[Residualブロック>#z4eca8cf]]
-WideResNet
--概要
---層の深さを減らし幅(フィルタ数)を増やす。
---結果としてパラメタ数は増えるが高精度かつ高速。
--[[Residualブロック>#z4eca8cf]]の改良~
表現力を向上させる方法は以下の3つが考えられる。
+++ブロックにより多くの畳み込み層を加える。
+++より多くの特徴マップを加えることで畳み込み層を広げる。
+++畳み込みフィルターサイズを大きくする。~
--検証結果、フィルター数を大きくするのが効果的。
---小さいフィルターの方が効率的と研究では明らかになってい...
---パラメタk:フィルタ数を k 倍する(パラメタ数と計算量...
---シート中のk=1 のとき、元のResNetと同じで、k>1のときWi...
***HighwayNets、DenseNet [#gd254232]
-HighwayNets (2015
--ただ持ち越すだけで良いか?
--持ち越す割合を重みとして一緒に学習する。
--f(x)+x → f(x)+wx
-DenseNet (2016
--全層間をスキップ接続する
--複数のスキップが合流する所は足し算じゃないよね?
***EfficientNet [#fcab09bd]
-Google, 2019
--シンプルな CNN モデルを効率的(Efficient)にスケーリング
--スケーリングとは計算リソースを大きくすることで精度向上...
--パラメタは関係しあっているためバランスをとりながらスケ...
-パラメタ
--深さ:層の深さ、α^φ~
層を深くすることで
---複雑な特徴を捉えられる
---その分学習コストがかかる
---勾配消失問題により精度向上に限界がある
--幅:フィルタ数、β^φ~
広さ(フィルタ数)を広げることで
---細かい特徴を捉えられる
---広さに対して深さが浅いと複雑な特徴を捉え辛い
--解像度:入力画像の大きさ、γ^φ~
解像度が高いほうが細かい特徴を捉えられる
-FLOPSは (α*β^2*γ^2)^ϕに従って増えてしまうため~
α*β^2*γ^2 ≒ 2に制限することで増え方を 2^ϕ で増えるように...
-αβγを[[グリッド・サーチ>データマイニング(DM)- Python#d...
***MobileNet [#wa2069dd]
スマホ用CNNで、ボトルネックの畳み込みの分割で計算量を減ら...
-CNNはパラメタ数が多過ぎるのでパラメタ数削減を考える。
-空間方向とチャネル方向の畳み込みを別々に行いパラメタの数...
--各チャネルを独立に畳み込み、チャネル方向を大きさ1のカー...
--パラメタ数 = FH*FW*FN*CH → = FH*FW*CH + 1*1*CH*FN = FH*...
**CNNの応用([[物体識別>画像処理とコンピュータビジョン(...
***[[物体検出>画像処理とコンピュータビジョン(物体検出)]...
***[[領域検出>画像処理とコンピュータビジョン(領域検出)]...
***[[特定領域検出>画像処理とコンピュータビジョン(特定領...
*参考 [#k630d354]
-コンテンツへのリンク - OSSコンソーシアム~
https://www.osscons.jp/joho108j0-537
--深層学習についてのレポート(CNN編)~
https://1drv.ms/p/s!Amfs5caPP9r5jlAZEt6cg2zg_2cU
--機械学習・深層学習についてのNotebook~
https://github.com/OpenTouryoProject/DxCommon/tree/master...
-[[O'Reilly Japan - ゼロから作るDeep Learning>ニューラル...
(Pythonで学ぶディープラーニングの理論と実装)
**YouTube [#o71ae073]
***[[予備校のノリで学ぶ「大学の数学・物理」>深層学習(dee...
-高校数学からはじめる深層学習入門~
(畳み込みニューラルネットワークの理解)~
https://www.youtube.com/watch?v=xzzTYL90M8s
***[[t-uesugi/videos>深層学習(deep learning)#ga71ee2d]]...
-深層学習概論
--1. 画像の扱い~
https://www.youtube.com/watch?v=V-lVzF7Ue7M
--2. 畳み込み層~
https://www.youtube.com/watch?v=AWUyOdJJ7Sg
--3. プーリング層~
https://www.youtube.com/watch?v=hwCudq8ZCwg
--4. ミニバッチ学習~
https://www.youtube.com/watch?v=nty3w5HnHZ4
--5. ドロップアウトとバッチ正規化~
https://www.youtube.com/watch?v=Dk4wEI8WDPU
***[[AIcia Solid Project>深層学習(deep learning)#z59ed2...
-CNN紹介動画~
https://www.youtube.com/playlist?list=PLhDAH9aTfnxIGIvLci...
-深層学習 ディープラーニングの世界(中にCNNも含まれる~
https://www.youtube.com/playlist?list=PLhDAH9aTfnxKXf__so...
--畳み込み層の本当の意味、あなたは説明できますか?~
https://www.youtube.com/watch?v=vU-JfZNBdYU
--プーリング層 - シンプルだけど大きな役割を担う層~
https://www.youtube.com/watch?v=MLixg9K6oeU
**Qiita [#cb0de391]
-畳み込みニューラルネットワークの最新研究動向 (〜2017)~
https://qiita.com/yu4u/items/7e93c454c9410c4b5427
**[[TensorFlow・Kerasでの実装例>TensorFlow・Keras#m54cf12...
ページ名: