簡體   English   中英

深度學習模型不能准確預測,Keras?

[英]Deep Learning model not accurately predicting , Keras?

我是深度學習和 Keras 的新手。 我創建了一個在 ASL(美國手語)數據集上訓練的模型,其中包含近 80,000 個訓練圖像和 1500 個測試圖像。 我還附加了一些更多的類,即。 手簽數字從 0 到 9。 所以,我總共有 39 個班級(0-9 和 AZ)。 我的任務是訓練這個數據集並將其用於預測。 我的預測輸入是來自網絡攝像頭的幀,我將在其中顯示手勢。

我的 Keras 模型

classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), input_shape = (100, 100, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 39, activation = 'softmax'))

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])



from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set = train_datagen.flow_from_directory('train',
                                                 target_size = (100,100),
                                                 batch_size = 128,
                                                 class_mode = 'categorical')

test_set = test_datagen.flow_from_directory('test',
                                            target_size = (100, 100),
                                            batch_size = 128,
                                            class_mode = 'categorical')

classifier.fit_generator(training_set,
                         steps_per_epoch = 88534,
                         epochs = 10,
                         validation_data = test_set,
                         validation_steps = 1418)

ASL 數據集圖像大小為 200x200,數字符號數據集大小為 64x64。 在以 96% 的驗證准確率運行 5 個 epoc 之后,當我在視頻上運行它時,我仍然無法獲得良好的預測。

視頻幀的python程序

classifier = load_model('asl_original.h5')
classifier.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])

cam = cv2.VideoCapture(0)

while(1):
    try:
        ret, frame = cam.read()
        frame = cv2.flip(frame,1)
        roi = frame[100:400,200:500]
        cv2.rectangle(frame,(200,100),(500,400),(0,255,0),2) 
        cv2.imshow('frame',frame) 
        cv2.imshow('roi',roi)
        img = cv2.resize(roi,(100,100))
        img = np.reshape(img,[1,100,100,3]) 
        classes = classifier.predict_classes(img)
        print(classes)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break


    except Exception:
        traceback.print_exc()
        pass

我不明白為什么即使在如此大的數據集上訓練后我也無法獲得准確的預測。 我需要進行哪些更改才能對所有 39 個課程進行准確預測。

數據集的鏈接。 ASL 數據集數字的手勢

在classifier.compile 中,您使用loss='binary_crossentropy',它僅在標簽是二進制的(只有兩個類)時使用。 當您進行多類分類時,您必須根據標簽的數量和類型(即“sparse_categorical_crossentropy”)使用適當的損失函數。

嘗試閱讀這篇有用的博客文章,其中詳細解釋了每個損失函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM