Slide 1

Slide 1 text

CNNによる画像解析の基礎 2022.10.24 東北⼤学 菅沼 雅徳

Slide 2

Slide 2 text

• 2012年の画像認識タスクで深層学習が2位以下の従来⼿法に認識精度で圧勝 • その後も改良が続けられ,2016年時点で同タスク上では⼈間よりも⾼精度に 2 2012年:⼀般物体認識における激震 0 5 10 15 20 25 30 error rate 2010 2011 AlexNet 2012 2013 ZFNet VGG 2014 2015 GoogleNet 2016 SENet 2017 ResNet ImageNet Top 5 Error Rate year ImageNet Error Rate

Slide 3

Slide 3 text

3 深層学習以前に主流であった機械学習のアプローチ 事前知識に基づく 特徴量設計 ⼊⼒画像からの 特徴量抽出 抽出した特徴量を もとに識別 「りんご」を識別したい場合 • りんごを表現する⼿がかり(特徴量)を設計する • 例えば,「⾊の⾚さ」,「物体の丸さ」など • 画像内のどこからその特徴量を抽出するのかを設計する • 抽出された特徴量をもとに「りんご」かどうかを識別 ⼀⾒すると容易そうにみえるが...

Slide 4

Slide 4 text

4 深層学習以前に主流であった機械学習のアプローチ 事前知識に基づく 特徴量設計 ⼊⼒画像からの 特徴量抽出 抽出した特徴量を もとに識別 クラス内の多様性 視点や照明条件の変化 遮蔽や背景領域の乱雑さ 様々な条件に対応しつつ,多種多様な⼀般物体に応⽤可能な 機械学習モデルの⼿動設計は⾮常に困難

Slide 5

Slide 5 text

5 深層学習の考え⽅ • 認識に有効な特徴量表現を⼤量のデータから直接獲得する • 認識の仕⽅・解き⽅ではなく,タスクの設計を⼈間がプログラムする ⼤量のデータ りんごの画像 りんごでない画像 学習 りんごとそれ以外 の果物を⾒分ける 規則性をみつける 識別

Slide 6

Slide 6 text

⼊⼒に対して適切な出⼒を出す関数 6 深層学習の基本概念 深層学習 深層学習 次の1⼿ 深層学習 画像 物体の名称(リンゴ) 盤⾯情報 ⽂章 (A cat riding a skateboard)

Slide 7

Slide 7 text

7 深層学習とは多層ニューラルネットワークを⽤いた⽅法論 … 深層学習 物体の名称(リンゴ) 多層ニューラルネットワーク(以下の例では,画像→物体の確率に変換する関数)

Slide 8

Slide 8 text

8 よく⽤いられる多層ニューラルネットワーク例 … Fully-connected network Convolutional neural network (CNN) Transformer Long-short term memory (LSTM)

Slide 9

Slide 9 text

畳み込みニューラルネットワーク(Convolutional Neural Network; CNN) • 畳み込み層,プーリング層,全結合層で主に構成 9 画像解析でよく⽤いられるのはCNN 畳み込み層 • フィルタによって画像から特徴を抽出する操作 プーリング層 • 情報を集約する操作(結果として画像のサイズが⼩さくなることが多い)

Slide 10

Slide 10 text

10 What computers see 画素(pixel) RGBの3原⾊で1画素の⾊を表現する. • 例えば,RGB=(200,40,90)のように 1画素を表現する • それぞれ⾚⾊,緑⾊,⻘⾊の強さを ⽰す 画像は画素(pixel)の集合で表現される • ⾊の濃淡値を表す数値(画素)が規則的に並んでいるだけ • iPhone8で撮影した画像は,36578304 = 4032×3024×3 個の数値が並んでいる

Slide 11

Slide 11 text

• 畳み込みは画像とフィルタ間で定義される積和計算 • 𝑢!,# = ∑ $%& '!() ∑ *%& '"() 𝑥!+$,#+* ℎ$,* 11 畳み込み 9×9画素の⼊⼒画像 フィルタ 出⼒画像

Slide 12

Slide 12 text

• 畳み込みは画像とフィルタ間で定義される積和計算 • 𝑢&,& = ∑ $%& '!() ∑ *%& '"() 𝑥&+$,&+* ℎ$,* = 𝑥&,& ∗ ℎ&,& + 𝑥&,) ∗ ℎ&,) + ⋯ + 𝑥.,. ∗ ℎ.,. = 21 ∗ −0.5 + 45 ∗ 0.3 + ⋯ + 15 ∗ (−1.3) 12 畳み込み 9×9画素の⼊⼒画像 フィルタ 出⼒画像

