機械学習で使用するトレーニングデータを自動で生成するサンプルを作成しました。
これが意味がある行為か、トレーニングデータとして意味があるかは分かりません。
スポンサーリンク
(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()
スポンサーリンク