【深層学習による画像認識の基礎】3.1~3.2

>100 Views

May 14, 26

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2026年度前期輪読会 #4 2026/5/14 深層学習による画像認識の基礎 第3章 畳込みニューラルネットワーク (3.1~3.2) 京都大学大学院 工学研究科 M2 河田 賢斗 0

2.

アジェンダ ◼ 3.1 畳込みニューラルネットワークの概要 ◼ 3.2 畳込み層 ➢ 3.2.1 畳込み処理 ➢ 3.2.2 畳込み処理の役割 ➢ 3.2.3 パディング ➢ 3.2.4 ストライド ➢ 3.2.5 パディングとストライドによる画像サイズの変化 ➢ 3.2.6 テンソルによるデータ表現 ➢ 3.2.7 複数入力, 複数出力の畳込み層 ➢ 3.2.8 畳込み層の実装 ➢ 3.2.9 基本的な畳込み層の設計 1

3.

アジェンダ ◼ 3.1 畳込みニューラルネットワークの概要 ◼ 3.2 畳込み層 ➢ 3.2.1 畳込み処理 ➢ 3.2.2 畳込み処理の役割 ➢ 3.2.3 パディング ➢ 3.2.4 ストライド ➢ 3.2.5 パディングとストライドによる画像サイズの変化 ➢ 3.2.6 テンソルによるデータ表現 ➢ 3.2.7 複数入力, 複数出力の畳込み層 ➢ 3.2.8 畳込み層の実装 ➢ 3.2.9 基本的な畳込み層の設計 2

4.

3.1 畳込みニューラルネットワークの概要 畳込みニューラルネットワークの概要 畳込み層 (Convolution) プーリング層 (Pooling) 全結合層 (Linear) (局所特徴抽出) (特徴集約) (出力層) • 画像認識分野において最も使用されている • 畳込み層とプーリング層を積み重ねた構造 畳込み層:局所的な特徴を抽出する役割がある プーリング層:特徴を集約し、画像の解像度を落とす作用がある →画像サイズが段階的に小さくなっていく 3

5.

アジェンダ ◼ 3.1 畳込みニューラルネットワークの概要 ◼ 3.2 畳込み層 ➢ 3.2.1 畳込み処理 ➢ 3.2.2 畳込み処理の役割 ➢ 3.2.3 パディング ➢ 3.2.4 ストライド ➢ 3.2.5 パディングとストライドによる画像サイズの変化 ➢ 3.2.6 テンソルによるデータ表現 ➢ 3.2.7 複数入力, 複数出力の畳込み層 ➢ 3.2.8 畳込み層の実装 ➢ 3.2.9 基本的な畳込み層の設計 4

6.

3.2.1 畳込み処理 畳込み処理は、式(1)に示す画像と畳込みカーネル間の積和演算で表 現される 𝐻𝑘 −1 𝑊𝑘 −1 𝑈𝑦,𝑥 = σ𝑞=0 σ𝑝=0 𝑋𝑦+𝑞,𝑥+𝑝 𝐾𝑞,𝑝 式(1) 画像: 𝑿 ∈ 𝑅𝐻 ×𝑊 (𝑋𝑦,𝑥 ∶ 画素値 任意の実数値 ・画素サイズ𝐻 × 𝑊) 畳込みカーネル: 𝑲 ∈ 𝑅𝐻𝑘 × 𝑊𝑘 (𝐾𝑦,𝑥 ∶ 各要素 任意の実数値 ) 同一の畳込みカーネルを画像の左上から右下に向かって走査させ、各 位置(𝑦, 𝑥)で式(1)の計算を実行する →学習パラメータ数が、全結合層と比較して少ない →重み係数を学習により調整し、画像認識に適した特徴抽出を実施 5

7.

3.2.2 畳込み処理の役割 畳込みカーネルがもつ濃淡パターンの抽出 畳込み処理は、畳込みカーネルと入力画像間の相関を算出するもの 入力画像 × 畳込み カーネル 類似した濃淡パ ターンの抽出 様々な畳込みカーネルを用いることで、多種多様な画像特徴の抽出が 可能となる 畳込みカーネルによる変換を繰り返すことで、より複雑な画像特徴 を抽出出来るようになる 6

8.

