Mask RCNN測試過程經驗總結

hxinx0502發表於2020-11-22

在做Mask RCNN測試圖片的過程中遇到了太多問題 總結一下

1.Dataset資料集

原始碼train_shapes.py中給的是ShapesDataset,實際上這是生成一個簡單形狀(正方形/三角形/原型)的資料集

我們需要將它修改成自己想要測試的資料集

個人建議根據自己的資料集命名,比如我是對於樹木的檢測,就將其命名為TreeDataset

我的修改方式是將訓練檔案coco.py中的CocoDataset改為TreeDataset,並建立一個test_shape.py作為測試檔案,同時將class裡面的方法都拿到test_shape.py中,後續可能會有用到
之後呼叫自己的TreeDataset資料集就行:


    # Validation dataset
    dataset_val = TreesDataset()
    dataset_val.load_trees("驗證集所在路徑","val", year="2014", auto_download=False)
    dataset_val.prepare()
 

2.載入ground truth


original_image, image_meta, gt_class_id, gt_bbox, gt_mask =  modellib.load_image_gt(dataset_val, inference_config, image_id, use_mini_mask=False)

3.測試結果視覺化

原始碼中已經給出了視覺化的方法:


visualize.display_instances(original_image, r['rois'], r['masks'], r['class_ids'], class_names, r['scores'])
 

如果我們想要在測試圖片上顯示一些面積等資料,就可以在display_instances方法中新增修改一些程式碼

我是想顯示一些面積資料,就從IoU計算的方法裡拿了mask面積的計算方法


pre_mask1 = np.reshape(masks > .5, (-1, masks.shape[-1])).astype(np.float32)
pre_mask_area = np.sum(pre_mask1, axis=0)
 

這裡有一個需要注意的地方,因為在test_shape.py中的ShapesConfig有一個IMAGE_MAX_DIM = 1280引數

這是將我們輸入的測試圖片縮放成1280,所以如果想要顯示真實資料,要把資料按比例縮放回去

相關文章