Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CNNによる画像認識の基礎

 CNNによる画像認識の基礎

Masanori Suganuma

October 24, 2022
Tweet

More Decks by Masanori Suganuma

Other Decks in Research

Transcript

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

    View Slide

  2. • 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 7
    深層学習とは多層ニューラルネットワークを⽤いた⽅法論

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

    View Slide

  8. 8
    よく⽤いられる多層ニューラルネットワーク例

    Fully-connected network Convolutional neural network (CNN)
    Transformer
    Long-short term memory (LSTM)

    View Slide

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

    View Slide

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

    View Slide

  11. • 畳み込みは画像とフィルタ間で定義される積和計算
    • 𝑢!,#
    = ∑
    $%&
    '!()

    *%&
    '"() 𝑥!+$,#+*
    ℎ$,*
    11
    畳み込み
    9×9画素の⼊⼒画像
    フィルタ
    出⼒画像

    View Slide

  12. • 畳み込みは画像とフィルタ間で定義される積和計算
    • 𝑢&,&
    = ∑
    $%&
    '!()

    *%&
    '"() 𝑥&+$,&+*
    ℎ$,*
    = 𝑥&,&
    ∗ ℎ&,&
    + 𝑥&,)
    ∗ ℎ&,)
    + ⋯ + 𝑥.,.
    ∗ ℎ.,.
    = 21 ∗ −0.5 + 45 ∗ 0.3 + ⋯ + 15 ∗ (−1.3)
    12
    畳み込み
    9×9画素の⼊⼒画像
    フィルタ
    出⼒画像

    View Slide

  13. • 畳み込みは画像とフィルタ間で定義される積和計算
    • 𝑢&,)
    = ∑
    $%&
    '!()

    *%&
    '"() 𝑥&+$,)+*
    ℎ$,*
    = 𝑥&,)
    ∗ ℎ&,&
    + 𝑥&,.
    ∗ ℎ&,)
    + ⋯ + 𝑥.,/
    ∗ ℎ.,.
    = 45 ∗ −0.5 + 64 ∗ 0.3 + ⋯ + 56 ∗ (−1.3)
    13
    畳み込み
    9×9画素の⼊⼒画像
    フィルタ
    出⼒画像

    View Slide

  14. • 畳み込みは画像とフィルタ間で定義される積和計算
    • 𝑢&,.
    = ∑
    $%&
    '!()

    *%&
    '"() 𝑥&+$,.+*
    ℎ$,*
    = 𝑥&,.
    ∗ ℎ&,&
    + 𝑥&,/
    ∗ ℎ&,)
    + ⋯ + 𝑥.,0
    ∗ ℎ.,.
    = 64 ∗ −0.5 + 45 ∗ 0.3 + ⋯ + 51 ∗ (−1.3)
    14
    畳み込み
    9×9画素の⼊⼒画像
    フィルタ
    出⼒画像

    View Slide

  15. • 畳み込みは画像とフィルタ間で定義される積和計算
    • 𝑢1,1
    = ∑
    $%&
    '!()

    *%&
    '"() 𝑥1+$,1+*
    ℎ$,*
    = 𝑥1,1
    ∗ ℎ&,&
    + 𝑥1,2
    ∗ ℎ&,)
    + ⋯ + 𝑥3,3
    ∗ ℎ.,.
    = 4 ∗ −0.5 + 15 ∗ 0.3 + ⋯ + 63 ∗ (−1.3)
    15
    畳み込み
    9×9画素の⼊⼒画像
    フィルタ
    出⼒画像

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 複数のフィルタを並⾏して適⽤する
    • 下記は,RGBカラー画像に畳み込み層(𝑁種類のフィルタ有する)を適⽤する例
    • 計3×𝑁枚のフィルタを適⽤し,𝑁枚の出⼒結果(特徴マップ)を得る
    21
    畳み込み層(Convolution layer)


    ×
    ×
    ×
    𝐻
    𝑊 3
    𝑊!
    𝐻!
    𝑛 = 0
    𝑛 = 1
    𝑛 = 𝑁
    𝑁
    正規化 &
    活性化関数


    𝑁
    … …
    3

    View Slide

  22. 各フィルタでは,各チャネルについて並⾏に畳み込みを実⾏し,演算結果を画素ごとに
    全チャネルにわたって加算する
    • 結果として,各フィルタ群からは1枚の特徴マップ(出⼒結果)が得られる
    22
    畳み込み層(Convolution layer)




    ×
    ×
    ×
    𝐻
    𝑊 3
    𝑊!
    𝐻!
    𝑛 = 0
    𝑛 = 1
    𝑛 = 𝑁

    𝑁
    正規化 &
    活性化関数 …


    𝑢!,#,9
    = 5
    :%&
    /()
    5
    $%&
    '!()
    5
    *%&
    '"()
    𝑥!+$,#+*,:
    ℎ$,*,:,9
    𝑥 𝑢!,#,$
    ℎ%,&,',$
    𝐻
    𝑊
    3

    View Slide

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




    ×
    ×
    ×
    𝑀
    𝐻
    𝑊 𝑀
    𝑊!
    𝐻!
    𝑛 = 0
    𝑛 = 1
    𝑛 = 𝑁

    𝑁
    正規化 &
    活性化関数 …


    𝑁

    View Slide

  24. 各フィルタでは,各チャネルについて並⾏に畳み込みを実⾏し,演算結果を画素ごとに
    全チャネルにわたって加算する
    • 結果として,各フィルタ群からは1枚の特徴マップ(出⼒結果)が得られる
    24
    畳み込み層(Convolution layer)
    … …




    ×
    ×
    ×
    𝑀
    𝐻
    𝑊 𝑀
    𝑊!
    𝐻!
    𝑛 = 0
    𝑛 = 1
    𝑛 = 𝑁

    𝑁
    正規化 &
    活性化関数 …


    𝑢!,#,9
    = 5
    :%&
    >()
    5
    $%&
    '!()
    5
    *%&
    '"()
    𝑥!+$,#+*,:
    ℎ$,*,:,9
    𝑥 𝑢!,#,$
    ℎ%,&,',$

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. 30
    全結合層 for 画像分類

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

    View Slide

  31. Softmax関数で各クラスに属する確率表現に変換
    • 各クラスらしさを0.0~1.0の数値で表現
    31
    出⼒は確率表現にする(画像分類の場合)
    𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥!) =
    eC#
    ∑D
    eC$

    りんごである確率(=softmax(𝑥(
    ))
    みかんである確率(=softmax(𝑥)
    ))
    ばななである確率(=softmax(𝑥*
    ))
    いちごである確率(=softmax(𝑥+
    ))
    𝑥(
    𝑥)
    𝑥*
    𝑥+
    最⼤値をもつノードのクラスを
    最終的な予測結果とする

    View Slide

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

    View Slide

  33. • 正しい出⼒結果 = ⼈間が与えた正解ラベル
    • 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の出⼒&
    𝒚 正解ラベル𝒚

    この誤差を最⼩化したい

    View Slide

  34. • 損失関数を⽤いて出⼒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

    View Slide

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

    View Slide

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

    View Slide

  37. 3層⽬の𝑗番⽬の重み𝑊
    /
    #!の損失𝐿に関する勾配 ^_
    ^'
    %

    は,

    #$
    #)"
    #!
    = #$
    # *
    +#
    < # *
    +#
    #)"
    #!
    = =
    𝑦, − 𝑦, < # *
    +"
    #
    #)"
    #
    = =
    𝑦, − 𝑦, < 𝑧"
    &
    37
    誤差逆伝播法(Back propagation)
    7
    𝒚 = 𝑾'𝒛"
    出⼒
    𝑾)
    𝑾. 𝑾/
    𝒛(
    𝒛)
    𝒛$
    ※ F
    𝑦# = 𝑊
    *
    #!𝑧)
    !
    𝑧)
    !
    𝑊
    *
    #!
    F
    𝑦#
    活性化関数の微分については省略

    View Slide

  38. 2層⽬の𝑗番⽬の重み𝑊
    .
    #!の損失𝐿に関する勾配 ^_
    ^'
    '

    は,

    #$
    #)$
    #!
    = #$
    #-$
    #
    < #-$
    #
    #)$
    #!
    = ∑.
    #$
    # *
    +%
    < # *
    +%
    #-$
    #
    < 𝑧!
    &
    = ∑.
    =
    𝑦. − 𝑦. < 𝑓/(𝑧"
    ,) < 𝑊
    '
    ., < 𝑧!
    &
    38
    誤差逆伝播法(Back propagation)
    7
    𝒚 = 𝑾'𝒛"
    出⼒
    𝑾)
    𝑾. 𝑾/
    𝒛(
    𝒛)
    𝒛$
    ※ 𝑧)
    # = 𝑊
    )
    #!𝑧(
    !
    𝑧(
    !
    𝑊
    )
    #!
    𝑧)
    #
    F
    𝑦/
    = a
    #
    𝑊
    *
    /# 𝑧)
    #

    View Slide

  39. 𝑙層⽬の𝑗番⽬の重み𝑊
    b
    #!の損失𝐿に関する勾配 ^_
    ^'
    (

    は,

    #$
    #)
    &
    #!
    = #$
    #-
    &
    #
    < #-&
    #
    #)
    &
    #!
    = ∑.
    #$
    #-&'(
    %
    < #-&'(
    %
    #-
    &
    #
    < 𝑧01!
    &
    39
    誤差逆伝播法(Back propagation)
    … 𝑾02!
    𝒛0
    𝒛01(
    𝒛$
    ※ 𝑧0
    # = 𝑊
    0
    #!𝑧02(
    !
    𝑧0
    !
    𝑊
    0
    #!
    𝑧01(
    #

    View Slide

  40. 40
    誤差逆伝播法(Back propagation)
    … 𝑾02!
    𝒛0
    𝒛01(
    𝒛$
    𝑧0
    !
    𝑊
    0
    #!
    𝑧01(
    #
    ∆0
    , ≡ #$
    #-
    &
    #
    とおくと,

    ここで #$
    #-
    &
    #
    = ∑.
    #$
    #-&'(
    %
    < #-&'(
    %
    #-
    &
    #
    に着⽬して,
    ∆0
    ,= ∑.
    ∆02!
    . < #-&'(
    %
    #-
    &
    #
    つまり,上層の∆𝒍2𝟏
    で∆𝒍
    が求まる
    同様に,∆02!, ∆02" …もそれらの上層から
    求まり,最終的には出⼒層での #$
    #-
    )
    #

    陽に求まれば, 𝑙層での勾配 #$
    #-
    &
    #
    が求まる
    勾配計算必要な情報は出⼒層から⼊⼒層の⽅向に
    伝搬される(順伝搬とは逆⽅向=誤差逆伝播法)
    𝜕𝐿
    𝜕𝑧
    -
    #
    = 𝑧-
    # − 𝑦#
    ※ クロスエントロピーの場合

    View Slide

  41. まとめると,
    𝑙層⽬の𝑗番⽬の重み𝑊
    b
    #!の損失𝐿に関する勾配 ^_
    ^'
    (

    は下記で求まる
    ^_
    ^'
    (

    = ^_
    ^d
    (
    &
    T ^d
    (
    &
    ^'
    (

    = ∆b
    # T 𝑧b()
    !
    41
    誤差逆伝播法(Back propagation)
    … 𝑾02!
    𝒛0
    𝒛01(
    𝒛$
    ※ 𝑧0
    # = 𝑊
    0
    #!𝑧02(
    !
    𝑧0
    !
    𝑊
    0
    #!
    𝑧01(
    #

    • ∆0
    # は上層からの計算結果を利⽤
    • ∆0
    #を下層に伝搬させていくことで,
    効率良く各層での勾配が計算可能

    View Slide

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

    View Slide

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

    View Slide

  44. • 多層の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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. 50
    CNNによる物体検出例

    View Slide

  51. 51
    CNNによる物体検出例

    View Slide

  52. 画像内の各画素のカテゴリを推定
    • 画素ごとの画像分類とみなせる
    • ラベリングコスト,計算コストが⾮常に⾼い
    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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  56. 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]

    View Slide

  57. 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

    View Slide

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

    View Slide

  59. 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

    View Slide

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

    View Slide

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

    View Slide