こんにちは、システムズナカシマの松浦です。
今回は、roboflowの特徴的な機能の一つであるデータ増強(オーグメンテーション)の方法について解説します。
データ増強(オーグメンテーション)は、画像処理を利用し画像を拡大・縮小したり、回転させるなどして学習データを増強する機能です。
AIモデルを構築する際に、はじめから十分な学習データを収集するのは大変な作業です。
そんな時にデータ増強(オーグメンテーション)を利用し、初期の学習に利用する学習データを短時間で整備することができます。
roboflowは、画像処理ライブラリーで最も有名なOpenCVのパートナーでもあり、画像処理を用いた強力なデータ増強(オーグメンテーション)機能を提供しています。
本記事をお読みになる前に、アカウントをお持ちでない方(サインアップ)、ワークスペース・プロジェクトの準備がお済みでない方は以下の記事をご確認ください。
また、roboflowで何ができるか、概要を知りたい方は「はじめてのroboflow」の記事をご参照ください。
データ増強用のデータセット作成
まずはじめに、前回までの手順にて作成したデータをDatasetとして登録する必要があります。
「Annotate」を選択すると「Add xxx images to Dataset」ボタンが表示されるのでそのボタンを押下し、データセットに追加します。
データセットに追加された画像がデータ増幅(オーグメンテーション)で利用できます。
ボタンを押下するとデータを「学習(Train)・評価(Valid)・テスト(Test)」にどういった割合で分割するかを選択する画面が表示されるので、割合を設定し「Add Images」ボタンを押下します。
※初期のTrain(70%):Valid(20%):Test(10%)で問題ありません。
データセットの作成(画像の前処理とデータ増強(オーグメンテーション))
左側に表示されているメニューの「Generate」ボタンを押下します。
画面がデータセットの生成画面に切り替わります。
ここでは主に以下の3項目を指定します。
- Processing(前処理):画像の前処理、自動画像向きの判定、リサイズ等を指定します。
- Augmentation(データ増強):実施するデータ増強の種類を選択します。
- Generate(データ生成):オーグメンテーションを利用し何倍のデータを生成するかを指定します。
Processing(前処理)
「Processing」は、データセットの全ての画像に適用されます。
「Processing」を選択し、「Add Processing Step」ボタンを押下します。
前処理として利用できるものが画面上に表示されます。
※上矢印のアイコン(Upgrade for)がついているものは、無料枠ではご利用いただけない機能となります。
機能 | 概要 | 説明 |
---|---|---|
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)」を選択しています。
Augmentation(データ増強)
続けて「Continue」ボタンまたは「Augmentation」を選択します。
「Add Augmentation Step」ボタンを押下すると、選択可能なデータ増強種類(オーグメンテーションの種類)が一覧表示されます。
※「Processing」同様に無料枠では、一部の機能がご利用いただけません。
画像レベルでのデータ増強(オーグメンテーション)
機能 | 概要 | 説明 |
---|---|---|
Flip | 反転 | 画像を縦方向または横方法に反転します。 |
90°Rotate | 90度回転 | 時計周り・反時計回りに画像を90度回転します。 |
Crop | 切り取り | 画像を特定の範囲で切り抜きます。 |
Rotation | 回転 | 時計周り・反時計回りに指定した角度で回転します。 |
Shear | 歪み | 画像を歪ませます。 |
Grayscale | グレースケール | 一部の画像をグレースケールに変換します。 |
Hue | 色相 | 画像の色相を調整します。 |
Saturation | 彩度 | 画像の彩度を調整します。 |
Blightness | 明るさ | 画像の明るさを調整します。 |
Exposure | 露光・露出 | 画像の露光・露出の調整を行います。 |
Blur | ぼかし | 画像に対してぼかしを入れます。フォーカスが当たってい対象物を検出したい場合に利用します。 |
Noise | ノイズ | 画像にドット上のノイズを入れます。過学習を抑える効果があります。 |
Cutout | カットアウト | 画像の一部をマスクし対象物が隠れた画像を生成します。 |
Mosaic | モザイク | 分割した画像を組み合わせモザイク状の画像を生成します。 |
ここでは、「Flip」で左右反転、「Crop」で部分的に拡大、「Rotation」で左右に5度回転、「Blightness」で暗くした画像・明るくした画像を生成するように設定してみました。
バウンディングボックスレベルでのデータ増強(オーグメンテーション)
こちらも無料枠ではご利用いただけませんが、アノテーションしたバウンディングボックス単位に回転したり、色を変更することができます。
例えば、背景画像はそのままで対象物のみ回転したい場合に有効な機能です。
※例:ベルトコンベヤー上を流れる対象物を上部からカメラで撮影し、その対象物が回転するようなケース
Generate(データ生成)
次に、設定したデータ増強(オーグメンテーション)を利用し、データを何倍に増やすかを設定します。
ここでは、無料枠で利用できる最大サイズの「3倍」を選択しています。
最後に「Generate」ボタンを押下しデータセットを生成します。
生成されたデータセット
生成されたデータセットが表示されます。
少し中身を見てみます。「View All Images」ボタンを押下します。
元の画像には無かった少し回転した画像などデータ増強(オーグメンテーション)により生成された画像が一覧に表示されます。
最後に
いかがでしたでしょうか?
今回は、roboflowの特徴的な機能であるデータ増強(オーグメンテーション)について解説しました。
第5回 roboflow:学習とデプロイについてはこちらをご確認ください。
無料枠でもお試しいただけるので是非トライしてみてください。
次回は、生成したデータセットを使ってroboflow上でAIモデルの学習、学習したモデルの利用方法について解説したいと思います。楽しみにしておいてください。
システムズナカシマでは、roboflowに関する個別相談・無料デモを行っております。
是非お気軽にご相談ください。