キカベン
機械学習でより便利な世の中へ
G検定対策
お問い合わせ
   

画像認識分野

thumb image

1. 学習目標🔝

ディープラーニングの画像認識への応用事例や代表的なネットワーク構成を理解する。

  • 物体識別タスク
  • 物体検出タスク
  • セグメンテーションタスク
  • 姿勢推定タスク
  • マルチタスク学習

キーワードILSVRCAlexNetInceptionモジュールGoogLeNetVGGSkip connectionResNetWide ResNetDenseNetSENetR-CNNFPNYOLO矩形領域SSDFast R-CNNFaster R-CNNセマンティックセグメンテーションインスタンスセグメンテーションパノプティックセグメンテーションFCN(Fully Convolutional Netwok)SegNetU-NetPSPNetDilation convolutionAtrous convolutionDeepLabOpen PoseParts Affinity FieldsMask RCNN

2. 物体識別タスク🔝

画像分類(Image Classification)、物体識別などと呼ばれるタスクは画像に写っているクラスを予測するものです。ILSVRCでは1000個のクラスがあり、どのクラスが写っているのか確率(確信度)で表します。

簡単な例で、猫、犬、ウサギの3つクラスだけの場合を考えると、モデルが予測として確率値をベクトルとして返します。例えば、$[0.1, 0.7, 0.2]$などと予測したとすると、猫10%、犬70%、ウサギ20%となります。

物体識別のモデルは畳み込みなどで得た特徴量から判断し、最後の活性化関数にはよくSoftmax関数が使われます。代表的なものに、AlexNetGoogLeNetInceptionモジュール)、VGGResNetSkip connection)などがあります。

参考記事CNNの発展系

2.1. Wide ResNet🔝

Wide ResNet(Wide Residual Networks)はResNetのカーネル数を増やしたものです。層を増やすのではなく、カーネルの数を増やすので層からの出力チャンネルの数が増えます。

ResNetでは下図の(a)と(b)のタイプの残差ブロック(residual block)が使われていました。特に(b)では1×1カーネルによる畳み込みでチャンネル数を一旦減少させた後に、通常の畳み込みを行い、その後に再び1×1カーネルでチャンネル数を増やすボトルネック(bottleneck)と呼ばる構造を使っています。

Wide ResNetでは(c)と(d)が使われました。(c)では1x1カーネルなどは使わず、(a)よりもカーネル数を増やしています。(d)はドロップアウトを追加し過学習を防いでいます。

画像元:論文

2.2. DenseNet🔝

DenseNetはよくResNetと比べられます。Skip connectionを改良し、全てのブロック(バッチ正規化、ReLU、畳み込み)から後続の全てのブロックへの接続があり勾配消失問題を解決し、特徴量の共有し重さの数を減らすことに成功しました。

画像元:論文

2.3. SENet🔝

SENet(Squeeze-and-Excitation Networks)は2017年のILSVRCで優勝しました。SENetでは畳み込みが出力した特徴量(特徴マップ)に重み付をするアテンション(Attention)を導入しています。

グローバルアベレージプーリングでチャンネルごとの平均としてまとめ(Squeeze)た後、全結合層+ReLU関数、全結合層+シグモイド関数を行います。この結果を元の層の各チャンネルに掛け合わせることで特徴マップに異なる重みを掛け合わせています。

画像元:論文

汎用性があるアイデアでInceptionやResNetなどさまざまなモデルで応用されています。

画像元:論文

3. 物体検出タスク🔝

物体検出(Object Detection)は入力画像上にある物体のクラスと位置を予測するタスクです。物体やクラスの数は1つの画像で1つ以上あります。物体の位置は矩形領域(Bounding Box)で指定されます。

代表的なものに、R-CNNFast R-CNNFaster R-CNNFPN(Feature Pyramid Net)、YOLOSSDなどがあります。

YOLO サンプルzidan
YOLOv5による

参考記事

画像分類と物体検出の違いをはっきり説明します

R-CNN:物体がありそうな領域からCNNで特徴量を抽出してSVMで分類

Fast R-CNN:R-CNNより高精度で速度が213倍になれた理由とは

Faster R-CNN:リアルタイム物体検出を可能にしたRPNとは

YOLOv1:You Look Only Onceの最初のバージョンを解説します

YOLOv2:より良く より速く より強く。YOLO9000はどのように生まれたのか

YOLOv3:精度は本当に良くなったのか?論文から読み解く改善の要点

YOLOv4:高速で正確な物体検出器をGPU1個で推論・訓練できる実用性

YOLOv5で物体検出 (PyTorch Hubからダウンロード)

YOLOv5で転移学習をやってみる

4. セグメンテーションタスク🔝

セグメンテーションは画像の画素ごとに分類・識別を行います。クラスごとの識別をする場合はセマンティックセグメンテーション、同一クラスでも別の物体(例えば、二匹の犬)を分けて識別する場合はインスタンスセグメンテーションと言います。パノプティックセグメンテーションはビルや道路にはセマンティックセグメンテーションを行い、その他のもの(人とか)にインスタンスセグメンテーションを行います。

代表的なものに、FCN(Fully Convolutional Netwok)SegNetU-NetPSPNetDeepLabなどがあります。

DeepLabではDilation convolutionAtrous convolution)が使われている。

参考記事Deeplabv3-ResNet101でセマンティック・セグメンテーションをやってみる

5. 姿勢推定タスク🔝

姿勢推定は人の体の部分(頭や手足の関節など)の位置を推定します。

Open Poseは関節の位置だけでなく、眉毛と目、鼻、口と輪郭、指の曲がり具合まで検知します。また、関節をつなぐ骨格を推定するのにParts Affinity Fieldsを使っています。

画像元:github

6. マルチタスク学習🔝

一つのモデルが複数のタスクをこなす場合、マルチタスクと呼びます。物体検出もクラスの識別と位置検出の複数のタスクを行なっているのでマルチタスクと言えます。

Mask RCNNはFaster R-CNNによる物体検出に加え、姿勢推定やインスタンスセグメンテーションも行うマルチタスクのモデルです。

画像元:github


コメントを残す

メールアドレスは公開されません。