この記事は、以下のような方を想定しています。

  • ストックフォト審査の通過率を上げたい方
  • PythonやAIを使って画像品質を数値化したい方
  • Google Colabで画像処理を試してみたい方
  • 審査前に画像の良し悪しを自動判定する仕組みを作りたい方

前回の記事(①〜③)では、AI画像生成・品質選別・Upscaylによる高解像度化までの流れを紹介しました。 今回はその続きとなるフロー④「品質スコア自動化&Excel記録」の前半として、設計の考え方と実装の内容を紹介します。

本記事の位置づけ(フロー④前半)

全体フローの中で、本記事が担当するのは以下の部分です。

フロー内容本記事
AI画像生成
品質選別・最適化
高解像度化(Upscayl)
品質スコア自動算出・Excel記録・メタデータ生成★本記事
Adobe Stock申請・審査結果管理

Upscayl処理後の画像フォルダを対象に、Pythonが自動で品質スコアを算出し、Excelに記録するところまでが今回のゴールです。

品質スコア自動化の設計思想

ストックフォト審査は「なぜNGになったか」が分かりにくいのが悩みの種です。審査側からのフィードバックは限られており、同じような画像でもOKとNGが混在します。

そこで、「審査に出す前に、数値で品質を可視化する」という方針を立てました。数値化することで、以下の2つが実現できます。

  • スコアが低い画像を事前に除外 → 無駄なアップロードを削減
  • 審査結果と照合 → どのスコア帯でNGが多いか傾向をつかむ

設計のポイント

最初から完璧なスコアを目指すより、「データを蓄積しながら精度を上げていく」サイクルを重視しました。まずは動かすことが重要です。

実装にあたり、どの処理基盤を選ぶか検討しました。当初はGoogle Colabを選択しました。理由は無料でGPUが使えること、 ライブラリのインストールが簡単なこと、ローカルPCへの負荷がないことの3点です。後述しますが、後にローカル実行に移行することになります。

3つのチェック処理の内容

品質チェックは3種類の処理で構成されています。それぞれ異なる観点で画像を評価します。

処理1は、高解像度化処理を想定しているので、チェック処理は処理2開始としています。

処理2:CLIPスコア(構図・テーマ評価)

OpenAIが開発したCLIPモデルと、美的評価に特化したAestheticPredictorを組み合わせて、画像の視覚的な訴求力・美しさを0〜10でスコア化します。ストックフォトとして「目を引くか」という観点に近い指標です。

CLIP(Contrastive Language–Image Pre-training)は、OpenAIが開発した画像と言語を関連付けて理解するAIモデルです。

CLIPを選んだ理由

画像の「良さ」を数値化するモデルはいくつかありますが、CLIPベースのAestheticPredictorはストックフォト・イラスト系の評価に実績があり、無料で利用できるため採用しました。

処理3:総合スコア(構図×画質×背景適性)

処理2のCLIPスコアに加え、OpenCVを使って画質シャープネス(ピントの鮮明さ)と背景適性(広告用途での使いやすさ)を算出し、3つを掛け合わせた総合スコアを出します。

特にシャープネスは審査に直結するため、画質が低い画像は総合スコアを大きく引き下げる設計にしています。意図的なボケ表現(背景をボカす等)が含まれる場合はスコアが低く出ることもありますが、それは目視で判断する運用としています。

処理4:生データ出力

スコアに変換する前の生の数値(CLIPの予測値・ラプラシアン分散・エントロピー)をそのまま記録します。スコアの補正や分析を後から行うためのデータとして活用します。

処理指標何を測るか
処理2CLIPスコア視覚的な訴求力・美しさ(0〜10)
処理3総合スコア構図・画質・背景を統合した総合評価
処理3画質シャープネスピントの鮮明さ(0〜1)
処理3背景適性広告用途での使いやすさ(0〜1)
処理4ラプラシアン生値シャープネスの未加工数値
処理4エントロピー生値画像の情報量・複雑さの未加工数値

Excelへの自動出力設計

