メルマガ登録
3次元データを活用した異常検知モデルであるBTFについて検証を進める連載記事です。本連載のメインテーマであるBTFモデルの検証結果については、次のリンクで紹介しています。【3D異常検知・本編】3次元データを活用した異常検知方法の検証 – Platinum Data Blog by BrainPad
本稿では、BTFモデルのために検証された5種類の特徴量の作成方法を紹介します。
こんにちは。アナリティクスサービス部の尾村です。
本稿では、2次元画像に加え3次元データに対する特徴量生成の手法について、BTF論文[BTF]で紹介されているものに基づき、紹介します。
BTF論文に基づき、3次元データを活用した教師なし異常検知の手法を検証した結果については、以下のリンクの記事で紹介しています。本稿で紹介する5種類の特徴量を使ったときの精度も紹介しています。
本稿で説明するのは、以下に示すBTF論文に登場する5種類の特徴量作成方法です。
ほとんどの特徴量は、2次元画像を対象にしたものですが、「FPFH」のみが3次元データである点群を対象にしています。
次の図のように、ImageNetデータセット[ImageNet]で事前学習したResNet系アーキテクチャの中間層から2種類の特徴マップを結合したものを特徴量とする手法です。
BTF論文では、ResNet系アーキテクチャとして、WideResNet50を利用しています。
留意点として、2次元画像として深度マップを使う場合でもImageNetデータセットで事前学習したモデルを使っています。
入力画像のRGB値を、そのまま特徴量として利用します。
Histogram of Oriented Gradients (HOG)[HOG]を利用する手法です。
HOGは人物検出のための特徴量として提案されました。
HOG特徴量の性質として、その計算方法から、物体の大きさや回転の変化に弱いですが、物体の平行移動や輝度の変化に強いと考えられます。
HOG特徴量は、3種類の大きさが異なる領域で計算されます:
計算手順は以下の通りです。
なお、輝度勾配を表す勾配強度\(m\)と勾配方向\(theta\)は以下の式で計算します。
$$\begin{align}
m(u, v) &= \sqrt{\Delta I_u(u, v)^2 + \Delta I_v(u, v)^2} \\
\theta(u, v) &= \tan^{-1} \frac{\Delta I_v(u, v)}{\Delta I_u(u, v)} \\
\end{align}$$
$$\begin{cases}
\Delta I_u(u, v) &= I(u + 1, v) – I(u – 1, v) \\
\Delta I_v(u, v) &= I(u, v + 1) – (u, v – 1)
\end{cases}$$
ここで、画像内のピクセル毎に含まれる輝度\( I(u, v)\)をとして表しており、\(u, v\)はそれぞれが横方向と縦方向のピクセル位置を表す離散的な数字です。
Scale-Invariant Feature Transform (SIFT)[SIFT]を利用する手法です。
SIFTは、異なる地点にあるカメラから撮影された画像間の対応点を求めるための特徴量として提案されました。
SIFT特徴量の性質として、物体の大きさや回転、輝度の変化に強いです。
さらには、異なる角度から撮影されたときに起こりえるアフィン変換に対しても、ある程度ロバストです。
BTF論文中では、Dense Scale-Invariant Feature Transform (D-SIFT)を利用する手法として紹介されています。D-SIFTはSIFTの派生アルゴリズムです。
SIFTは重要であると判定されたいくつかのピクセルについて特徴量計算されるのに対し、D-SIFTはあらかじめ指定しておいた複数ピクセルに対して特徴量計算される特徴があります。
簡単な計算手順は以下の通りです。
極値であると判定されたピクセル(キーポイント)と周囲のピクセルで計算した輝度勾配より、(HOGの計算方法と同様に)勾配方向ヒストグラムを次図のように計算します。
なお、ヒストグラム作成のために使う周囲のピクセル範囲の決め方は、極値探索のときに求めたスケール情報に基づきます。
この画像の例に従うと、左図のように元の画像範囲が8×8ピクセルの勾配に対して、右図のように4×4の大きな領域に再分割して各領域で勾配方向ヒストグラムを計算します。
求めた1次元の勾配方向ヒストグラムを全て結合して、SIFT特徴量ベクトルを作成します。
本稿では、輝度や回転などの変化に対してSIFT特徴量がロバストであるための工夫や計算式の意味の説明などについては割愛しました。
興味があれば、SIFT論文[SIFT]を参考にしてください。
Fast Point Feature Histograms (FPFH)[FPFH]を利用する手法です。
FPFHは、Point Feature Histograms (PFH)の高速化を目的としており、3次元データの位置合わせのための特徴量として提案されました。
FPFHの対象は、これまで紹介した手法のように2次元画像を対象としておらず、3次元データである点群を対象としています。さらに、各点に法線ベクトルが対応付けられている必要があります。
FPFHを定性的に説明すると、各点について周辺の幾何学的な特徴を捉えるために、近傍点との空間的な位置関係を角度の関係に落とし込み、FPFH特徴量としています。
特徴量計算する点\(p_q\)について、近傍点との関係をヒストグラムにします。
計算手順は以下の通りです。
なお、上記の手順2で説明したSPFH (Simplified Point Feature Histogram)の計算のために必要な3種類の特徴量\(\alpha_i, \phi_i, \theta_i\)の計算方法は以下の通りです。
$$\begin{align}
\alpha_i &= v_i \cdot n_i \\
\phi_i &= \frac{u \cdot d_i}{|d_i|} \\
\theta_i &= \arctan\left( \frac{w_i \cdot n_i}{u \cdot n_i}\right)
\end{align}$$
ここで、\(u, v_i, w_i\)は直行するベクトルであり、以下の式を満たします。
$$\begin{align}
u &= n_q \\
v_i &= d_i \times u \\
w_i &= u \times v_i
\end{align}$$
上式を可視化したものは、以下のようになります。
2次元画像や3次元データによる5種類の特徴量作成方法について、BTF論文で紹介されているものに準じて、紹介しました。
各特徴量を使った場合の異常検知精度は、3次元データによる異常検知を目的に作成されたMVTec 3D-ADデータセットにおいて、概ね次の順番で良くなっていることが分かりました: FPFH > iNet > SIFT > HOG > Raw。
さらに、良い精度であったFPFHとiNetの特徴量を結合して新たな特徴量とすることで、より良い精度になることも分かりました。
詳しくは、冒頭でも示しましたが、次のリンクの記事で紹介しています。
ブレインパッドでは、3次元データを扱った手法や異常検知技術をビジネスに活用するため、調査や検証を積極的に実施しています。
本記事を通じて、ブレインパッドの取り組みについて、ご興味を持っていただけますと幸いです。
<連載記事>
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説