G検定対策 究極カンペをつくろう#2 画像認識(一般物体認識、物体検出、セグメンテーション、姿勢推定)

G検定対策 究極カンペをつくろう#2 画像認識(一般物体認識、物体検出、セグメンテーション、姿勢推定) G検定
G検定対策 究極カンペをつくろう#2 画像認識(一般物体認識、物体検出、セグメンテーション、姿勢推定)

バックナンバーはこちら

はじめに

「G検定対策 究極カンペをつくろう」
シリーズ2作目になる。

前回は、専門家とのコミュニケーションが重要って話で、
SNS上のネガティブな意見を元に現状の課題を抽出した。
勉強のステージも含めて批判を見ると割と何に対しての問題提起かがわかりやすい。

今回は、ディープラーニングの応用例の中の画像認識についてになる。

動画シリーズ

G検定の究極カンペ関連動画の再生リスト

説明内容

今回の説明内容を記載しておく。

  • 各種画像認識処理
  • 一般物体認識
  • 物体検出
  • セグメンテーション
  • 姿勢推定

画像認識関連を一通り見て行く。
それぞれがどんなものかは知ってるけど、各モデルがどこにカテゴライズされてるかはよくわからんというの割とあるある。
それを因果関係を元に整理していく感じになる。

尚、因果関係の話をするだけなので、それぞれの用語は別途調べた方が良い。
ググるかChatGPTに聞いてみると良いだろう。
用語同士の因果関係はググってもなかなか答えは出てこないと思う。

各種画像認識処理

まずは私の方で作成した因果関係図を見てもらう。

前回見せたものは一般物体認識限定のものだったのだが、
今回は他の画像認識のモデルも含めたものになる。

こんな感じになる。

画像認識all_base

どこから見れば良いかわかりにくいが、
ここではAlexNetとそこから出ている線をチェックすればOK。
基本的には、各種CNNにつながっているのだが、それ以外にもつながっている。
物体検出器のR-CNNとYOLO。
SSDはVGGを経由して関連。
セグメンテーションのFCN。
OpenPoseもVGGを経由して関連している。

ということわけでAlexNetが、画像認識として最も基礎的なモデルってことになる。

AlexNetはILSVRCという画像認識コンペティションで2012年に優勝したモデル。
これを皮切りにディープラーニングが強く脚光を浴びたとも言える。
もっとも基礎的なCNNとも言えるもので、
CNNを学ぶ際には最初に扱うモデルの代表各となる。

歴史的にも重要だが、モデルの因果関係で見ても重要。

一般物体認識

まずは一般物体認識。
先ほどのAlexNetを起点として見るのが基本となる。

一般物体認識

時代的にはAlexNetの後にGoogLeNetとVGGが登場している。
両方とも2014年のILSVRCで出てきたもの。
GoogLeNetが優勝して、VGGが2番目だった。

GoogLeNetはInceptionモジュールを導入したもの。
Inceptionモジュールは、異なるサイズの畳み込みを並列に行うことで、画像の特徴を多様なスケールで捉えるもの。
対して、VGGはAlexNetを基に層を深くして精度を向上させたものになる。
並列にするか直列にするかという差はあるのだが、
内部のパラメータを増やすことで性能を引き上げたという意味では似ているとは言える。
とくにVGGは、16層のVGG16と19層のVGG19が有名ね。

次に登場するのがResNet。
ResNetはスキップ結合で有名。

スキップ結合により、残差学習というのが可能になり、勾配消失問題の対策がされている。
残差学習の解釈はさまざまなのだが、
私の解釈としては、オイラー法のような数値微分的な演算を経て、
データセットに含まれるバイアスを除去する結果として変化量だけを捉える。
その結果として、特徴量が際立つ学習が可能になったと考えている。

まぁ、こう明言されているわけではなさそうなのだが、
スキップ結合の数式から読み取れる勝手な考察という位置付けになる。
よって、余談程度に捉えておくのが丁度よい。

ResNetからはさらにいろいろつながっている。
実線でつながっているのは、DenseNetとWideResNetとSENet。

スキップ結合を元に拡張したのがDenseNetとWideResNetになる。
DenseNetは各層を密に接続し、特徴の再利用を促進したものになる。