Slide 13

Slide 13 text

• 畳み込みは画像とフィルタ間で定義される積和計算 • 𝑢&,) = ∑ $%& '!() ∑ *%& '"() 𝑥&+$,)+* ℎ$,* = 𝑥&,) ∗ ℎ&,& + 𝑥&,. ∗ ℎ&,) + ⋯ + 𝑥.,/ ∗ ℎ.,. = 45 ∗ −0.5 + 64 ∗ 0.3 + ⋯ + 56 ∗ (−1.3) 13 畳み込み 9×9画素の⼊⼒画像 フィルタ 出⼒画像

Slide 14

Slide 14 text

• 畳み込みは画像とフィルタ間で定義される積和計算 • 𝑢&,. = ∑ $%& '!() ∑ *%& '"() 𝑥&+$,.+* ℎ$,* = 𝑥&,. ∗ ℎ&,& + 𝑥&,/ ∗ ℎ&,) + ⋯ + 𝑥.,0 ∗ ℎ.,. = 64 ∗ −0.5 + 45 ∗ 0.3 + ⋯ + 51 ∗ (−1.3) 14 畳み込み 9×9画素の⼊⼒画像 フィルタ 出⼒画像

Slide 15

Slide 15 text

• 畳み込みは画像とフィルタ間で定義される積和計算 • 𝑢1,1 = ∑ $%& '!() ∑ *%& '"() 𝑥1+$,1+* ℎ$,* = 𝑥1,1 ∗ ℎ&,& + 𝑥1,2 ∗ ℎ&,) + ⋯ + 𝑥3,3 ∗ ℎ.,. = 4 ∗ −0.5 + 15 ∗ 0.3 + ⋯ + 63 ∗ (−1.3) 15 畳み込み 9×9画素の⼊⼒画像 フィルタ 出⼒画像

Slide 16

Slide 16 text

16 畳み込みの働き • フィルタがもつ濃淡パターンを画像から抽出する • さまざまなフィルタを適⽤することで,画像解析に有効な特徴を抽出可能 • 特定の形状や⾊を抽出することも可能 × × ⽔平成分を抽出 垂直成分を抽出

Slide 17

Slide 17 text

• フィルタ適⽤後に画像サイズが変わらないようにするための措置 • ⼊⼒画像の上下左右端に「ふち」を⼈⼯的に付与してから,フィルタを適⽤ • ふちにはゼロを挿⼊するゼロパディングがよく使⽤される 17 パディング × =

Slide 18

Slide 18 text

• フィルタを適⽤する際に何画素ずつずらして適⽤するかの値 • ストライドの値𝑠によって,出⼒画像サイズが) 4 倍になる(⼩数点以下切り捨て) • 𝑠 = 2のとき,出⼒画像サイズは! " になる 18 ストライド × =

Slide 19

Slide 19 text

• フィルタを適⽤する際に何画素ずつずらして適⽤するかの値 • ストライドの値𝑠によって,出⼒画像サイズが) 4 倍になる(⼩数点以下切り捨て) • 𝑠 = 2のとき,出⼒画像サイズは! " になる 19 ストライド × =

Slide 20

Slide 20 text

• フィルタを適⽤する際に何画素ずつずらして適⽤するかの値 • ストライドの値𝑠によって,出⼒画像サイズが) 4 倍になる(⼩数点以下切り捨て) • 𝑠 = 2のとき,出⼒画像サイズは! " になる 20 ストライド × =

Slide 21

Slide 21 text

複数のフィルタを並⾏して適⽤する • 下記は,RGBカラー画像に畳み込み層(𝑁種類のフィルタ有する)を適⽤する例 • 計3×𝑁枚のフィルタを適⽤し,𝑁枚の出⼒結果(特徴マップ)を得る 21 畳み込み層(Convolution layer) … … × × × 𝐻 𝑊 3 𝑊! 𝐻! 𝑛 = 0 𝑛 = 1 𝑛 = 𝑁 𝑁 正規化 & 活性化関数 … … 𝑁 … … 3

Slide 22

Slide 22 text

