機械学習トレーニングデータを自動生成(しみ付き数字の作成)

機械学習で使用するトレーニングデータを自動で生成するサンプルを作成しました。
これが意味がある行為か、トレーニングデータとして意味があるかは分かりません。

スポンサーリンク

(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()


スポンサーリンク

[戻る]