DenseNet

WideResNetはResNetを横に広げて学習効率を改善したもの。

WideResNet

こういう画像も覚えておいた方が良い。
(図を見てどのモデルかを当てる問題が過去に出ている)

SENetは、スキップ結合に焦点を当てたモデルというよりも、
ResNetをベースにAttention機構を導入したモデル。
このAttention機構がSEブロックというもので、これを利用したものがSENetということになる。
ちなみに、ResNetではなく、GoogLeNetにSEブロックを組み込むパターンもある。

SENet

あとは、破線でEfficientNetというモデルにもつながっている。
これは、EfficientNetがResNetと比較されることが多いことから繋いでいる。
EfficientNetは、ResNetと比較して、モデルサイズと精度のバランスを最適化したものになる。

EfficientNetに至るルートとしては、
MobileNet、MnasNet、EfficientNetになっている。

MobileNet自体はDepthwise Separable Convolutionを使用したモデル。
実際には、Depthwise Separable Convolutionを最初に導入したのは、Xceptionというモデルなのだが、
MobileNetとセットで語られる方が有名ではある。
MobileNetはその名の通り、モバイルデバイス向けに最適化された軽量CNN。
この軽量を実現しているのが、Depthwise Separable Convolutionになる。
従来の畳み込み層はメモリリソースと演算リソースを大量に消費していたのだが、
Depthwise Separable Convolutionでメモリと演算の削減に成功しているわね。
Depthwise Separable Convolutionは
Depthwise Convolutionという、各チャネルごとに独立した畳み込みと、
Pointwise Convolutionという、チャネル間の結合によって実現されている。
従来の畳み込み層とほぼ変わらない性能を出すことが可能。
モバイルデバイス向けでなくとも、昨今の画像認識モデルで積極的に取り入れられる傾向はある。

むちゃくちゃ長い用語ということだけで覚えて居る人は多いと思うが、
結構重要なアーキテクチャ要素。

NASを利用して、MnasNetってのになっている。
NASはニューラルネットワークの構造を自動で探索・最適化する手法。
MobileNetV2の構造をベースにNASを適用して、MnasNetになっている。
ちなみに、MnasNetの頭文字のMはMobileのMになる。
そして、それがEfficientNetのベースになっている。

一般物体認識を見て行くと、Transformerが基になっているのもある。
基になったCNNモデルとか無いかと調べてみたが、
特にこれと言ったものはない。

Transformerアーキテクチャを物体認識に応用したもので、
画像をパッチに分割し、それをトークン列としてTransformerに入力する。
CNNでは全体を抽象的に捉えて物体認識を行うことに対して、
ViTでは画像のパッチと位置情報をトークンという処理単位にする。
これらをシーケンシャルに入力して物体認識を行う。
ここでいうシーケンシャルは逐次処理というよりも系列データと見なすと思った方が良い。
この系列データの関係性を同時に学習することが重要になる。
(とりあえず、画像を分割して位置情報とセットとして系列データとして処理するって覚えておけばOK。)

最後にSwinTransformerがある。

SwinTransformerはVisionTransformerの改良版で、階層的な構造とShifted Window機構を導入したもの。
ViTでは、計算コストが高く、CNNのようなマルチスケール性が確保できない。
階層構造で画像を段階的にダウンサンプリングしながら処理し、
局所的なSelf-Attentionを効率的に行いながら、ウィンドウをずらすことでグローバルな情報伝播も実現している。

局所的なSelf-Attentionは、入力全体ではなく、
限定された範囲(局所領域)内のトークン同士に対してのみSelf-Attentionを行う手法になる。

ここで、Self-Attentionがわからないということになり易いのだが・・・。

Self-Attentionの性格だけを伝えると、
入力ごとに重みを動的に計算することで、重要な情報を選択的に抽出する仕組みになる。
例えば、通常の全結合層の重みは訓練を経て固定化されるのだが、
この重みを固定せずに、推論時に動的に決定することで、重要な要素を抽出できるもの。
と思っておくしかない。

(その内、Transformerを実現しているAttention機構関連は別途解説します・・・。)

次のページへ

コメント

タイトルとURLをコピーしました