各フィルタでは,各チャネルについて並⾏に畳み込みを実⾏し,演算結果を画素ごとに 全チャネルにわたって加算する • 結果として,各フィルタ群からは1枚の特徴マップ(出⼒結果)が得られる 22 畳み込み層(Convolution layer) … … … … × × × 𝐻 𝑊 3 𝑊! 𝐻! 𝑛 = 0 𝑛 = 1 𝑛 = 𝑁 … 𝑁 正規化 & 活性化関数 … … … 𝑢!,#,9 = 5 :%& /() 5 $%& '!() 5 *%& '"() 𝑥!+$,#+*,: ℎ$,*,:,9 𝑥 𝑢!,#,$ ℎ%,&,',$ 𝐻 𝑊 3

Slide 23

Slide 23 text

⼀般化すると • ⼊⼒画像𝑀枚に対して,𝑁種類のフィルタを有する畳み込み層を適⽤すると,𝑀×𝑁枚の フィルタが適⽤され,𝑁枚の特徴マップが得られる • この𝑁のことをチャネル数と呼び,ユーザで設定する必要がある 23 畳み込み層(Convolution layer) … … … … … … × × × 𝑀 𝐻 𝑊 𝑀 𝑊! 𝐻! 𝑛 = 0 𝑛 = 1 𝑛 = 𝑁 … 𝑁 正規化 & 活性化関数 … … … 𝑁

Slide 24

Slide 24 text

各フィルタでは,各チャネルについて並⾏に畳み込みを実⾏し,演算結果を画素ごとに 全チャネルにわたって加算する • 結果として,各フィルタ群からは1枚の特徴マップ(出⼒結果)が得られる 24 畳み込み層(Convolution layer) … … … … … … × × × 𝑀 𝐻 𝑊 𝑀 𝑊! 𝐻! 𝑛 = 0 𝑛 = 1 𝑛 = 𝑁 … 𝑁 正規化 & 活性化関数 … … … 𝑢!,#,9 = 5 :%& >() 5 $%& '!() 5 *%& '"() 𝑥!+$,#+*,: ℎ$,*,:,9 𝑥 𝑢!,#,$ ℎ%,&,',$

Slide 25

Slide 25 text

• 現実データの多くが⾮線形性を有するため • ReLU関数が畳み込み処理後によく使⽤される • 𝑓 𝑥 = max(0, 𝑥) • 画素ごとに適⽤ • 負の画素値をすべてゼロに変換 25 活性化関数(⾮線形性の導⼊) 0 𝑥 𝑓(𝑥) ReLU ※ 負の画素値は⿊⾊で表⽰,0以上の画素値は灰⾊〜⽩⾊で表⽰

Slide 26

Slide 26 text

• 画像内の局所領域の情報を集約する役⽬と解像度を下げる役⽬ • 特徴量の位置変化に対する不変性を確保 • max pooling, average poolingがよく使⽤される • 下記は2×2のフィルタをストライド2で適⽤した例 26 プーリング層 Max pooling Average pooling

Slide 27

Slide 27 text

畳み込みニューラルネットワーク(Convolutional Neural Network; CNN) • 複数の畳み込み層,プーリング層,全結合層で主に構成 27 CNNの構造 畳み込み層 • フィルタ数を徐々に増やしていくことが多い(e.g. 32 → 64 → 128) プーリング層 • 画像サイズを1/2にしていくことが多い

Slide 28

Slide 28 text

階層的な特徴抽出が可能(エッジ→顔のパーツ→顔全体) 28 CNNの構造 引⽤ [H. Le+, Unsupervised Learning of Hierarchical Representations with Convolutional Deep Belief Networks, 2011]

Slide 29

Slide 29 text

特徴マップを1次元ベクトルに変換する • よく使⽤される変換⽅法は下記の2通り • Flatten • (𝐻, 𝑊, 𝐶) → (𝐻×𝑊×𝐶). 単純に各要素を⼀列に並べ替えるだけ. • Global average pooling • (𝐻, 𝑊, 𝐶) → (1,1, 𝐶) → (𝐶).空間情報全体の平均値をとることで圧縮. 29 全結合層 for 画像分類 Conv Pooling Conv Pooling Conv Fully connected リンゴである確率 ミカンである確率 バナナである確率 イチゴである確率

Slide 30

Slide 30 text

30 全結合層 for 画像分類 … • 各⼊⼒要素𝑥! と対応する重み𝑤! との積和計算 • いわゆる標準的なニューラルネットワーク • 出⼒ノード数○は分類したいクラス数と⼀致