3.2.2 畳込み処理の役割 畳込み処理は、画像内の並進移動に対して同変性(equivariance)を 示す(式(2)参照) 𝑓(𝑚 𝑿 ) = 𝑚(𝑓 𝑿 ) 式(2) 𝑿:入力画像、 𝑓(・):畳込み演算、𝑚(・) :並進移動を行う関数 式(2)より、畳込み演算では、画像内の位置に依らない特徴抽出が可 能であり、画像認識にとっては有用な性質 (例えば、猫が画像内のどこに写っていたとしても、同じ画像特徴と して記述可能) 7

9.

3.2.3 パディング 畳込み処理後の画像サイズは、入力よりも小さくなる (画像端での畳込み処理を無視するため) 𝐻𝑘 × 𝑊𝑘 のカーネルによる畳込み後の画像サイズ𝐻 ′ × 𝑊 ′ について 𝐻𝑘 ′ 𝐻 =𝐻 −2 2 𝑊𝑘 ′ 式(3) / 𝑊 = 𝑊 − 2 2 式(4) 上記2式が成立することが分かる(𝐻𝑘 ・ 𝑊𝑘 はともに奇数) 畳込み処理前後で画像サイズが変化しないようにするためには、入力 画像の周りに人工的な画素値を配置する工夫が必要(パディング) →パディングに用いられる画素値が0のとき、これをゼロパディング と呼ぶ 8

10.

3.2.4 ストライド ストライドとは、畳込みカーネルを適用する際のずらし幅を指す (畳込み処理では、畳込みカーネルを 𝑠 (≧ 1・ ∈ 𝑁) 画素おきに適用 する) ストライドをsとした際の、畳込み処理後の画像サイズ𝐻 ′ × 𝑊 ′ は以下 の通りに記述出来る 𝐻′ = 𝑊′ = 𝐻 − 𝐻𝑘 + 1 式(5) 𝑠 𝑊 − 𝑊𝑘 + 1 式(6) 𝑠 画像サイズがおよそ𝟏/𝒔になることが理解できる →畳込み処理により画像サイズを縮小させたい際は、1より大きいス トライドによる畳込み演算がよく利用される 9

11.

3.2.5 パディングとストライドによる画像サイズの変化 パディング𝑝, ストライド𝑠, 𝐻𝑘 × 𝑊𝑘 サイズの畳込みカーネルを適用し た際の、畳込み処理後の画像サイズ𝐻 ′ , 𝑊 ′ について 𝐻+2𝑝 − 𝐻𝑘 ′ 𝐻 = +1 𝑠 式 7 𝑊′ = 𝑊+2𝑝 −𝑊𝑘 +1 𝑠 式(8) 3.2.6 テンソルによるデータ表現 一般的なCNNでは複数枚の入力画像に対して複数の畳込みカー ネルを適用し、多様な特徴抽出を実行する 複数個のデータについてテンソル(tensor)を用いて表現を行う テンソルとは、スカラ・ベクトル・行列を一般化したものであり、 スカラ:0階 ベクトル:1階 行列:2階 のテンソルである 10

12.

3.2.6 テンソルによるデータ表現 (テンソルの具体例) グレースケール画像 𝑿 : 𝐻 × 𝑊サイズの行列(2階テンソル・ 𝑿 ∈ 𝑹𝑯×𝑾 ) 𝑪枚のグレースケール画像 𝑿 : 行列の配列は3階テンソル(𝑿 ∈ 𝑹𝑪 ×𝑯×𝑾 ) (画像認識の文脈では、1次元目をチャネル(channel)と呼び、要素 数はチャネル数となる) 𝑴個の𝑯𝒌 × 𝑾𝒌 サイズの畳込みカーネル 𝑲 : 3階テンソル(𝑲 ∈ 𝑅𝑀 ×𝐻𝑘×𝑊𝑘 ) 𝑩 (𝒊) (𝒊) 𝑪チャネル画像 𝑿 を 𝑩 枚集めたミニバッチ 𝑿 𝒊=𝟏 : 4階テンソル ( 𝑿 ∈ 𝑅𝐵×𝐶×𝐻×𝑊 ) 11

13.

