やったこと
画像分類の勉強のため、入力された画像が橋本環奈さんであるかを判定するAIを作ろうと考えた。
前回紹介したプログラムを使って、集めた画像を正方形にトリミングするプログラムを作成した。
ソースコード
正方形にする際に画像の四隅の座標を指定する必要がある。画像の中心を基準に正方形を作成すると顔が見切れることがあった。そのため画像のtopの座標は0で固定をした。
TrimSquare.py
import os
import glob
from tqdm import tqdm
from PIL import Image
def crop_to_square(img_path, output_path):
# 画像を開く
image = Image.open(img_path)
# 画像の幅と高さを取得
width, height = image.size
# 正方形のサイズを計算
size = min(width, height)
# 画像を正方形に切り取る
left = (width - size) / 2
top = 0
right = (width + size) / 2
bottom = size
square_image = image.crop((left, top, right, bottom))
# 正方形に切り取った画像を保存
square_image.save(output_path)
# 画像のパスを取得
img_list = glob.glob('./Hashimoto/*.jpg')
# 正方形にトリミング
for img in tqdm(img_list):
square_img_path = f'./Trimed_Hashimoto/{os.path.basename(img)}'
crop_to_square(img, square_img_path)
まとめ
第1回でダウンロードした画像を正方形にトリミングを行った。一部顔が見切れているものもあるが、一旦このままにして分類モデルを作成する。なおOpenCVやface_recognitionのライブラリを活用して、顔を検知し、顔全体が映るようにトリミングすることで顔が見切れる問題は解決できると考える。ただし1つの画像に複数人が映っている場合には対策が必要となる。
関連記事