画像認識系のAIモデル構築を練習しようと思っても、そもそも画像がないので練習できない。まずは簡単な画像を使って練習してみたい。
私もAIの勉強を開始したころにこんな悩みを抱えていたものです。
というわけでこの記事では、画像認識系AIモデルの構築練習をするために使えるサンプル画像を作成する方法をご紹介します。
※この作業自体はPythonプログラム上で実行します。
次回の記事ではここで作成した画像を使って実際に画像認識AIモデルを構築するところまで実演したいと思います。
【AI】サンプル画像の自作から画像分類CNNモデル構築までを実演!
それではさっそくやっていきましょう。
今回作成するAI構築練習用画像について
まず始めに今回どんな画像を作成するかをご紹介していきます。
今回は以下の画像のように丸、四角、三角の3パターンの画像を位置、サイズ、色、角度を変えながらランダムに大量生成してみます。
・丸の画像を作成した結果
・四角の画像を作成した結果
・三角の画像を作成した結果
上記の画像達は以下の3つのフォルダに格納されています。
必要なライブラリ一覧
今回は以下の4つのライブラリを使用します。
★OpenCV
★numpy
★os
★random
以下のコードが通ればOKです。
import cv2
import numpy as np
import os
import random
OpenCVは一癖あるので以下で詳細を紹介しています。
【Python-OpenCV】インストール方法、バージョン確認、使用時の注意点
AI構築用のサンプル画像作成コード
前置きが長くなりましたがここからが本題です。
以下が先ほど紹介したAI構築の練習用画像を作成するサンプルコードです。
#ライブラリのインポート
import cv2
import numpy as np
import os
import random
#作成する画像の枚数
num_pic=50
#画像のサイズ
h=128
w=128
#画像保存先フォルダを作成する
base_dir='img_folder'
sub_dirs=['01_img_cir','02_img_rec','03_img_tri']
os.makedirs(base_dir, exist_ok = True)
os.makedirs(base_dir+'/'+sub_dirs[0], exist_ok = True)
os.makedirs(base_dir+'/'+sub_dirs[1], exist_ok = True)
os.makedirs(base_dir+'/'+sub_dirs[2], exist_ok = True)
#円の画像を作成する
for i in range(num_pic):
img=np.zeros((h,w,3),np.uint8)
x=random.randint(30,w-30)
y=random.randint(30,h-30)
size=random.randint(10,50)
b=random.randint(100,255)
g=random.randint(100,255)
r=random.randint(100,255)
thickness=random.randint(1,5)
cv2.circle(img,(x,y),radius=size,color=(b,g,r),thickness=thickness)
cv2.imwrite(base_dir+'/'+sub_dirs[0]+'/img'+str(i).zfill(3)+'.jpg',img)
#四角形の画像を作成する
for i in range(num_pic):
img=np.zeros((h,w,3),np.uint8)
x1=random.randint(0,w-30)
y1=random.randint(0,h-30)
x2=random.randint(30,w)
y2=random.randint(30,h)
size=random.randint(10,50)
b=random.randint(100,255)
g=random.randint(100,255)
r=random.randint(100,255)
thickness=random.randint(1,5)
angle=random.randint(0,359)
cv2.rectangle(img,(x1,y1),(x2,y2),color=(b,g,r),thickness=thickness)
ROT=cv2.getRotationMatrix2D(center=(int(w/2),int(h/2)),angle=angle,scale=1)
img=cv2.warpAffine(img,ROT,dsize=(w, h))
cv2.imwrite(base_dir+'/'+sub_dirs[1]+'/img'+str(i).zfill(3)+'.jpg',img)
#三角形の画像を作成する
for i in range(num_pic):
img=np.zeros((h,w,3),np.uint8)
x=random.randint(30,w-30)
y=random.randint(30,h-30)
size=random.randint(10,50)
b=random.randint(100,255)
g=random.randint(100,255)
r=random.randint(100,255)
thickness=random.randint(1,5)
angle=random.randint(0,359)
cv2.drawMarker(img,(x,y),(b,g,r),markerType=cv2.MARKER_TRIANGLE_UP,markerSize=size,thickness=thickness)
ROT=cv2.getRotationMatrix2D(center=(int(w/2),int(h/2)),angle=angle,scale=1)
img=cv2.warpAffine(img,ROT,dsize=(w,h))
cv2.imwrite(base_dir+'/'+sub_dirs[2]+'/img'+str(i).zfill(3)+'.jpg',img)
今回はいったん各図形に対して50枚の画像を作成するようにしています。もし画像を増やしたい場合は8行目のnum_picの数値を変更すればOKです。
サンプルコードの実行結果確認
それでは先ほどのコードを実行してみましょう。
実行前は以下のような状態です。
※ai_sample_pic.pyが先ほど作成したサンプルコードが記述された実行ファイルです。
それでは実行してみましょう。
以下のように新たなフォルダが作成されました。
中身は先ほど紹介したように3つのフォルダがあり、その中に指定した枚数のランダム画像が入っています。
おわりに
というわけで今回は画像認識系AIモデルの構築練習をするために使用するサンプル画像の作成方法をご紹介しました。
ぜひご活用ください。
冒頭に説明した通り、次回は今回作成した画像を使って実際の画像認識AIモデルを構築してみようと思います。
興味があればぜひそちらもご覧ください。
このように、私のブログでは様々なスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント