簡體   English   中英

為 Mask-RCNN 加載掩碼(VGG Image Annotator)的問題

[英]Problem with loading masks (VGG Image Annotator) for Mask-RCNN

問題

我想訓練一個 MRCNN 使用預訓練的 COCO 權重來檢測 2 個新類(底部,碗)。 我已經在 VGG Image Annotator 中屏蔽了大約 400 張我無法加載的圖像。 我認為我創建的類和多邊形存在問題,但因為有 400 多個圖像,我真的不想從頭開始。

基本上我使用的是 matterport https://github.com/matterport/Mask_RCNN 的代碼

錯誤

在讀取帶有類和多邊形的 .json 文件時,我遇到了錯誤:

Traceback (most recent call last):
  File ".\Test.py", line 302, in <module>
    train(model)
  File ".\Test.py", line 170, in train
    dataset_train.load_meooow(args.dataset, "train")
  File ".\Test.py", line 115, in load_meooow
    num_ids = [int(n['class']) for n in objects]
  File ".\Test.py", line 115, in <listcomp>
    num_ids = [int(n['class']) for n in objects]
ValueError: invalid literal for int() with base 10: 'bottom'

我知道,腳本試圖將“底部”轉換為非法的 int,這就是我遇到該錯誤的原因。

我想我的面具有問題,但因為面具很多,我希望我能做些什么......

對我來說,.json 文件結構似乎存在一些問題,但我看不出有什么問題。

圖像的多邊形示例

圖像之一的多邊形下方(2 類)

3D_3_14 (4).jpg2371607":{"fileref":"","size":2371607,"filename":"3D_3_14 (4).jpg","base64_img_data":"","file_attributes":{},"regions":{"0":{"shape_attributes":{"name":"polygon","all_points_x":[11,40,200,370,616,761,823,996,1268,1399,1565,1672,1818,1847,2078,2231,2379,2455,2468,2585,2583,7,11],"all_points_y":[1093,1053,984,942,929,916,1002,1022,1009,1058,1051,1049,969,909,918,949,973,1000,1033,1035,1940,1938,1093]},"region_attributes":{"class":"bottom"}},"1":{"shape_attributes":{"name":"polygon","all_points_x":[4,2590,2585,2463,2448,2319,2137,1982,1838,1849,1825,1818,1639,1428,1160,956,867,718,632,576,639,676,714,756,448,297,131,11,4],"all_points_y":[9,9,1035,1038,993,958,925,916,909,827,778,698,552,463,390,341,346,401,486,572,705,774,856,914,933,958,1009,1071,9]},"region_attributes":{"class":"bowl"}}}}

掩蔽...

在屏蔽期間,有時我會更改課程順序。 我的意思是有時班級底部是 1 級而碗是 2 級

1 bottom
2 bowl

有時碗是 1 級,底部是 2 級

1 bowl
2 bottom

當有東西覆蓋班級碗時,我不得不將它分成 2 個多邊形,但名稱相同。 所以我在 VGG 中有 1 個底部、2 個碗、3 個碗。

1 bottom
2 bowl
3 bowl

這可能是一個問題,還是只要我堅持使用正確的多邊形標簽就可以了?

標簽

我不能使用像 rcnn、mrcnn、mask-rcnn 這樣的標簽,因為它至少需要 1500 聲望.. 對不起...

如果您不想將類名注釋為整數字符串 '1',則可以像我的情況一樣嘗試以下代碼:

classes_name = ['bottom', 'bowl']
num_ids = [classes_name.index(n['class']) + 1 for n in objects]

嗯,錯誤是因為在 VGG 中添加了類。 就我而言,雖然注釋我使用班級名稱代替班級編號。 刪除班級名稱並用班級編號替換它。 在您的情況下,將底部替換為 1,將碗替換為 2,同時在 VGG 中進行注釋

暫無
暫無

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

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