今回は実際に画像を使って読み込む(今回はラベリング無し)
使用するデータ
MVTEC ANOMALY DETECTION DATASET
から画像データをダウンロードできます。
bottleを使用
ダウンロードしたデータについて
mvtec/bottle
- train good
- test good
-------以下は異常データ------- - test broken_large
- test broken_small
- test contamination
のようにそれぞれファイル分けされている。
注意すべき事としてtrainの中に異常データは入っていない。
アドレス読み込み
#学習データの場所を指定 アドレスの取得
train=glob.glob(os.path.join("mvtec/bottle/train/good", '*'))
#テスト正常データの場所を指定 アドレスの取得
true_test=glob.glob(os.path.join("mvtec/bottle/test/good", '*'))
#テスト異常データの場所を指定 アドレスの取得
bad_test=glob.glob(os.path.join("mvtec/bottle/test/broken_large", '*'))
+glob.glob(os.path.join("mvtec/bottle/test/broken_small", '*'))
+glob.glob(os.path.join("mvtec/bottle/test/contamination", '*'))
データ場所1+データ場所2+データ場所3
とつけられるのでラベル付けも容易に
opencvで読み込み
前回と同様に読み込みを行う
#画像のサイズの指定
#横
x_size=224
#縦
y_size=224
#学習データの格納
x_train=[]
for j in range(len(train)):
img=cv2.imread(os.path.join(train[j]))
#グレイスケール変換を行うとき
#img=cv2.cvtColor(timg,cv2.COLOR_BGR2GRAY)
img=np.asarray(img)
#指定したサイズに変更
img_resize=cv2.resize(img,(x_size,y_size))
#格納
x_train.append(img_resize)
#正常テストデータの格納
x_test=[]
for j in range(len(true_test)):
img=cv2.imread(os.path.join(true_test[j]))
#グレイスケール変換を行うとき
#img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img=np.asarray(img)
#指定したサイズに変更
img_resize=cv2.resize(img,(x_size,y_size))
#格納
x_test.append(img_resize)
#異常テストデータの格納
for j in range(len(bad_test)):
img=cv2.imread(os.path.join(bad_test[j]))
#グレイスケール変換を行うとき
#img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img=np.asarray(img)
#指定したサイズに変更
img_resize=cv2.resize(img,(x_size,y_size))
#格納
x_test.append(img_resize)
#正規化
x_train=np.float32(x_train)
x_train/=255
x_test=np.float32(x_test)
x_test/=255
x_testには正常異常どちらも入る
以上
ご指摘等ございましたらよろしくお願いします。