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としています。
各画像をクラスタに割り当て、クラスタ番号を付与して表示します。
各クラスタに属する画像を表示します。
出力結果は、以下となります。
数学的な特徴量で判別されているのだろうが、髪の色あたりでの判別なのだろうか。よくわからなかった。
この記事が気に入ったらサポートをしてみませんか?