Slide 31

Slide 31 text

Softmax関数で各クラスに属する確率表現に変換 • 各クラスらしさを0.0~1.0の数値で表現 31 出⼒は確率表現にする(画像分類の場合) 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥!) = eC# ∑D eC$ … りんごである確率(=softmax(𝑥( )) みかんである確率(=softmax(𝑥) )) ばななである確率(=softmax(𝑥* )) いちごである確率(=softmax(𝑥+ )) 𝑥( 𝑥) 𝑥* 𝑥+ 最⼤値をもつノードのクラスを 最終的な予測結果とする

Slide 32

Slide 32 text

• 最終的な出⼒結果はフィルタと全結合層の重み𝒘𝒊 に依存する • 最初はランダムに重みの値を設定するため,でたらめな出⼒結果が得られる • そのため,正しい出⼒結果となるように,重み𝒘! の値を調整する • これをCNNの学習や最適化などと呼ぶ 32 CNNの学習 Conv Pooling Conv Pooling Conv Fully connected りんご 0.2 みかん 0.2 ばなな 0.1 いちご 0.5

Slide 33

Slide 33 text

• 正しい出⼒結果 = ⼈間が与えた正解ラベル • CNNの出⼒が正解ラベルと⼀致するように,重みを調整する • 具体的には,現在のNNの出⼒C 𝒚と正解ラベル𝒚との誤差を計算し,その誤差が ⼩さくなるように 𝒘𝒊 を調整する 33 CNNの学習 … F 𝑦( = 0.2 F 𝑦) = 0.2 F 𝑦* = 0.1 F 𝑦+ = 0.5 𝑥( 𝑥) 𝑥* 𝑥+ 𝑦( = 1.0 𝑦) = 0.0 𝑦* = 0.0 𝑦+ = 0.0 CNNの出⼒& 𝒚 正解ラベル𝒚 … この誤差を最⼩化したい

Slide 34

Slide 34 text

• 損失関数を⽤いて出⼒C 𝒚とラベル𝒚の誤差𝐿を定量的に算出する • 画像分類では,クロスエントロピー関数が使⽤される 34 損失関数(loss function) … F 𝑦( = 0.2 F 𝑦) = 0.2 F 𝑦* = 0.1 F 𝑦+ = 0.5 𝑥( 𝑥) 𝑥* 𝑥+ 𝑦( = 1.0 𝑦) = 0.0 𝑦* = 0.0 𝑦+ = 0.0 CNNの出⼒& 𝒚 正解ラベル𝒚 … 𝐿 = 𝑐𝑟𝑜𝑠𝑠 𝑒𝑛𝑡𝑟𝑜𝑝𝑦 C 𝒚, 𝒚 = − 5 !%) N 𝑦OlogO 𝑦! 𝐿 = −(1.0 ∗ log 0.2 + 0.0 ∗ log 0.2 +0.0 ∗ log 0.1 + 0.0 ∗ log 0.5) = 0.69897

Slide 35

Slide 35 text

誤差𝐿に関する重み𝒘! の勾配情報をもとに更新 • 勾配: #$ #%! • 𝑤& を微増させたときに,誤差𝐿の値が増加する⽅向を⽰している = 𝑤& を勾配⽅向と逆に更新することで,誤差𝐿を減らせることが可能! = 𝑤& ← 𝑤& − #$ #%! 35 重みの調整⽅法(勾配降下法) 直感的な理解 • 誤差𝐿は,𝐿 = 𝑤)で表され,𝐿 = 0となる𝑤の値を 求めたいと仮定 • 誤差𝐿の𝑤に関する微分は,,- ,. = 2𝑤 となる • 右図のように,𝑤がどの位置にあろうと, 𝑤 ← 𝑤 − ,- ,. で更新すれば, 𝐿 → 0になることが わかる

Slide 36

Slide 36 text

各重みの勾配を計算する際に,⼊⼒に近い重みほど計算が⾯倒 • 深い⼊れ⼦構造になるため,微分の連鎖規則を何度も繰り返す必要がある • 7 𝒚 = 𝑓 𝑾'𝒛" = 𝑓 𝑾' 𝑓 𝑾"𝒛! = 𝑓 𝑾' 𝑓 𝑾"𝑓(𝑾!𝒛() 36 誤差逆伝播法(Back propagation) 7 𝒚 出⼒ 𝑾) 𝑾. 𝑾/ 𝒛( 𝒛) 𝒛$