3.2.7 複数入力,複数出力の畳込み層 複数入力に対して複数の畳込みカーネルを適用する方法について 畳込みフィルタ(𝑪𝒐𝒖𝒕 個) 入力テンソル 𝑿 (𝑿 ∈ 𝐶𝑖𝑛 × 𝐻 × 𝑊 ) 出力テンソル 𝑼 (𝑼 ∈ 𝐶𝑜𝑢𝑡 × 𝐻 × 𝑊 ) 1つの畳込みフィルタは、 𝐶𝑖𝑛 個の畳込みカーネル𝑯𝒌 × 𝑾𝒌 で構成さ れる→1つの畳込み層は𝐶𝑜𝑢𝑡 × 𝐶𝑖𝑛 × 𝐻𝑘 × 𝑊𝑘 の4階テンソルで表現さ れる 【1出力の畳込み層(𝐶𝑜𝑢𝑡 = 1)】 𝐶𝑖𝑛 𝑘 −1 𝑊𝑘 −1 σ𝐻 𝑈𝑦,𝑥 = σ𝑐=1 𝑞=0 σ𝑝=0 𝑋𝑐,𝑦+𝑞,𝑥+𝑝 𝐾𝑐,𝑞,𝑝 + 𝑏 式(9) 𝑏 : バイアス(1つの畳込みフィルタにつき1つの実数値) 12

14.

3.2.7複数入力,複数出力の畳込み層 【演算フロー】 入力テンソル 𝑿 (𝑿 ∈ 𝐶𝑖𝑛 × 𝐻 × 𝑊 ) × 畳込みフィルタ 𝑲 (𝑲 ∈ 1 × 𝐶𝑖𝑛 × 𝐻𝑘 × 𝑊𝑘 ) 畳込み処理後の出力 (∈ 𝐶𝑖𝑛 × 𝐻 × 𝑊 ) 畳込み処理後の出力について、同じ位置(𝑦, 𝑥)の画素値を チャネル方向に加算(𝐶𝑖𝑛 枚分)→最終的な特徴マップ𝑈(∈ 𝑅1×𝐻×𝑊 )を得る 【複数出力の畳込み層(𝐶𝑜𝑢𝑡 ≧ 2)】 𝐶𝑖𝑛 𝑘 −1 𝑊𝑘 −1 σ𝐻 𝑈𝑖,𝑦,𝑥 = σ𝑐=1 𝑞=0 σ𝑝=0 𝑋𝑐,𝑦+𝑞,𝑥+𝑝 𝐾𝑖,𝑐,𝑞,𝑝 + 𝑏𝑖 式(10) 𝑈𝑖,𝑦,𝑥 : 𝑖番目(𝑖 ∈ [1, … , 𝐶𝑜𝑢𝑡 ])の特徴マップ𝑼𝒊 の位置(𝑦, 𝑥)における出力値 13

15.

3.2.7複数入力,複数出力の畳込み層 【演算フロー】 入力テンソル 𝑿 (𝑿 ∈ 𝐶𝑖𝑛 × 𝐻 × 𝑊 ) × 畳込みフィルタ 𝑲 (𝑲 ∈ 𝐶𝑜𝑢𝑡 × 𝐶𝑖𝑛 × 𝐻𝑘 × 𝑊𝑘 ) 特徴マップ𝑼 (∈ 𝐶𝑜𝑢𝑡 × 𝐻 × 𝑊 ) 入力テンソル𝑿 (∈ 𝐶𝑖𝑛 × 𝐻 × 𝑊)に対し、𝐶𝑜𝑢𝑡 個の畳込みフィルタを並行 に適用 →得られた𝐶𝑜𝑢𝑡 個の各特徴マップ(∈ 1 × 𝐻 × 𝑊)をチャネル次元で結合し、 特徴マップ𝑼 (∈ 𝐶𝑜𝑢𝑡 × 𝐻 × 𝑊)を得る • 畳込みフィルタは、各々異なる重み係数(畳込みカーネル)を持つため1 つの畳込み層が有する学習パラメータ数は𝑪𝒐𝒖𝒕 × 𝑪𝒊𝒏 × 𝑯𝒌 × 𝑾𝒌 となる • 異なる畳込みフィルタを用いて複数チャネルの特徴マップを算出して いることから、各チャネルではそれぞれ異なる観点から画像特徴が 抽出されている 14

16.

3.2.8 畳込み層の実装 For文を幾重にも重ねた実装は計算効率が悪いため、行列演算を利用 した効率の良い畳込み層の実装が求められる 【手法】 ☞im2col()関数を用いて実装を行う ☞画像(ミニバッチ数を考慮した𝑩 × 𝑪𝒊𝒏 × 𝑯 × 𝑾サイズのテンソル) と畳込みフィルタ(𝑪𝒐𝒖𝒕 × 𝑪𝒊𝒏 × 𝑯𝒌 × 𝑾𝒌 サイズのテンソル)をとも に2次元配列(行列)に展開し、畳込み演算を行列積に帰着させる ⚫ 画像を2次元配列に展開: 画像から畳込みカーネルと同じ大きさの領域(パッチ)を切り出す →𝐵 × 𝑁𝑜𝑢𝑡 個のパッチがあるため、(𝑩 × 𝑵𝒐𝒖𝒕 )×(𝑪𝒊𝒏 × 𝑯𝒌 × 𝑾𝒌 ) の2次元配列𝑿𝒄𝒐𝒍 を生成可能(𝑁𝑜𝑢𝑡 : パッチの数) 15

