【語義分割】win10+MaskRCNN+製作數據集的常見問題+訓練代碼+視頻測試

參考博客:

[1] 手把手教你製作自己的數據集(labelme),並做訓練和測試:https://blog.csdn.net/u012746060/article/details/82143285

[2] labelme的安裝:https://blog.csdn.net/u012746060/article/details/81871733

[3] 同一標籤多個物體(labelme)要注意的問題:https://blog.csdn.net/xiaomifanhxx/article/details/83998932

[4] 16位轉8位圖像處理:https://blog.csdn.net/qq_15969343/article/details/79840517(最新的labelme已經不需要了)

[5] 手把手教你製作自己的數據集(VIA),並做訓練和測試:https://blog.csdn.net/qq_15969343/article/details/80893844

常見問題和解決方法:

[6] Matplotlib is currently using agg, which is a non-GUI backend.【https://blog.csdn.net/neninee/article/details/87972040

[7] IndexError: boolean index did not match indexed array along dimension 0; dimension is 0 but corresponding boolean dimension is 128

https://blog.csdn.net/Taoshiwen666/article/details/85158011

https://blog.csdn.net/weixin_41685316/article/details/84204105

[7]這個問題其實也有可能是labelme製作出來的label.png不是8位的圖像導致的!

!!!記得檢查你的label.png是不是8位的圖片!!!很重要,被這個問題糾結了一天!

 

上述的博客都非常牛逼,如果有仔細閱讀了以上的博客就肯定能順利安裝並做測試,或者做訓練!

 

下面就是正文了!文章最後會給出完整代碼,用maskrcnn做的一個老鼠檢測!

[1] 這篇博客雖然寫的很牛逼也很簡單,但是有幾個很關鍵的地方你不仔細看很容易就出錯!

而且博主提都不提,標註一下都沒有,很是蛋疼!

那麼是那幾個地方呢?

首先是train_model.py裏面有幾個地方要修改

1.  mask_rcnn_coco.h5的位置

ROOT_DIR = os.getcwd() //ROOT_DIR爲當前文件所在的路徑

COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")

//所以mask_rcnn_coco.h5可以和train_model.py放在同一層!

 

 

2.  MODEL_DIR = os.path.join(ROOT_DIR, "logs")

在當前文件中創建“/logs”文件夾,用於存放訓練模型

 

3.  class ShapesConfig(Config):

NAME = "shapes"

NUM_CLASSES = 1 + n # background + n shapes

n爲你要分類的類別數,1爲背景

這一點很重要居然提都不提!

 

圖像的最大最小尺寸,可以填你的圖像的長和寬
IMAGE_MIN_DIM = 320
IMAGE_MAX_DIM = 384

 

4.  self.add_class("shapes", 1, "car")

方法def load_shapes(self, count, img_floder, mask_floder, imglist, dataset_root_path):裏面

self.add_class("shapes", 1, "car")

需要幾個加幾個,數量等於類別數n

 

5.  def load_mask(self, image_id):

for i in range(len(labels)):
    if labels[i].find("car") != -1:
        # print "car"
        labels_form.append("car")
    elif labels[i].find("leg") != -1:
        # print "leg"
        labels_form.append("leg")
    elif labels[i].find("well") != -1:
        # print "well"
        labels_form.append("well")

這個和上一個一樣,沒有的不要加!

 

 

6.  model.train

model.train中,epochs可以調整迭代次數

layers可以調整你訓練哪些層,有heads和all

model.train(dataset_train, dataset_val,
            learning_rate=config.LEARNING_RATE,
            epochs=10,
            layers='heads')

 

最後放張圖表示不是在吹牛逼!

完整代碼:(CSDN下載)

https://download.csdn.net/download/jin739738709/11435927

 

數據集和模型文件:(百度雲)

鏈接:https://pan.baidu.com/s/1CuRdci-411v4IZhLMs3Dew 
提取碼:dq3l 
 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章