アダコテック技術ブログ

アダコテックのエンジニアが発信する技術ブログです

画像生成AIで不良画像水増しにトライしてみました

1. はじめに

アダコテックの伊藤です。

製造業で画像処理をやっていると、ほぼ確実にぶつかる課題があります。 それが「不良画像が足りない問題」です。

良品は山ほどあるのに、不良はなかなか出ない。 深層学習モデルを本気で作ろうとすると、ここがボトルネックになります。

そこで最近よく話題になるのが、「生成AIで不良画像を作ってしまおう」というアプローチです。 今回は、実際にそれを試してみました。

openaccess.thecvf.com

2. どうやって生成するの?

今回使ったのは TF-IDG(Training-Free Industrial Defect Generation) という手法です。

この手法の特徴は、

  • 追加学習なし(Fine-tuning不要)
  • 欠陥画像が1枚だけでも生成できる(One-shot対応)
  • 既存の拡散モデルをベースにした画像編集方式

という点です。

TF-IDGの全体イメージ

仕組みはやや複雑ですが、ポイントは3つあります。

① 実物に“寄せる”仕組み

生成した欠陥が本物とかけ離れてしまうのは、生成系モデルでよくある問題です。 TF-IDGでは、単純な画素一致ではなく、「特徴の分布」を近づける形で生成を誘導しています。つまり、見た目の一部だけを似せるのではなく、欠陥らしさを構成している特徴全体を揃えようとする設計です。

その結果、形だけ似た不自然な出力や、構造が崩れた欠陥になるのを抑える方向に働いています。

② 小さい欠陥を見落とさない仕組み

拡散モデルでは、信号の弱い領域が生成途中で埋もれてしまうことがあります。 特に細い傷や小さな穴のような欠陥は、マスクを指定しても途中で弱まってしまいがちです。

TF-IDGでは、生成途中の変化量を見ながら、変化が足りない領域に追加の誘導をかけています。 これにより、欠陥が「出ないまま終わる」状態を防ごうとしています。

③ 背景になじませる仕組み

欠陥だけを生成すると、どうしても背景から浮いて見えます。 産業用途では、ここが非常に重要です。

TF-IDGでは、元画像の色味や質感の情報を生成過程に取り込み、背景との整合を保つようにしています。 そのため、単なる貼り付けではなく、「そこに最初から存在していたような」見え方を目指した設計になっています。

3. 実験1:MVTec ADを使った検証

まずは標準的なベンチマークである MVTec AD(のWood) を使いました。

3.1 論文の結果

論文では、生成画像を使って学習させた場合、既存手法よりも平均で約13%程度精度が向上したと報告されています

また、欠陥画像が1枚しかない One-shot 設定でも、既存の手法と比較して十分競争力のある結果を出しています。少ないデータ環境でも動く、というのは現場目線ではかなりありがたい設計です。

3.2 試してみた

生成結果は、正直に言うと「良いものもあれば、微妙なものもある」という印象でした。

  • ちゃんと欠陥らしく見えるもの
  • 少し不自然なもの
  • 元のテクスチャと区別がつきにくいもの

など、いろいろな結果が混ざります。

以下に実行結果例を示します。

左上から、元画像、アノテーション画像、欠陥ヶ所を切り出し画像、入力画像、生成マスク画像、生成欠陥画像という構成になっています。

良好な結果例

異なる傾向の欠陥が生成された例

そこで、以下の3パターンで学習・評価を実施しました。結果は下記の様になりました。

学習方法 macro recall
生成画像を使わない 0.81
生成画像を全部使う 0.76
目視で選別して使う 0.85

結果は少し興味深いものでした。

  • 生成画像を全部使うと、むしろ悪化
  • 目視で選別すると、ベースラインを超える

つまり、単純に「生成すれば良い」わけではない、ということです。

4. 実験2:現場実務への適用(切り出し画像)

実際の運用では、画像全体ではなく、 欠陥周辺を切り出したパッチ画像で分類することが多いと思います。

そこで、256×256に分割した画像に対して同じことを試しました。

クリップ画像例

こんな感じにクリップされた画像を利用する

生成がうまくいかない

結果は……あまり良くありませんでした。

うまくいかなかった

なぜ失敗したのか?

推測ですが、原因は「周辺情報の欠如」だと思います。

TF-IDGは、画像全体の文脈をある程度前提にしています。しかしクリップされた画像では、製品全体の構造や配置情報が消えてしまったと考えています。

その結果、「これじゃない」欠陥が作られてしまったと考えます。

まとめ

生成画像は一見有効に見えるものの、AI特有のノイズへの過学習や「綺麗すぎる欠陥」による汎化性能低下のリスクがありそうです。単純な学習データ増量であれば、Crop-Pasteなど古典的なデータ拡張の方が安全かつ効率的な場合が多いかもしれません。 一方で、「モデルの限界を測る検査ツール」として活用できるのではないかと考えています。意図的に難易度の高い異常を生成し、感度や頑健性を評価する用途で価値を発揮できるんじゃないかと考えます。 生成AIは魔法の杖にはならないけど、モデルの弱点を可視化し品質を高めるための武器になると思います。