最近、生成した画像を眺めながら「どれが一番良いんだろう…?」と迷うことがありました。そこで試してみたのが HPSv3。これは、人間の好みに基づいて画像を評価してスコアを付けてくれるAIモデルです。
今回は、私が生成した画像にHPSv3でスコアをつけてランキングしてみた体験を紹介します。
HPSv3とは?
・人間が「好き」と思う画像をAIが学習して評価するモデル
・画像のペアワイズ比較データをもとに訓練されている
・スコアは0〜1で、人間好みに近いほど高い値
簡単に言うと、AI版「審美眼」を持った画像評価者です。
実際にやってみた手順
1.環境準備
!git clone https://github.com/MizzenAI/HPSv3.git
%cd HPSv3
!pip install flash-attn==2.7.4.post1
!pip install -e .
2 必要なライブラリのインポート
from hpsv3 import HPSv3RewardInferencer
import torch
from google.colab import files
import os
3 モデルのロード
inferencer = HPSv3RewardInferencer(device='cuda') # GPUを使用する場合
4 画像のアップロード
uploaded = files.upload()
image_paths = list(uploaded.keys())
print("Uploaded images:", image_paths)
5 プロンプトの準備
prompt = [
"A cute chibi anime fox with a wagging tail"
]
6 スコアの計算(未正規化)
normalized_scores = [torch.sigmoid(reward[0]).item() for reward in rewards]
print("Normalized Human Preference Scores:", normalized_scores)
今回はこちらの画像にスコアを付けました。(prompt="A cute chibi anime fox with a wagging tail)

評価の概要
HPSv3を使って、プロンプト「A cute chibi anime fox with a wagging tail」に対して生成された画像を評価しました。結果は以下の通りです。

・Raw rewards(生の報酬値): [0.4183, -3.5230]
これはモデル内部での「人間好みスコア」の元データで、正の値が高評価、負の値が低評価を示します。
・Normalized Human Preference Score(正規化スコア): 0.6030833125114441
0〜1の範囲で表され、0.5以上であれば概ね「好ましい」と判断される傾向があります。
実際に使ってみた感想
・数値の解釈が分かりやすい
正規化スコアが0.60程度だったため、「悪くないが、もっと改善できる」レベルと判断できました。数値で結果が出るので、主観だけに頼らず客観的評価が可能です。
・プロンプト改善の指針になる
例えば今回のスコアを0.8以上にするには、背景要素や表情、色彩などをプロンプトで細かく指定して再生成するなど、具体的な改善案を立てやすくなります。
・複数画像比較に便利
今回は1枚だけですが、複数画像を評価すれば「どのバリエーションが一番ユーザー好みか」を定量的に比較できます。
何に役立ちそうか
・画像生成のA/Bテスト
生成AIのパラメータやプロンプトを変えて複数パターンを作り、スコアが高いものを採用することで、作品の品質を効率的に向上できます。
・プロンプト最適化
スコアを指標にして、生成プロンプトを段階的に改善し、最終的により高評価なビジュアルを狙うことができます。
・制作現場でのフィードバック補助
デザインチーム内での好みの違いを数値で調整しやすく、客観的な基準として議論の土台になります。
まとめ
HPSv3は、生成画像の「人間好み度」を数値化する有用なツールです。今回の例ではスコア0.60とまずまずの結果でしたが、改善の余地が見えるため、プロンプトや生成条件を調整することでさらに高評価を狙えます。特に、複数案の比較やプロンプト最適化、客観的評価が求められる制作現場で活躍する可能性が高いと感じました。
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。
twitter
Medium
Github