Slide 37

Slide 37 text

3層⽬の𝑗番⽬の重み𝑊 / #!の損失𝐿に関する勾配 ^_ ^' % は, • #$ #)" #! = #$ # * +# < # * +# #)" #! = = 𝑦, − 𝑦, < # * +" # #)" # = = 𝑦, − 𝑦, < 𝑧" & 37 誤差逆伝播法(Back propagation) 7 𝒚 = 𝑾'𝒛" 出⼒ 𝑾) 𝑾. 𝑾/ 𝒛( 𝒛) 𝒛$ ※ F 𝑦# = 𝑊 * #!𝑧) ! 𝑧) ! 𝑊 * #! F 𝑦# 活性化関数の微分については省略

Slide 38

Slide 38 text

2層⽬の𝑗番⽬の重み𝑊 . #!の損失𝐿に関する勾配 ^_ ^' ' は, • #$ #)$ #! = #$ #-$ # < #-$ # #)$ #! = ∑. #$ # * +% < # * +% #-$ # < 𝑧! & = ∑. = 𝑦. − 𝑦. < 𝑓/(𝑧" ,) < 𝑊 ' ., < 𝑧! & 38 誤差逆伝播法(Back propagation) 7 𝒚 = 𝑾'𝒛" 出⼒ 𝑾) 𝑾. 𝑾/ 𝒛( 𝒛) 𝒛$ ※ 𝑧) # = 𝑊 ) #!𝑧( ! 𝑧( ! 𝑊 ) #! 𝑧) # F 𝑦/ = a # 𝑊 * /# 𝑧) #

Slide 39

Slide 39 text

𝑙層⽬の𝑗番⽬の重み𝑊 b #!の損失𝐿に関する勾配 ^_ ^' ( は, • #$ #) & #! = #$ #- & # < #-& # #) & #! = ∑. #$ #-&'( % < #-&'( % #- & # < 𝑧01! & 39 誤差逆伝播法(Back propagation) … 𝑾02! 𝒛0 𝒛01( 𝒛$ ※ 𝑧0 # = 𝑊 0 #!𝑧02( ! 𝑧0 ! 𝑊 0 #! 𝑧01( # …

Slide 40

Slide 40 text

40 誤差逆伝播法(Back propagation) … 𝑾02! 𝒛0 𝒛01( 𝒛$ 𝑧0 ! 𝑊 0 #! 𝑧01( # ∆0 , ≡ #$ #- & # とおくと, … ここで #$ #- & # = ∑. #$ #-&'( % < #-&'( % #- & # に着⽬して, ∆0 ,= ∑. ∆02! . < #-&'( % #- & # つまり,上層の∆𝒍2𝟏 で∆𝒍 が求まる 同様に,∆02!, ∆02" …もそれらの上層から 求まり,最終的には出⼒層での #$ #- ) # が 陽に求まれば, 𝑙層での勾配 #$ #- & # が求まる 勾配計算必要な情報は出⼒層から⼊⼒層の⽅向に 伝搬される(順伝搬とは逆⽅向=誤差逆伝播法) 𝜕𝐿 𝜕𝑧 - # = 𝑧- # − 𝑦# ※ クロスエントロピーの場合

Slide 41

Slide 41 text

まとめると, 𝑙層⽬の𝑗番⽬の重み𝑊 b #!の損失𝐿に関する勾配 ^_ ^' ( は下記で求まる ^_ ^' ( = ^_ ^d ( & T ^d ( & ^' ( = ∆b # T 𝑧b() ! 41 誤差逆伝播法(Back propagation) … 𝑾02! 𝒛0 𝒛01( 𝒛$ ※ 𝑧0 # = 𝑊 0 #!𝑧02( ! 𝑧0 ! 𝑊 0 #! 𝑧01( # … • ∆0 # は上層からの計算結果を利⽤ • ∆0 #を下層に伝搬させていくことで, 効率良く各層での勾配が計算可能

Slide 42

Slide 42 text

深層学習モデルの学習 = ⼤量の学習データ 𝐷 = { 𝒙) , 𝑦) , … , 𝒙f , 𝑦f } で 計算される損失関数の値を,ネットワークのパラメータ𝒘! について最⼩化 • 𝑤& ← 𝑤& − 𝛾 #$ #%! • 並列計算資源の有効活⽤と局所解リスク低減のために,少数サンプル(ミニバッチ)で 構成されるサンプル集合 𝐷5 = 𝒙!, 𝑦! , … , 𝒙5, 𝑦5 , (𝑀 ≪ 𝑁) を⽤いて,最適化する • 𝐿 = ! 5 ∑6∈8* 𝐿6 42 確率的勾配降下法(SGD) • ミニバッチを順番に𝐷!, 𝐷", … , となめていき,元の学習データすべてを⼀巡したら, 再度最初から順番になめていく,ということを繰り返す • 学習データを⼀巡することをエポック(epoch)と呼び,通常数⼗〜数百epochの学習を実施する

