見出し画像

Anything v3.0でAIイラストを30枚生成してクラスタ分析!ガチャガチャ感が楽しい!

anything v3.0を使って、笑顔の女の子の画像を30枚生成しました。同じテキストを入力しても、毎回異なる画像が出力されるのが面白いと思いました。anything v3.0の多様性を見てみましょう。

作成方法は、下記を参考にして下さい。


画像から何か知見が得られるかなと思ったが、どうやって分析したら良いのやら。画像のクラスタ分析でもしてみるかな。

30枚の画像を読み込んで、K-meansクラスタリングアルゴリズムを使用して3つのクラスタに分けてみました。

# 必要なライブラリをインポート
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from skimage.io import imread, imshow
from skimage.transform import resize
from sklearn.cluster import KMeans

# 画像を読み込む
image_names = ['smilegirl_{}.png'.format(i) for i in range(30)]
images = []

for name in image_names:
    path = '/content/drive/MyDrive/image2/' + name
    img = imread(path)
    img_resized = resize(img, (100, 100, 3)) # 100x100にリサイズ
    images.append(img_resized)

# 画像を1次元配列に変換
image_arrays = []
for img in images:
    image_arrays.append(img.flatten())

# Pandas DataFrameに変換
df = pd.DataFrame(image_arrays)

# K-meansクラスタリングを実行
kmeans = KMeans(n_clusters=3, random_state=0).fit(df)

# 各画像をクラスタに割り当て
labels = kmeans.predict(df)

# 各画像にクラスタ名を付与
for i, label in enumerate(labels):
    print("画像{}はクラスタ{}に属します。".format(i, label+1))

# クラスタごとに画像を表示
for i in range(3):
    print("--------------------------------------------------------------------------------------")
    cluster_indices = np.where(labels == i)[0]
    plt.figure(figsize=(10, 10))
    for j, index in enumerate(cluster_indices):
        plt.subplot(5, 5, j+1)
        imshow(images[index])
        plt.axis('off')
    plt.show()

このPythonプログラムは、30枚の画像をK-meansクラスタリングを使用して3つのクラスタに分類するためのプログラムです。

最初に必要なライブラリをインポートします。

30枚の画像を読み込み、指定されたパスから読み込み、リサイズして配列に格納します。

各画像を1次元配列に変換し、Pandas DataFrameに変換します。

K-meansクラスタリングを実行します。ここでは、クラスタ数は3とし、ランダムシードは0としています。

各画像をクラスタに割り当て、クラスタ番号を付与して表示します。

各クラスタに属する画像を表示します。

出力結果は、以下となります。


クラスタ1


クラスタ2


クラスタ3

数学的な特徴量で判別されているのだろうが、髪の色あたりでの判別なのだろうか。よくわからなかった。

この記事が気に入ったらサポートをしてみませんか?