簡體   English   中英

將 model 連接到邊界框

[英]Connecting model to bounding boxes

首先,感謝您花時間閱讀我的問題。

我正在嘗試預測邊界框中的文本。 不知何故,盒子和 model 之間似乎沒有任何聯系。

我使用 EAST 文本檢測來創建邊界框,並使用 Keras 訓練了一個 CNN model。 現在我正在使用 opencv 通過我的網絡攝像頭檢索輸入。 readNet EAST model 和 load_model 我訓練的 CNN。

我用白色背景上的黑色文字訓練了我的 model。

當我嘗試將兩者連接起來時,它會在視頻捕獲中創建正確的框,但是它沒有提供正確的預測 class。

這是我的代碼的最后一部分:

   # loop over the bounding boxes
    for (startX, startY, endX, endY) in boxes:
        # scale the bounding box coordinates based on the respective
        # ratios
        startX = int(startX * rW)
        startY = int(startY * rH)
        endX = int(endX * rW)
        endY = int(endY * rH)
    
        orig_res =cv2.resize(orig,(200,200))
        orig_res = orig_res.reshape(1,200,200,3)
        
        prediction = model.predict(orig_res)
        max_prediction = np.argmax(prediction[0])
        my_prediction = myList[max_prediction]
            
        cv2.putText(orig,str(my_prediction), (startX, startY),
            cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 0, 255), 3)
        
        # draw the bounding box on the image
        cv2.rectangle(orig, (startX, startY), (endX, endY), (0, 255, 0), 2)
        
    # show the output image
    cv2.imshow("Detect_text", orig)

myList 代表不同單詞的文件夾名稱。 這些是 model 應該預測的名稱。 正如您在此屏幕截圖中看到的,它不會預測“100%”..

在此處輸入圖像描述

這是數據集外觀的選擇:

在此處輸入圖像描述

有人可以為此提供解決方案嗎? 非常感謝!

您在訓練期間使用的標簽的順序與您在推斷時從文件夾名稱列表中創建的標簽列表之間看起來不匹配。 原因是os.listdir以任意順序返回文件名,而 keras 圖像生成器將在將文件夾名稱映射到 class 索引之前對其進行排序。

您可以通過創建如下標簽列表來確保具有相同的順序:

# suppose your training data generator is named train_gen
myList = [item[0] for item in sorted(list(train_gen.class_indices.items()), key=lambda x: x[1])]

這樣,您可以在訓練期間和推理期間使用您的標簽名稱

暫無
暫無

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

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