0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

どのキツネが一番かわいい?HPSv3でAIランキングしてみた

Last updated at Posted at 2025-08-16

最近気になっていた画像評価AI HPSv3 を、Google Colab 上で動かして遊んでみました。
今回は「可愛いキツネ画像」たちを AI に採点させて、どの子が一番好かれやすいかランキングをつけてみることに。


HPSv3って何?

HPSv3 は Human Preference Score v3 の略。
簡単に言うと「人間の好みに近いかどうか」を AI がスコア化してくれる仕組みです。生成AIで作った画像の品質チェックや、プロンプトの改善などにも使えるツール。
Colab にインストールして、画像とテキスト(プロンプト)を入力すれば数値が返ってきます。

評価していく

アップロードしたのは3枚の画像。全部「A cute little fox in the grass(草むらの小さなキツネ)」という共通プロンプトで評価しました。
Bの画像
B.png
B2
B2.png
B3
B3.png

ちなみに自分の順位予想は、
B→B2→B3


1 画像アップロード

from google.colab import files
uploaded = files.upload()  # 複数選択OK
image_paths = list(uploaded.keys())
assert len(image_paths) > 0, "画像が読み込めていません。"
print("読み込み画像:", image_paths)

2 プロンプト設定(全画像共通)

prompt_all = "A cute little fox in the grass"
prompts = [prompt_all] * len(image_paths)  # ← 変数名は 'prompts'
assert len(prompts) == len(image_paths), "prompts の数が画像枚数と一致していません。"

3 評価

import torch, gc
from hpsv3 import HPSv3RewardInferencer

device = "cuda" if torch.cuda.is_available() else "cpu"
print("device:", device)

gc.collect()
if device == "cuda":
    torch.cuda.empty_cache()
    torch.backends.cuda.matmul.allow_tf32 = True

# ロード
try:
    inferencer = HPSv3RewardInferencer(device=device)
except RuntimeError as e:
    print("GPU初期化でエラー → CPUに切り替えます:", e)
    inferencer = HPSv3RewardInferencer(device="cpu")

# バッチ処理
batch_size = 4
scores, uncert = [], []

with torch.inference_mode():
    for i in range(0, len(image_paths), batch_size):
        paths_batch = image_paths[i:i+batch_size]
        prompts_batch = prompts[i:i+batch_size]  # ← ここも 'prompts'
        rewards = inferencer.reward(paths_batch, prompts_batch)  # [(mu, sigma), ...]
        scores.extend([r[0].item() for r in rewards])
        uncert.extend([r[1].item() for r in rewards])

for p, s, u in zip(image_paths, scores, uncert):
    print(f"{p} => HPSv3 score(mu): {s:.4f} | uncertainty(sigma): {u:.4f}")

4 ランキング表&保存

import pandas as pd

df = pd.DataFrame({
    "image": image_paths,
    "prompt": prompts,
    "HPSv3_score(mu)": scores,
    "uncertainty(sigma)": uncert
}).sort_values("HPSv3_score(mu)", ascending=False).reset_index(drop=True)

df
df.to_csv("hpsv3_scores.csv", index=False)
print("保存: hpsv3_scores.csv")

ランキング結果

順位 ファイル名 スコア (mu)
🥇 1位 B2 (1).png 8.19
🥈 2位 B (1).png 7.80
🥉 3位 B3 (2).png 6.52

1位 B2
B2.png
2位 B
B.png
3位 B3
B3.png

スコアはだいたい 5 以上で「そこそこ良い」、7〜8 なら「かなり好印象」、9 以上なら「超ハイクオリティ」。
今回は全体的に 悪くない仕上がりで、特に「B2」がトップに輝きました

やってみた感想

・エラーとの戦いはあったけれど、Factory reset → バッチ処理を工夫すれば安定して動いた。
・数値で比べると「自分の好み」と「AIの評価」のズレも見えて面白い。
・今回はプロンプトを全部同じにしたけど、画像ごとに違う説明を入れるともっと細かい比較ができそう。

まとめ

HPSv3 を使えば、なんとなく良さそう→数字でランキングにできるのでめちゃ便利!今後はイラストやデザインの試作品を AI にジャッジさせて、客観的な指標として使うのもアリだと感じました。


フリーランスエンジニアです。
AIや画像生成の記事色々書いているのでプロフィール見てみてください。

もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…

いずれも中間コストを省いたリーズナブルな価格でお請けできます。

お仕事のご相談はこちらまで
rockyshikoku@gmail.com

機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。

Twitter
Medium
GitHub

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?