機械学習で使用するトレーニングデータを自動で生成するサンプルを作成しました。
これが意味がある行為か、トレーニングデータとして意味があるかは分かりません。
スポンサーリンク
(1) /test_data ディレクトリを作成します。
(2)/test_data/shimi100 ディレクトリを作成します。
(3)python インタープリタを起動します。
(4)コードをペーストして実行します。
(5)こんな感じのデータが作成されます。

#0-9のjpgを作成するが、故意に"しみ"を入れてみる。
import numpy as np
import cv2
import random
#一覧ファイル
BASEDIR='/test_data/shimi100/'
f_train = open('/test_data/train-shimi100.txt','w')
f_test = open('/test_data/test-shimi100.txt','w')
for i in range(55000):
#整数の乱数を生成
n=random.randint(0,9)
# 28 x 28 x 3(BGR)
size = 28, 28, 3
img = np.zeros(size, dtype=np.uint8)
#フォントを作成
font = cv2.FONT_HERSHEY_PLAIN
#文字を書き込み。位置(左下を基準)、フォント、文字の大きさ、色、文字の太さ、線の種類
cv2.putText(img,str(n),(2,24), font, 2, (255,255,255), 2, cv2.CV_AA )
#"しみ"を100ドット分入れる
for j in range(100):
img[random.randint(0,27),random.randint(0,27)]=[255,255,255]
#bit反転
img = cv2.bitwise_not(img)
#グレイスケール化(グレイスケール化は他でやるのでここでは省略
#ファイルへ書き出し
cv2.imwrite(BASEDIR+str(i)+"-"+str(n)+'.jpg', img)
if i<50000:
f_train.write(BASEDIR+str(i)+'-'+str(n)+'.jpg\t')
f_train.write(str(n)+'\n')
else:
f_test.write(BASEDIR+str(i)+'-'+str(n)+'.jpg\t')
f_test.write(str(n)+'\n')
f_train.close()
f_test.close()
スポンサーリンク