17.

3.2.8 畳込み層の実装 ⚫ 畳込みフィルタを2次元配列に展開: 畳込みフィルタ(𝑪𝒐𝒖𝒕 × 𝑪𝒊𝒏 × 𝑯𝒌 × 𝑾𝒌 サイズのテンソル)について、 𝑪𝒐𝒖𝒕 ×(𝑪𝒊𝒏 × 𝑯𝒌 × 𝑾𝒌 )の2次元配列𝑾𝒄𝒐𝒍 に展開 ☞これら2つの行列を掛け合わせる(𝑿𝒄𝒐𝒍 × 𝑾𝑻𝒄𝒐𝒍 )ことで、(𝑩 × 𝑵𝒐𝒖𝒕 )× 𝑪𝒐𝒖𝒕 の出力を得る ☞im2col()関数を用いて実装を行うと、大きな行列であっても高速 に計算が可能 16

18.

3.2.8 畳込み層の実装 ↓ im2col()関数の擬似コード ↓im2col()関数の実行テスト 正確に実行されていることが確認された 17

19.

3.2.8 畳込み層の実装 ↓im2col()関数を用いた畳込み層の擬似コード ↓im2col()関数の実行テスト 正確に実行されていることが確認された 18

20.

3.2.9 基本的な畳込み層の設計  式(10)のとおり、畳込み演算は線形変換を表す 畳込み層の積み重ねにより、非線形性を含む複雑な変換(複雑な 特徴抽出)を行うことが出来ない  一方で、複雑な問題を解く際には多くの畳込み層を有するCNNが 必要となる 実現に向けた最適化は容易ではない 以上を踏まえると、こうした畳込み層をそのまま使用しても、期待通 りの結果を得ることは難しい CNNにも、正規化処理や活性化関数、残差学習を導入する必要性 本書ではバッチ正規化とReLU, スキップ接続を導入した畳込み層を 説明している 19

21.