各処理の結果は、処理日・ファイル名とセットでExcelに自動記録されます。ファイルは2シート構成になっています。

  • シート1「解析結果」:処理2・3・4のスコアを列ごとに記録。処理日・ファイル名も自動入力。
  • シート2「Stock申請CSV」:Adobe Stockアップロード用のメタデータ(後述)を記録。

重要な設計として、「既存Excelがあれば追記、なければ新規作成」という仕組みを採用しました。 毎日新しい画像が増えていく運用に対応するため、過去の記録を消さずに末尾へ追加していきます。 また、すでに処理済みのファイルはスキップするため、同じ画像を二重処理することもありません。

Excel出力のデザイン

ヘッダーは処理2・3・4をグループごとに色分け(青・緑・黄)し、ヘッダー行を固定して大量データでもスクロールしやすい設計にしています。

実際の処理結果Excelは下図のような内容になります。このチェック内容はまだ試行錯誤を繰り返しており、途中でチェック内容を更新する可能性もあります。

Google Colabでの処理結果Excel画面

Google Colabで動かすメリットと限界

当初はGoogle Colabでの実行を想定していました。Colabの最大のメリットは無料でT4 GPUが使える点です。CLIPモデルの推論はGPUがあると大幅に高速化されます。

ただし、画像ファイルの置き場所に工夫が必要です。毎回ローカルからアップロードするのは手間がかかるため、Googleドライブに画像フォルダを用意し、Colabからマウントして読み込む方式を採用しました。

Google Colabローカル実行
GPUT4(無料・高速)✅GTX 1060 3GB(制限あり)⚠️
画像の置き場所Googleドライブローカルフォルダ直接指定
起動の手間ブラウザを開く必要ありbatファイル1クリック
PC負荷なしあり(処理中は重い)

最終的にはローカル実行に移行しましたが(詳細は次記事)、ColabとローカルでCLIP処理の数値結果はほぼ同一です。同じモデル・同じ計算式を使っているため、環境による誤差は小数点以下4桁目以降の微差のみです。

Colab上でのExcel出力結果画面は下図の通りです。

Google Colabでの処理結果Excel画面

Colab上での画像アップロード先は下図のように表示されます。

Google Colabでのアップロード画像一覧画面

各スコアの読み方・目安

蓄積したデータから見えてきた、各スコアの実用的な目安を紹介します。

指標目安値備考
CLIPスコア(処理2)6.0以上が望ましい視覚的な訴求力の目安
総合スコア(処理3)5.0以上が合格圏審査通過の最重要指標
画質シャープネス0.7以上が理想・0.3以下は注意意図的ボケは例外
背景適性0.6以上が望ましい広告用途の使いやすさ
ラプラシアン生値200以上が合格圏100以下は画質劣化の可能性
エントロピー生値7.2〜7.5が理想高すぎると背景がごちゃつく

スコアと審査結果の照合が今後の鍵

現時点ではスコアの目安は仮説段階です。審査OK・NGの結果が蓄積されるにつれて、「このスコア帯はNGになりやすい」という傾向が見えてきます。データが増えるほどスコアの精度が上がる仕組みを想定しています。

次の記事では、このColabベースの仕組みをローカルPCに移行した経緯と、Adobe Stock申請用メタデータ(タイトル・キーワード)をOllamaで自動生成する実装について紹介します。

次の記事:ローカル実行への移行とOllamaによるメタデータ自動生成

FAQ

CLIPスコアとは何ですか?

OpenAIが開発したCLIPモデルを使い、画像の視覚的な美しさや訴求力を0〜10でスコア化したものです。ストックフォト向け審査の事前チェックに活用できます。

Google Colabで画像処理はできますか?

はい。Google ColabはGPUを無料で利用できるため、CLIPやOpenCVを使った画像品質分析を手軽に実行できます。

ストックフォトのスコアチェックはなぜ必要ですか?

審査NGになるファイルを事前に絞り込むことで、無駄なアップロードを減らし、審査通過率の向上とデータ蓄積による傾向分析が可能になります。