LoginSignup
0
0

More than 1 year has passed since last update.

[前回の続き実践]mvtecデータセットを読み込む

Posted at

今回は実際に画像を使って読み込む(今回はラベリング無し)

使用するデータ

MVTEC ANOMALY DETECTION DATASET
から画像データをダウンロードできます。

bottleを使用

image.png

ダウンロードしたデータについて

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には正常異常どちらも入る

以上
ご指摘等ございましたらよろしくお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0