ディープラーニング

AI開発で使える画像加工テクニック

更新日:

絵画

 

画像処理AIの開発では学習データや検出データとして様々な画像を扱いますが、必ずと言っていいほど加工が必要になってきます。AIモデルが認識できる画像形式は決まっている一方、顧客が持つ画像には様々な形式があるからです。

作業現場では各社専用の点検カメラ、車載カメラ、スマートフォン、デジカメなどが使われており、その設定も違います。よって出力する画像のファイル形式やサイズ、解像度、明度、撮影角度などが異なってきます。

AIモデルが良い精度を出すよう、これらの画像を加工するのもエンジニアの腕です。大変な割に裏の仕事なのであまり評価されないこともありますが、性能の良いAIを作るテクニックでもありますので、覚えて損はありません。

 

 

よく使うLinuxコマンド

 

  • 画像のファイル形式を変換する
     
    AIモデルで用いる画像ファイルのほとんどはJPGかPNG形式です。収集した画像が違う場合、変換をする必要があります。

 

  • 画像の縦横サイズを調べる
     
    画像サイズは大変重要で、AIモデルに適合するサイズか、サイズによって精度が違うのか、変換した後のサイズが正しいかなどを確認しながら進めます。

 

  • 画像の縦横サイズを変更する(リサイズ)
     
    画像が歪まないよう縦横の尺度はそのままで拡大縮小する方法です。学習画像や検出画像のサイズを統一すると精度が高まる場合があります。また結果の比較をする際に使用します。切り抜くこと(トリミング、クロップ)とは違います。

 

  • 複数のファイル名を一度に変更する
     
    AIでは大量のデータを扱うためよく使うコマンドです。

 

 

よく使うOpenCV命令

 

OpenCVとはPythonライブラリの一つで、色々な画像処理を行うことができます。画像を読み込んだ後にたった1行か数行で難しいことができてしまいます。

 

  • 画像の縦横サイズを変更する(OpenCV版リサイズ
     
    画像が歪まないよう縦横の尺度はそのままで拡大縮小する方法です。学習画像や検出画像のサイズを統一すると精度が高まる場合があります。また結果の比較をする際に使用します。切り抜くこと(トリミング、クロップ)とは違います。 

 

  • 画像を切り抜く(トリミング、クロップ)
     
    画像サイズを他の画像と合わせる、他の画像と物体の大きさを合わせる、学習/検出したくない部分を削るなどの工夫をする際に使用します。 

 

  • 画像の反転
     
    学習データを増やしたい(データ拡張といいます)時によく使用します。左右を反転させた画像を作ることで学習データを2倍にできます。上下反転もできます。ですが、文字なども反転してしまうためそのようなデータを学習してよいかは考えましょう。

 

  • 画像の回転
     
    学習データを増やしたい(データ拡張といいます)時によく使用します。いくつか違う角度で回転させた画像を作ることで学習データを数倍にできます。ただ現実に有り得ない状態を学習しても意味がありませんので考えましょう。

 

  • 画像全体の明るさ変更
     
    顧客の仕事内容によっては画像が暗いケースがあります。このような場合は明度を高めることによってAIの検出精度が上がり、人間の目でも確認できるようになります。また学習データを増やす際にも利用できます。

 

  • ぼかしを入れる
     
    学習データを増やしたい(データ拡張といいます)時に使用します。人の目では分からないぐらいのわずかなぼかしでも、AIモデルにとっては違うデータとなるためデータ拡張には有効です。

 

  • 特定の色になっている箇所(物体)のみ抽出する
     
    色を特徴とした物体検出をする時の事前確認や、学習データの要素を強調したい時、またセグメンテーション検出結果を確認する際などに使用します。

 

  • 特定の色になっている箇所の面積を求めるピクセルをカウントする)
     
    色を特徴とした物体検出をしたい時の事前確認や、セグメンテーション検出結果を確認したり比較したりする際に使用します。

 

  • 物体の輪郭(エッジ)を抽出する
     
    物体の輪郭を抽出したい時に使用します。輪郭を強調した画像を作ると強力な学習になることがあります。

 

  • 2枚の画像を重ね合わせる
     
    学習画像の要素を強調したい時や、元画像と検出結果を重ねて確認する際に使用します。

 

  • 2枚の画像を並べる
     
    元画像と検出結果を比較したり、画像の変換前後を比べるなどの際に使用します。

 

  • 画像のキャンパスを変更
     
    画像の大きさを変えずキャンパス(背景)のサイズを大きくしたい場合に使います。プログラムの仕様で画像サイズを統一しなければならないが画像は変えたくないというケースで使用します。

 

 

 

以上、AI開発でよく使う画像処理を挙げました。

一つ一つは大したことではありませんが、AI精度をコツコツ高めるテクニックとしては有用です。

AI開発ではなかなか結果が出ずに諦めたくなることがあります。モデル側をいじってもあまり変わらないことがあるのです。このような時はデータ側をいじり倒してみてください。上記の組み合わせで何度か救われたことがあります。

くじけそうになった時、試してみてください。

 

 

-ディープラーニング

Copyright© やさしいAIの始め方 , 2024 All Rights Reserved Powered by STINGER.