「まずは動かす」って大事。とりあえず動かして「難しいことはそのあと考えればいいや」のマインド。認識させる対象物はシンプルなのがいいでしょう。私は、仕事で使うために、やや複雑な物を対象にしたので「最初は、うまくは行かないだろうなー」っと思っていたけど。。。が、しかし割と上手く行きました。
手順1 画像フォルダを作る
(1)親のフォルダ「dataset」を作って、その下に分類ラベルごとのフォルダを作る。
bash
親フォルダ----dataset
└ 00_toyA
└ 01_toyB
└ 02_toyC
└ 03_toyD
└ 04_toyE
(2)分類ラベルごとのフォルダの下に、関係する画像ファイルをブチ込む
画像の色とサイズは統一し、ファイルサイズはできるだけ小さいほうが良いと思います。色があまり関係なければグレースケールにするといいかもですね。画像数は、各100~200枚はあった方がいいでしょう。数は揃えた方がいいかな。それと、できたら背景も合わせるといいかもです。
手順2 必要ならpython を使って画像の整理
ここで、画像を整理します。最初から整理されていたらここは不要ですが、適当に撮ったら場合は、このスクリプトを動かせばOKです。画像サイズを400×200にして、グレースケールに保存します。保存先は「dataset01」でして、分類ラベルは変更前「dataset」と同じです。このスクリプトは「dataset」と同じフォルダに置く。
python
###############################################################
# 画像の軽量化変換スクリプト(ご参考)
###############################################################
import os
import cv2
# --- フォルダ設定 ---
input_base = "dataset" # 元画像場所
output_base = "dataset01" # 変換画像保存先
# --- 出力画像サイズ ---
output_width = 400
output_height = 200
# --- クラス名のリスト(フォルダ名に対応)---
classes = ["00_toyA", "01_toyB", "02_toyC", "03_toyD", "04_toyE"]
# --- 各クラスの画像を処理 ---
for cls in classes:
input_folder = os.path.join(input_base, cls)
output_folder = os.path.join(output_base, cls)
os.makedirs(output_folder, exist_ok=True) # 保存先フォルダ作成
for filename in os.listdir(input_folder):
if filename.lower().endswith(".png"):
# --- 画像読み込み ---
img_path = os.path.join(input_folder, filename)
img = cv2.imread(img_path)
# --- グレースケールに変換 ---
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# --- サイズ変更(400×200) ---
resized = cv2.resize(gray, (output_width, output_height))
# --- 保存先パスの生成 ---
out_path = os.path.join(output_folder, filename)
# --- 画像保存(PNG形式) ---
cv2.imwrite(out_path, resized)
print(f" 保存完了!: {out_path}")