YOLO V3: Darknetのデータ拡張

YOLO開発のディープラーニングフレームワークdarknetはデータ拡張(Data Augmentation)がデフォルトで機能する。これを知らないで、データ拡張を議論していたのでメモしておく。

yolov3.cfgファイルのデータ拡張のパラメータは以下の4つ。ソースコードを読むとhsv色空間を使っており、hueはカラーチャンネル0、saturatioはカラーチャンネル1、exposureはカラーチャンネル2に割り当てられているので、exposureはValue(明度)のことだと思われる。

  • saturation(彩度):14行目、デフォルト値1.5、1/saturation~saturationの乱数
  • exposure(露光):15行目、デフォルト値1.5、1/exposure~exposureの乱数
  • hue(色相):16行目、デフォルト値0.1、-hue~hue
  • jitter(変動):785行目、デフォルト値0.3、切り抜く割合を指定するパラメータ。例えば、jitterが0.2だと、原画像のサイズから約80%まで切り抜く。つまり、ウインドウの幅と縦はそれぞれ80%~100%までの乱数となる。
  • random:788行目、デフォルト値1。1の場合は入力画像サイズは一定ではなく、10エポック毎にネットワークサイズが320×320 から 608×608にランダムに変わる。これはいろいろな解像度の入力画像に対してYoloをロバストにすることを狙っている。

データ拡張を無効にするためには、パラメータを以下のように設定する。

  • saturation=1.0
  • exposure=1.0
  • hue=0
  • jitter=0
  • random=0

なお、flip(左右反転)はdata.cの758~759行目に以下のようにコーディングされている。

int flip = rand()%2;
if(flip) flip_image(sized);

つまり、1/2の確率で左右を反転を生成している。cfgファイルで無効にできない。

以上

 

 

コメント

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