第三十回 では、物体検出の基本的な手法について説明しました。
近年は、ディープラーニング技術を活用して物体検出を行うことが一般的となっています。 ここでは、これまでに提案されてきた手法の概念を紹介しながら、最終的にプロセス全体にディープラーニングを活用する手法の概要について述べます。
1: バウンディングボックスの提案以降にディープラーニングを活用
バウンディングボックスの提案に対しては既存の技術を活用し、それ以降の手順にディープラーニングを活用する手法です。 いくつかの手法が提案されているのですが、基本的な構造を図示すると以下のようになります。
提案されたバウンディングボックスの内部画像を検出器に与えます。 検出器は、分類されたクラスとその信頼度、および、バウンディングボックスの位置とサイズを算出します。 図では二つの検出器が記載されていますが、実際は一つだけです。
バウンディングボックスの位置とサイズについては、提案されたバウンディングボックスの位置およびサイズとの間のオフセット値を算出することに注意してください。
検出器の内部は以下のような構造となっています。
バウンディングボックス部分を抜き出した画像を検出器に与えます。 続いて、ディープラーニング用ネットワークにより、特徴値を取得します。 ここで使用するネットワークは、複数の畳み込み層で構築することが多いですが、全結合層を含む場合もあります。
取得した特徴値を分類器に与えると、分類されたクラス名と信頼度が得られます。 一方、取得した特徴値を情報取得器に与えると、バウンディングボックス情報のオフセット値が得られます。
前に述べたとおり、バウンディングボックス提案は計算負荷が高いため、その点に対して工夫を施したアルゴリズムがいくつか提案されています。 その詳細は専門書に譲ります。 上記は共通の基本構造であり、各アルゴリズムの詳細を学ぶ際にも参考になるはずです。
2: 検出プロセス全体にディープラーニングを活用
バウンディングボックスの提案も含め、検出プロセス全体に対してディープラーニングを活用する手法です。 様々なネットワーク構造が提案されているのですが、基本的な成り立ちは下図の通りです。
最初に、複数の畳み込み層とプーリング層を重ねた部分により、入力画像の特徴値を抜き出します。 先に進むにつれて画像サイズが小さくなるため、その分チャンネル数を大きくすることで、ネットワーク層内でのパラメータ数が不足しないようにすることが重要です。
画像サイズが十分に小さくなったところで、2つに分岐し、クラス分類とバウンディングボックス情報を取得する部分へ進みます。 最後の畳み込み層が出力する値を適切に解釈することにより、分類、またはバウンディングボックス情報とします。
ネットワーク内部の各層が具体的にどのような仕様となっているのかについては、専門書や関連論文を参照してください。
当社では様々な構造のネットワークを使用してディープラーニングを試みました。 その結果、スペックがある程度高いPCを用意しないと、計算が実施できないことがわかってきました。 物体検出に取り組む場合、この点についても事前に考慮したほうがよさそうです。