Slide 43

Slide 43 text

• 畳み込み処理後の特徴マップに対して正規化を⾏うことで,学習安定化 • バッチ正則化(Batch normalization)がよく使われる • ミニバッチ内のサンプルで算出した平均𝜇9 ,分散𝜎9 を⽤いて,下記のように正規化する • ̂ 𝑧!#g : = d#&) * (h) i) '+j + 𝛽g 43 学習の安定化のために:正規化 ※ 𝜇3 = ( 456 ∑!,#,' 𝑧!#3 ' 分散も同様に算出 𝑀: ミニバッチサイズ 𝐻, 𝑊: 画像の縦横サイズ

Slide 44

Slide 44 text

• 多層のCNNを学習させるためにはほぼ必須 • ⼊⼒と畳み込み結果の残差を学習対象にする • 残差学習を利⽤したモデルをResNet[1]と呼ぶ 44 学習の安定化のために:残差学習 conv layer conv layer + Res-block conv layer Res-block, /2 Res-block Res-block, /2 image GAP+softmax [1] He+, Deep Residual Learning for Image Recognition, CVPR, 2016

Slide 45

Slide 45 text

画像 → カテゴリ • 画像分類 • 異常検知(画像単位) など 45 CNNの応⽤例 画像 → カテゴリ+𝜶 • 物体検出 • パーツ検出 など 画像 → 画像 • セグメンテーション • 深度推定 • 画像⽣成 など 粒度 Apple 物体検出 semantic segmentation 画像分類

Slide 46

Slide 46 text

• CNNを⽤いた⼯業製品などの画素単位での異常検知 • 実際の現場では,⼤量の異常画像が集まらないため,正常画像のみを⽤いて 「正常らしさ」をCNNでモデル化するアプローチが主流 46 CNNによる異常検知への応⽤ 異常度 異常サンプル 正常サンプル CNN 異常画像 正常画像 出⼒結果 MVTec AD [Bergmann+, CVPRʼ19]より引⽤

Slide 47

Slide 47 text

強⼒な「正常らしさ」のモデル化⽅法[2] • ⼤規模⾃然画像データセット(ImageNet)で画像分類を解くCNNを通常通り学習 • 異常検知には学習済みのCNNの中間特徴マップを利⽤ • 各画素が「正常らしさ」を表現していると仮定 • 異常画像の各画素値と正常画像の画素値の距離を測り,しきい値以上なら異常と判定 • ⾮常にシンプルだが強⼒ 47 CNNによる異常検知 異常度 異常サンプル 正常サンプル CNN Pretrained CNN 学習 通常の画像分類 異常検知フェーズ [2] Reiss+, PANDA: Adapting Pretrained Features for Anomaly Detection and Segmentation, CVPR, 2021

Slide 48

Slide 48 text

48 異常検知結果例 ⼊⼒画像 モデルの出⼒ 異常画像 モデルの出⼒ 正常画像 [2] Reiss+, PANDA: Adapting Pretrained Features for Anomaly Detection and Segmentation, CVPR, 2021

Slide 49

Slide 49 text

• 画像内に映っている物体を検出するタスク • 物体のカテゴリに加えて,物体が位置している場所もCNNで予測 • 画像分類+物体位置の推定 • 各物体のカテゴリと位置情報をラベルとして与える 49 CNNによる物体検出

Slide 50

Slide 50 text

50 CNNによる物体検出例

Slide 51

Slide 51 text

51 CNNによる物体検出例

Slide 52

Slide 52 text

