小さい物体を精度よく検出する新たな手法「Slicing Aided Hyper Inference (SAHI) 」を解説!

小さい物体を精度よく検出する新たな手法「Slicing Aided Hyper Inference (SAHI) 」を解説!

はじめに
 トルコの中東工科大学大学院情報学研究科の研究チームが、小さい物体をより精度良く検出するための新たな手法、Slicing Aided Hyper Inference (SAHI) を開発しました。

●論文
SLICING AIDED HYPER INFERENCE AND FINE-TUNING FOR SMALL OBJECT DETECTION
https://arxiv.org/pdf/2202.06934.pdf
●SAHIの効果をYOLO系のモデル確認した論文の解説記事
小さい物体を検出するための手法SAHIの効果を実験した論文を解説!

概要

 現在の物体検出モデルは実用レベルに達してきており、多くのシーンで利用されはじめています。しかし、ドローンなどの発達に伴い、航空写真などに対する検出も求められるようになってきていますが、小さな物体を検出することは不得意であるといえます。
 そうした理由のひとつに、多くのモデルの事前学習時に利用されるデータであるImageNetやCOCO内での画像内の物体の大きさが画像内において比較的大きいという問題があります。(つまり画像内に存在する物体がある程度大きいという前提で学習させていることを意味します。)今回のSAHIは、その前提をふまえ、小さな物体が存在している画像を切り出しリサイズすることで、より精度をあげようという取り組みです。

●具体的な手法
①学習時にデータセット内の画像の一部を切り出し、画像内での物体の比率を向上させた画像を学習データとして学習させる。
②推論時には、対象の画像を一定の枚数に切り分けたうえで拡大し、検出できた物体をNMSで削減することで精度を向上させる。

●メリット
 モデルを変更させるわけではないので、どのようなモデルにも適応できる。

●デメリット
 学習時間や推論時間が線形的に増加してしまう。

詳細

開発背景

 現在、物体検出モデルの精度は向上し、実用的なレベルになっています。ただし、実用的なレベルで検出が可能な物体はある程度画像内で大きいものであり、衛星写真や航空写真などの物体が画像内で小さい場合、精度が悪化します。しかし、近年ドローンなどの発達もあり、航空写真などが増加傾向にあるため、小さな物体でも精度よく検出できるようにすることが求められています。
 一般的に、DORI基準( Detection, Observation, Recognition and Identification (DORI) criteria)として、さまざまなタスクのオブジェクトの最小ピクセル高さが定義されており、オブジェクトの検出には画像の高さの10%(フルHDビデオでは108ピクセル)が必要であり、認識(分類)には20%が必要とされています。
 また航空写真などは高解像度の画像であることが多いですが、高解像度の画像は、計算とメモリの要件に関してより大きなニーズを要求するため、できるだけ避けたいという課題もあります。
 今回研究チームが着目したのが、多くの物体検出モデルが ImageNet や COCO などで事前学習されていることが多く、それらのデータセットでは、物体のサイズが画像内でも大きい傾向があるという点です。
 小さい物体をより精度良く検出するための新たな手法、Slicing Aided Hyper Inference (SAHI) を開発しました。

Slicing Aided Hyper Inference (SAHI)

 SAHIは、ネットワークに供給される画像内のオブジェクトが小さくなることを避けるために与える画像を切り出して拡大することで、オブジェクトのピクセル領域が本来の画像内での比率よりも大きくさせるようにします。

ファインチューニング学習(Slicing Aided Fine-tuning (SF))

 ファインチューニング学習時に、もと画像データセットに加え、一部を切り出し、リサイズした画像を追加します。
 追加する画像はアスペクト比を維持してパッチのサイズを変更し、画像の幅が800〜1333ピクセルになるようにして、拡張画像を取得します。これにより、相対的なオブジェクトサイズが元の画像に比べて大きくなります。

注意
 パッチサイズが小さくなると、大きなオブジェクトがスライスと交差する領域に収まらない可能性があり、これにより大きなオブジェクトの検出パフォーマンスが低下する可能性があることに注意する必要があります。

Slicing Aided Hyper Inference (SAHI)

 ファインチューニングしたモデルを用いて、以下のような手順で推論を行います。

