LoginSignup
2
0

More than 1 year has passed since last update.

第4回 roboflow:データ増強(オーグメンテーション)

Last updated at Posted at 2022-10-11

こんにちは、システムズナカシマの松浦です。

今回は、roboflowの特徴的な機能の一つであるデータ増強(オーグメンテーション)の方法について解説します。

データ増強(オーグメンテーション)は、画像処理を利用し画像を拡大・縮小したり、回転させるなどして学習データを増強する機能です。

AIモデルを構築する際に、はじめから十分な学習データを収集するのは大変な作業です。:pensive:
そんな時にデータ増強(オーグメンテーション)を利用し、初期の学習に利用する学習データを短時間で整備することができます。:yum:

roboflowは、画像処理ライブラリーで最も有名なOpenCVのパートナーでもあり、画像処理を用いた強力なデータ増強(オーグメンテーション)機能を提供しています。

image.png

本記事をお読みになる前に、アカウントをお持ちでない方(サインアップ)、ワークスペース・プロジェクトの準備がお済みでない方は以下の記事をご確認ください。

また、roboflowで何ができるか、概要を知りたい方は「はじめてのroboflow」の記事をご参照ください。

データ増強用のデータセット作成

まずはじめに、前回までの手順にて作成したデータをDatasetとして登録する必要があります。

Annotate」を選択すると「Add xxx images to Dataset」ボタンが表示されるのでそのボタンを押下し、データセットに追加します。
データセットに追加された画像がデータ増幅(オーグメンテーション)で利用できます。

image.png

ボタンを押下するとデータを「学習(Train)・評価(Valid)・テスト(Test)」にどういった割合で分割するかを選択する画面が表示されるので、割合を設定し「Add Images」ボタンを押下します。
※初期のTrain(70%):Valid(20%):Test(10%)で問題ありません。

image.png

データセットの作成(画像の前処理とデータ増強(オーグメンテーション))

左側に表示されているメニューの「Generate」ボタンを押下します。

image.png

画面がデータセットの生成画面に切り替わります。
ここでは主に以下の3項目を指定します。

  • Processing(前処理):画像の前処理、自動画像向きの判定、リサイズ等を指定します。
  • Augmentation(データ増強):実施するデータ増強の種類を選択します。
  • Generate(データ生成):オーグメンテーションを利用し何倍のデータを生成するかを指定します。

image.png

Processing(前処理)

Processing」は、データセットの全ての画像に適用されます。
Processing」を選択し、「Add Processing Step」ボタンを押下します。

image.png

前処理として利用できるものが画面上に表示されます。
※上矢印のアイコン(Upgrade for)がついているものは、無料枠ではご利用いただけない機能となります。

image.png

機能 概要 説明
Auto-Orient 画像向き補正 EXIF情報を無視して画像の向きを判定します。
Isolate Objects 対象物の画像保存 バウンディングボックスの範囲で画像を生成します。物体検出のデータを画像分類のデータに変換する際に利用します。
Static Crop 分割 画像を決まった領域で分割します。
Resize サイズ補正 指定した縦横長さに画像サイズを調整します。通常、AIモデルの入力画像サイズにそろえる際に利用します。
Grayscale グレースケール 画像をグレースケールに変換します。
Auto-Adjust Contract コントラスト自動調整 画像のコントラストを自動で調整します。
Tile タイル状に分割 画像を縦・横指定した数に分割します。対象物が小さい場合にタイル状に分割することで学習し易くなります。
Modify Classes ラベル補正 アノテーションしているラベルを他のラベルに変換する際に利用します。例えば、犬の種類ごとにラベル付けしていたものを全て「犬」にする際など
Filter Null NULLフィルター 学習用のデータに含めるNULL画像(背景画像)の無効化する割合を設定します。0%を指定した場合全て利用されます。

ここでは、「Auto-Orient」と「Resize(416x416)」を選択しています。

image.png

Augmentation(データ増強)

続けて「Continue」ボタンまたは「Augmentation」を選択します。

image.png

Add Augmentation Step」ボタンを押下すると、選択可能なデータ増強種類(オーグメンテーションの種類)が一覧表示されます。
※「Processing」同様に無料枠では、一部の機能がご利用いただけません。

image.png

画像レベルでのデータ増強(オーグメンテーション)

機能 概要 説明
Flip 反転 画像を縦方向または横方法に反転します。
90°Rotate 90度回転 時計周り・反時計回りに画像を90度回転します。
Crop 切り取り 画像を特定の範囲で切り抜きます。
Rotation 回転 時計周り・反時計回りに指定した角度で回転します。
Shear 歪み 画像を歪ませます。
Grayscale グレースケール 一部の画像をグレースケールに変換します。
Hue 色相 画像の色相を調整します。
Saturation 彩度 画像の彩度を調整します。
Blightness 明るさ 画像の明るさを調整します。
Exposure 露光・露出 画像の露光・露出の調整を行います。
Blur ぼかし 画像に対してぼかしを入れます。フォーカスが当たってい対象物を検出したい場合に利用します。
Noise ノイズ 画像にドット上のノイズを入れます。過学習を抑える効果があります。
Cutout カットアウト 画像の一部をマスクし対象物が隠れた画像を生成します。
Mosaic モザイク 分割した画像を組み合わせモザイク状の画像を生成します。

ここでは、「Flip」で左右反転、「Crop」で部分的に拡大、「Rotation」で左右に5度回転、「Blightness」で暗くした画像・明るくした画像を生成するように設定してみました。

image.png

バウンディングボックスレベルでのデータ増強(オーグメンテーション)

こちらも無料枠ではご利用いただけませんが、アノテーションしたバウンディングボックス単位に回転したり、色を変更することができます。

例えば、背景画像はそのままで対象物のみ回転したい場合に有効な機能です。
※例:ベルトコンベヤー上を流れる対象物を上部からカメラで撮影し、その対象物が回転するようなケース

image.png

Generate(データ生成)

次に、設定したデータ増強(オーグメンテーション)を利用し、データを何倍に増やすかを設定します。
ここでは、無料枠で利用できる最大サイズの「3倍」を選択しています。

最後に「Generate」ボタンを押下しデータセットを生成します。

image.png

生成されたデータセット

生成されたデータセットが表示されます。:confetti_ball:
少し中身を見てみます。「View All Images」ボタンを押下します。

image.png

元の画像には無かった少し回転した画像などデータ増強(オーグメンテーション)により生成された画像が一覧に表示されます。

image.png

最後に

いかがでしたでしょうか?:wink:
今回は、roboflowの特徴的な機能であるデータ増強(オーグメンテーション)について解説しました。

第5回 roboflow:学習とデプロイについてはこちらをご確認ください。

無料枠でもお試しいただけるので是非トライしてみてください。

次回は、生成したデータセットを使ってroboflow上でAIモデルの学習、学習したモデルの利用方法について解説したいと思います。楽しみにしておいてください。:thumbsup_tone1:

システムズナカシマでは、roboflowに関する個別相談・無料デモを行っております。
是非お気軽にご相談ください。

2
0
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
2
0