Faster Rcnn訓練自己的數據集過程大白話記錄


聲明:每人都有自己的理解,動手實踐才能對細節更加理解!

參考:https://www.cnblogs.com/darkknightzh/p/10043864.html

一.算法理解

  此處省略一萬字。。。。。。。。。。。。。。。。。。

二.訓練及源碼理解

  首先配置:

  在./lib/utils文件下....運行

  python setup.py build_ext --inplace

  python setup.py build_ext install

  Go to ./lib/utils文件夾下...運行
  python setup.py build_ext --inplace
  1. 數據介紹:檢測圖片當中的手寫體區域,圖片不多自己標注了大約800張,但是圖片中的手寫體區域大約幾千個,之前訓練CTPN自己制作的數據集。
  2. 數據格式:分為3個文件夾,首先是JPEGImages(存放的訓練圖片,命名格式:000000.png,000001.png...等),然后是ImageSets(里面分Layout(包括test.txt,train.txt,trainval.txt,val.txt,存放訓練測試驗證的文件名稱)和Main即可),另外Annotations(存放的是標注數據,xml格式的,之前數據標注在txt里面,自己轉為xml標標准格式存儲,或者用labelImg-master(Windows)標注,直接生成xml即可),至此數據准備完畢。。。。。。。
  3. 模型准備:默認前段卷積網絡VGG16,vgg16需要自己下載,存放在路徑.data/imagenet_weights/vgg16.ckpt
  4. 訓練:train.py,主要流程及核心代碼如下
    net.create_architecture(sess, "TRAIN", self.imdb.num_classes, tag='default')
    rois, cls_prob, bbox_pred = self.build_network(sess, training)  rois為roi pooling層得到的框,cls_prob分類得分,bbox_pred框預測
    net = self.build_head(is_training)  vgg16卷積層提取特征,圖片縮小16倍
    rpn_cls_prob, rpn_bbox_pred, rpn_cls_score, rpn_cls_score_reshape = self.build_rpn(net, is_training, initializer)  rpn網絡(anchor生成與原圖對應坐標),分類得分,候選框偏移等
    rois = self.build_proposals(is_training, rpn_cls_prob, rpn_bbox_pred, rpn_cls_score)  通過超出圖片區域,nms等篩選出合適的rois
    cls_score, cls_prob, bbox_pred = self.build_predictions(net, rois, is_training, initializer, initializer_bbox) roi pooling,全連接預測等
  5. 訓練自己數據修改的地方,手寫體識別就設置了一個類別:chinese,在源碼pascal_voc.py中修改self._classes=('__background__', 'chinese')可以按照自己的類別進行修改,注意圖片后綴格式,然后修改各種路徑就可以訓練了。
  6. 測試:迭代了10000次,用demo代碼進行測試,數據較少,訓練次數也不多,效果還可以,注意修改CLASSES = ('__background__', 'chinese') 預測結果如圖所示:
  7.  

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM