業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【AI・機械学習】
プロセスの全体像前処理・特徴量生成Fine Tuning手法まとめ機械学習モデルの選び方モデル評価手法プロトタイピング探索的分析(EDA)
ドミナントカラー検出セグメンテーション技術の基礎と実装局所特徴量抽出Grad-CAMまとめ画像の二値化とその手法モルフォロジー演算とその手法【Vision AI】Painterの紹介pix2structの紹介
AI

執筆者:Handbook編集部

【物体認識、物体検出の精度向上】画像拡張ライブラリimgaugの解説

はじめに

物体認識、物体検出の精度を上げるためには画像の前処理を行うデータのバリエーションを増やす方法があります。本記事では画像の前処理を行うことに適したライブラリである imgaug について紹介します。

imgaug の概要

物体認識や物体検出モデルを学習する際にデータセットの数が十分でないときがあります。この際に使用するデータセットに前処理を施すことにより、少ないデータでも高い精度を達成することができます。

画像の前処理には画像を扱うライブラリである OpenCV、Pillow などを使用した方法があります。imgaug ではこれらの手法と比べてより多様な前処理を行うことが可能です。また、imgaug を使用することで物体検出タスクで使用する bbox に対しても前処理結果を反映させることができるようになります。

imgaug の使用方法

imgaug のインストール

imgaug は pip にてインストールできます。

$ pip install imgaug

ライブラリの使い方

imgaug を使用した前処理は以下のコードで実行できます。今回は Crop と Flip を行っています。

import imgaug.augmenters as iaa
from PIL import Image
import numpy as np

image = Image.open("画像のパス")
numpy_image = np.array(image)
seq = iaa.Sequential([
    iaa. Crop(px=(1, 16), keep_size=False),
    iaa.Fliplr(0.5)
          :
)]
image_aug = seq(image)

iaa.Sequentialのなかに実行したい前処理の内容を記述します。上記のコードの場合、記述した前処理がすべて実行されます。また、下記のように iaa.Sequentialiaa.SomeOfに変えることで実行する前処理をランダムにすることができます。実行する前処理の数は引数で指定します。

seq = iaa.SomeOf(1, [     # 実行する数を指定(今回は1つ)
    iaa. Crop(px=(1, 16), keep_size=False),
    iaa.Fliplr(0.5)
          :
)]
image_aug = seq(image)

imgaug でできる前処理

imgaug で使用できる代表的な前処理についてまとめています。ここでまとめている以外にもたくさんあるので詳しくはimgaug のドキュメントをご覧ください。

1. Dorpout

Dropout では画像のランダムな個所に塗りつぶし処理を行います。塗りつぶしを行う矩形のサイズ、色はパラメータによって設定ができます。Dropout2d では channelshuffle のようにランダムな色調の変化が行えます。パラメータによっては画像全体が黒くなってしまうので注意が必要です。

2. Blur

Blur では画像にぼかしを入れることが可能です。パラメータによってぼかしの強さが変わります。カメラのブレのようなぼかしやすりガラスのようなぼかしを再現することが可能です。

3. Convolutional

Convolutional では対象物の Edge を際立たせることができます。この処理では物体の形を学習することは可能ですが、詳細な部分がぼやけてしまうため学習データに多く含むと正しく学習されない可能性があります。

4. Frip

Frip では画像を変形させずに回転させます。パラメータによって角度を調節することができます。

5. Affine

Affine では画像の拡大縮小、回転、平行移動を行います。これらの操作によって bbox の位置に対しする頑健性を向上させることができます。

まとめ

本記事では imgaug の概要から imgaug を使用した前処理の一部を紹介しました。データ種類によって効果的な前処理とそうでないものがあります。データに対して不向きな前処理を行うと返ってモデルの精度が低下することがあります。なのでデータの気持ちを考えながら前処理を行う必要があります。

参照

2025年06月13日に最終更新
読み込み中...