3.2.9 基本的な畳込み層の設計 【バッチ正規化】 入力𝑿 畳込みフィルタ𝑲 × (𝑿 ∈ 𝑅𝐵×𝐶𝑖𝑛×𝐻×𝑊 ) (𝑲 ∈ 𝑅𝐶𝑜𝑢𝑡×𝐶𝑖𝑛×𝐻×𝑊 ) ഥ 特徴マップ𝑼 ഥ ∈ 𝑅𝐵×𝐶𝑜𝑢𝑡 ×𝐻×𝑊 ) (𝑼 特徴マップ𝑼 (𝑼 ∈ 𝑅𝐵×𝐶𝑜𝑢𝑡 ×𝐻×𝑊 ) 活性化 バッチ 正規化 + 関数 CNNにおけるバッチ正規化では、ミニバッチ内のすべての空間位置 に対する平均と分散をチャネル毎に計算し、それらの統計量を用いて 正規化を実行する ミニバッチ内のサンプル𝑛に対するチャネル𝑐かつ位置(𝑦, 𝑥)での出力 (𝒏) ഥ (𝒏) 値を𝑼𝒄,𝒚,𝒙 とおくと、バッチ正規化後の値𝑼 𝒄,𝒚,𝒙 は (𝒏) ഥ 𝑼𝒄,𝒚,𝒙 = 𝒏 𝑼𝒄,𝒚,𝒙 − μ𝒄 σ𝟐𝒄 + ε γ𝒄 + β𝒄 式(11) とおける 20

22.

3.2.9 基本的な畳込み層の設計 式(11)についてμ𝑐 及びσ2𝑐 はチャネル𝑐におけるミニバッチ内の平均と分散を表し 1 (𝑛) 𝑊 σ𝐵𝑛=1 σ𝐻 σ μ𝑐 = 𝑈 𝑗=1 𝑖=1 𝑐,𝑗,𝑖 式(12) 𝐵𝐻𝑊 1 (𝑛) 𝑊 2 式(13) σ𝐵𝑛=1 σ𝐻 σ σ2𝑐 = (𝑈 − μ ) 𝑐 𝑗=1 𝑖=1 𝑐,𝑗,𝑖 𝐵𝐻𝑊 式(12)と式(13)で立式が可能である(学習開始時γ𝒄 = 𝟏, β𝒄 = 𝟎) γ𝒄 とβ𝒄 は線形変換を行うための学習可能なパラメータである パラメータがない場合、式(11)を用いると各出力特徴マップは平均0、分散1に従 うように正規化される γ𝒄 とβ𝒄 による線形変換を実施することで、平均・分散が最終的に調整される余 地を残すようにする 推論時は、ミニバッチ単位で推論を行うわけではない 学習時に計算したμ𝑐 及びσ2𝑐 の移動平均を用いて式(11)を計算する 21

23.

3.2.9 基本的な畳込み層の設計 【様々な正規化】 バッチ正規化:深層学習の成功に必要不可欠 一方、学習時のミニバッチサイズが小さいと統計量の計算が不安定となり性能低下 大きなミニバッチサイズを採用出来ない場合、正規化は以下の式(12)に従う 𝑥ҧ = γ σ2 𝑥 − μ + β 式(12) μ , σ2 :学習済みモデル(バックボーン)で予め算出した統計量 ただし、これらの統計量は計算中のデータセットやミニバッチで算出した統計量で はないため、性能劣化に繋がる こうしたバッチ正規化の課題解決を行うため、様々な正規化法が提案されてきた 具体的には、(a) 層正規化 (b) インスタンス正規化 (c) グループ正規化 22

24.

3.2.9 基本的な畳込み層の設計 (a)層正規化(Layer normalization) サンプル毎にチャネル次元に沿って統計量を算出し、正規化 𝑪, 𝑯, 𝑾, 𝑩の情報の内、𝑯, 𝑾, 𝑪の情報を用いて正規化 (長所) • 並列化して学習を行う際に、統計量の取り扱いが容易 • ミニバッチサイズが小さいことによる問題が生じない (短所) • 導入されるモデルに応じて有効性が変化 ResNetでは有効性があまり無いが、CNNやVision Transformer では優れた性能を示す 23

25.

3.2.9 基本的な畳込み層の設計 (b)インスタンス正規化(Instance normalization) サンプル毎かつチャネル毎に正規化を実施 𝑪, 𝑯, 𝑾, 𝑩の情報の内、各𝑪における𝑯, 𝑾 の情報を用いて正規化 画像の画風変換タスクなどで特に効果を発揮 画風変換タスク:各入力画像のコントラストを個別に正規化すること が重要 (c)グループ正規化(Group normalization) サンプル毎にチャネル次元に沿ってグループ分けを行い、各グループ で統計量を算出し、正規化を実施 𝑪, 𝑯, 𝑾, 𝑩の情報の内、𝑯, 𝑾, 𝑪(グループ) の情報を用いて正規化 グループ毎に異なる統計量を持てるメリットがある 24

26.

3.2.9 基本的な畳込み層の設計 【活性化関数】 (𝒃) 𝑩×𝑪 ×𝑯×𝑾 𝒐𝒖𝒕 ഥ ഥ 正規化後の特徴マップ𝑼 ∈ 𝑹 の各画素𝑼𝒄,𝒉,𝒘 に対して活性化 関数𝝈(・)を適用(式(14)の通り) (𝑏) 𝑍𝑐,ℎ,𝑤 = 𝝈 ഥ𝒃 𝑼 𝒄,𝒉,𝒘 式(14) 活性化関数として、ReLUやGELUが一般的に使用される 畳込み処理においても非線形変換を可能とし、より強力な特徴抽出 を実現する 【残差学習】 スキップ接続による残差学習は、深いCNNを安定して最適化するた めには必要不可欠な技術 25

27.

3.2.9 基本的な畳込み層の設計 以下にCNNにおける残差ブロックの例を示す conv BN ReLU 𝑋𝑙 conv BN 𝑋 𝑙+1 𝐹 𝑙 (𝑿𝒍 ) 残差ブロックでの演算は以下の式(15)の通りに表される 𝑿𝑙+1 = 𝑿𝑙 + 𝐹 𝑙 (𝑿𝑙 ) 式(15) 𝐹 𝑙 (・):𝑙層目の畳込み層部分、 𝑿𝑙 : 𝐹 𝑙 (・)への入力 𝐹 𝑙 (・)に2から3層程度の畳込み層を採用する 線形変換に近い形となり、表現力が落ちることを防ぐため 26