画像内の各画素のカテゴリを推定 • 画素ごとの画像分類とみなせる • ラベリングコスト,計算コストが⾮常に⾼い 52 CNNによるセマンティックセグメンテーション https://ai.googleblog.com/2018/10/fluid-annotation-exploratory-machine.html CNNはencoder-decoder構造がよく使⽤される • 徐々に縮⼩→徐々に拡⼤していく Long+, Fully Convolutional Networks for Semantic Segmentation, CVPR, 2015

Slide 53

Slide 53 text

53 CNNによるセマンティックセグメンテーション例 ⼊⼒ 正解ラベル CNNの出⼒ L.-C. Chen+, Deeplab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs. TPAMI, 2017

Slide 54

Slide 54 text

Transposed Convolution (Deconvolutionと呼ぶ論⽂もある) • 畳み込み層による画像の拡⼤ • 学習可能な画像の拡⼤ • 代替⽅法としては,バイリニア補間などが挙げられる(学習不要) 54 畳み込み層による画像の拡⼤ https://github.com/vdumoulin/conv_arithmetic#transposed-convolution-animations

Slide 55

Slide 55 text

clean画像とdistorted画像のペアによる教師あり学習 • distorted画像は⼈⼯的に作ることが多い • Ground truthを取得するのが難しいため 55 CNNによる画像修復 error minimization clean output distorted synthesize CNN

Slide 56

Slide 56 text

56 CNNによる画像修復例 Blurry Ours Sharp DeBlurGAN Table 2: Results for motion blur removal. Distorted DeblurGAN [CVPR, 2018] Clean Distorted AttentiveGAN [CVPR, 2018] DuRN [Liu+, CVPR, 2019] Clean Table 6: Results for raindrop removal. Pix2Pix (CVPR’17) AttGAN (CVPR’18) ble 6: Results for raindrop removal. Pix2Pix (CVPR’17) AttGAN (CVPR’18) Ours able 6: Results for raindrop removal. Pix2Pix (CVPR’17) AttGAN (CVPR’18) Ours Ours Motion blur removal Raindrop removal DuRN [Liu+, CVPR, 2019]

Slide 57

Slide 57 text

57 解決すべき課題 学習コスト 学習には⼤量のデータとラベルのペアが基本的には必要 • ラベル付けは想像以上に⼤変な作業(数万〜数百万データ) • そもそもデータ⾃体が⼿に⼊りづらいタスクも多数存在 • ラベル付きデータが無くてもできることはあるが,あるに越したことはない 学習にはGPU搭載の計算機を必要とする • 数⼗万〜数千万円 • ある程度の資⾦がないと試⾏錯誤できない • 公開済みのモデルも多々あるので,⾃前で学習する必要がないこともある https://blogs.nvidia.co.jp/2019/11/26/record-gpu-accelerated-supercomputers-top500/ https://ai.googleblog.com/2018/10/fluid-annotation-exploratory-machine.html

Slide 58

Slide 58 text

Adversarial example [Goodfellow+, ICLRʼ15] • 少しのノイズを加えただけで,パンダをテナガザルと誤認識する • こういったノイズを⽣成することは簡単 58 解決すべき課題 深層学習は万能ではない DNNの予測: パンダ DNNの予測: テナガザル もとの画像 ノイズ ノイズ加算後の画像

Slide 59

Slide 59 text

Adversarial example for automated cars • ⾃動運転⾞のライン制御に悪影響を与えることも可能 59 解決すべき課題 深層学習は万能ではない https://sites.google.com/view/cav-sec/drp-attack Sato+, Dirty Road Can Attack: Security of Deep Learning based Automated Lane Centering under Physical-World Attack, USENIX Security Symposium, 2021

Slide 60

Slide 60 text

⼈間にとっては同じカテゴリでも,深層学習モデルに とっては違うカテゴリと認識する例 60 解決すべき課題 ⼈間の知能との間には⼤きなギャップ https://arxiv.org/abs/2004.07780 深層学習モデルにとっては 同じカテゴリに認識する例

Slide 61

Slide 61 text

CNNによる画像解析の基礎 • 畳み込みによる特徴抽出,プーリングによる情報集約 • 誤差逆伝播法+確率的勾配降下法による効率的な学習 • 学習安定化のためのテクニック(バッチ正規化,残差学習) CNNによる画像解析例 • 画像分類,物体検出,異常検知 • 学習データがしっかり集まる場合は⾮常に有⽤ 深層学習の課題 • 学習コストが⾼い • ⼈間の認知能⼒とのギャップ 61 まとめ