手順
① 元の画像をM×Nのオーバーラップパッチに切り分ける。
② アスペクト比を維持しながら、各パッチのサイズを変更する。
③ 重複する各パッチに個別に検出推論を適用する。
※元の画像を使用するオプションの完全推論(FI)を適用することで、より大きなオブジェクトを検出できる。
④ 重複する予測結果と、使用されている場合はFIの結果を、NMSを使用して元のサイズにマージする。
※NMS中に、事前定義された一致しきい値Tmよりも高いIntersection over Union(IoU)比を持つボックスが一致した場合、Tdよりも低い検出確率を持つ検出が削除されます。

実験

 実験では、VisDrone2019-Detection と xView データセットを用いて、精度比較を行いました。これらのデータセットは両方とも小さなオブジェクトを含んでいます(オブジェクト幅<画像幅の1%)。

データセットについて

●VisDrone2019-Detection
 さまざまな場所と高さでドローンプラットフォームによってキャプチャされた8599枚の画像を含むオブジェクト検出データセットです。このデータセット内のほとんどのオブジェクトは小さく、密に分散しており、部分的に遮られています。また照明と遠近の多様性なども考慮されています。 ターゲットの540kを超える境界ボックスには、歩行者、人、自転車、車、バン、トラック、三輪車、三輪車、バス、モーターの10個の事前定義されたカテゴリがラベルとして付けられています。スーパーカテゴリは、歩行者、モーター、車、トラックとして定義されています。トレーニングと検証のサブセットは、それぞれ6471と548の画像で構成されており、それぞれ異なる場所で同様の環境で収集されます。

●xView
 衛星画像からオブジェクトを検出するために公開されている最大のデータセットの1つです。世界中の複雑なシーンからの画像が含まれています。60の異なるクラスからの100万を超えるオブジェクトインスタンスが含まれています。

実験設定

最適化関数:SGD(学習率 : 0.01, モーメンタム : 0.9, 荷重減衰 : 0.0001)
ウォームアップ:500イテレーション
学習率スケジューリング:16回目と22回目
切り出す画像の大きさ:幅=480~640、高さ=300~500
入力画像:800〜1333の幅(アスペクト比を維持するため)。
NMSマッチングしきい値:0.5

実験結果

 精度の向上が確認されました。

指標の見方
C75:IoU = .75でのPR(厳密なIoUでのAP)、曲線下の面積はAPIoU=.75メトリックに対応します。
C50:IoU = .50でのPR(PASCAL IoUでのAP)、曲線下の面積はAPIoU=.50メトリックに対応します。 Loc:IoU = .10でのPR(ローカリゼーションエラーは無視されますが、重複検出は無視されます)。残りのすべての設定はIoU=.1を使用します。
Sim:スーパーカテゴリの誤検知(fps)が削除された後のPR。具体的には、クラスラベルが異なるが同じスーパーカテゴリに属する​​オブジェクトとの一致は、fp(またはtp)としてカウントされません。 Simは、同じスーパーカテゴリ内のすべてのオブジェクトを問題のクラスと同じクラスラベルを持つように設定し、それらの無視フラグを1に設定することによって計算されます。personはシングルトンスーパーカテゴリであるため、Simの結果はLocと同じです。
Oth:すべてのクラスの混乱が取り除かれた後のPR。 Simと同様ですが、検出が他のオブジェクトと一致する場合、それはfp(またはtp)ではなくなります。 Othは、他のすべてのオブジェクトに問題のクラスと同じクラスラベルを設定し、それらの無視フラグを1に設定することによって計算されます。
BG:すべてのバックグラウンド(およびクラスの混乱)fpsが削除された後のPR。単一のカテゴリの場合、BGは、最大リコールに達するまで1であり、その後0に低下するステップ関数です(カテゴリ間で平均化した後、曲線はより滑らかになります)。
FN:残りのすべてのエラーが削除された後のPR(自明なAP = 1)。
※詳しくは、COCOの公式HPをご参照ください。
https://cocodataset.org/#detection-eval

まとめ

 データセット側への工夫であるため、多くのモデルに対して利用しやすいというメリットがありますが、一方でメモリ要件を固定したまま、計算時間を直線的に増加させてしまいます。パッチサイズを調整することにより、計算とメモリバジェットをトレードオフすることもできるとしています。