4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

物体検出を改善する工夫ポイント(2023年版)

Last updated at Posted at 2023-06-19

一般物体検出はまだまだ改良する余地があって、それが工夫次第で改善することが、いくつかの先行例によって明らかになっている。ここでは、それを共有するためにメモする。
既にYoloシリーズの最新版の実装に既に含まれているdata拡張の部分は、ここでは述べません。
また、 Vision Transformer 系の改良については、この文章では述べません。

無保証です。ここに書いたメモは、私の経験の範囲で書いたものであって、十分な比較検証をしていません。

工夫ポイント

輝度ヒストグラム

  • 輝度のヒストグラムを改変した画像を学習に追加する。
  • このscikit-imageの関数はグレースケール画像に対する処理となっている。
  • これをカラー画像に拡張にする。
  • RGB 画像を HSV画像に変換する。 HSV画像中のVの値をこれらの手法で改変する。その後画像をRGB画像に変換し直す。
  • 変換し直した画像を通常のunit8の画像になるように、skimage.io.imsave()で保存する。保存後に画像が真っ黒だった場合には、0.0-1.0の間で表現されている画像をuint8で保存してしまっているので修正すること。
  • 学習の中で形状などの大きな変化に着目して、画素値のわずかな変化を重視しないようにさせるためには
    、Uint8の画素値のうち、下位のbitの値を捨てて、上位のbitの変化だけに着目させるようにするという方法もある。

改善に寄与すると考える理由:

 機械学習では、入力値の範囲が規格化されていると学習が進みやすいことが知られている。輝度のヒストグラムが明るい側や暗い側に偏っているよりは、[0,1]の連続値もしくは、[0, 255]の範囲の値で分散しているのがいい。また、画像の全域に対して同一の方法でヒストグラムを変換するよりは、領域ごとにヒストグラムを変更するLocal Histogram Equalizationの方が、特徴を引き出しやすい。

  • 人検出においては、服装によって再現率が異なりやすいことが知られています。
  • 白い服・黒い服はそれぞれの理由で、検出されにくくなることがあります。
  • 白い服では、輝度値が高いために、黒い服では輝度値が低いために、輝度値の変動の幅が小さくなります。
  • 輝度値の変動の幅が少ないことは、形状や照明によるシェーディングに効果を特徴として拾い上げることが苦手になることを意味します。
  • local histogram equalization を用いると、白い服・黒い服において、輝度値のメリハリが強調されます。
  • その分、形状や照明によるシェーディングの変化を拾いやすくなります。

画像スタイルの変換

  • データ拡張の1種として、画像のスタイル変換を加える。そうすることで、物体の形状の情報とテクスチャの情報との中で、物体の形状の情報を優先させる。
  • CNNでの画像分類や検出は、対象物の形状よりもテクスチャの影響を受けやすいことが知られている。
  • 画像スタイルを変換した画像を加えると対象物の形状に敏感になることが期待できる。
  • 検出の学習において、シルエット画像を加えた方がよいという過去の知見も、この流れでとらえることができる。
  • 画像スタイルの変換ツールの例
  • Image Style Transfer using PyTorch

    右の画像は画像スタイル変換で生成した画像です。
    この右側の画像でも、人として検出できる方が、人検出で再現率が向上する側に寄与すると期待されます。
    注意:画像スタイルの変換処理をそのまま用いると、作業にかかる時間が遅すぎて、多数の画像を加工するには向きません。もっと楽な方法で、画像のテクスチャーを変える方法を作らなくてはなりません。

生成系AIの利用

  • データ拡張の1種とて、元画像を利用した生成系AIを利用する。対象物の位置・大きさを変えないまま、画像を生成系AIサービスを利用して画像を変換する。
    • 例:人物の顔や服装や照明条件、背景などが大幅に変わる。

    • https://app.kopikat.co/

    • このサイトでは、データの加工した分を加えることでMS COCOのデータセットでの検出率が上がったと述べている。

    • image.png

透過型PNGを利用した背景差し替え

対象物の範囲だけを残して他の領域を透過属性にした透過型pngファイルを用意しておき、それを対象物の写っていないさまざまな背景画像に貼り付ける。そうすることで、背景への過度な依存性を減らすことができう。
- 例: 画像編集ソフトウェアによる透過チャネルの編集
- https://helpx.adobe.com/jp/photoshop/kb/cpsid_907722.html
- 例:領域切り抜きサービスの利用
- https://www.remove.bg/ja
- image.png

- 例:動画入力に対する背景除去アルゴリズムの利用
-  OpenCVでGMG背景差分 BackgroundSubtractorGMG

セマンティックセグメンテーションを用いて、対象物の領域を選び出す。

前提:sematic segmenatation での対象物の検出モデルが既にあること

  • そのようなときには、対象物の領域のマスク画像を作れるので、これを元にしても背景差し替え画像を作れる。
  • 前述の「領域切り抜きサービス」も人物検出に限れば、人物領域に対するセマンティクセグメンテーションと同じことを意味する。

追記:暗い環境での検出性能を改善するためには

深層学習のための学習用データを増やすためのライブラリ

albumentations

image.png

追加 2024年


2024年8月追記

https://github.com/aleju/imgaug
を使って、画像のaugmentationをすることができます。
imgaugを使ってPythonで画像増幅を行う

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?