@Author:Runsen
FasterRCNN和yolov5訓練飛機目標識別的專案
目標檢測演算法主要包括:兩類two-stage和one-stage
一類是two-stage,two-stage檢測演算法將檢測問題劃分為兩個階段,首先產生候選區域(region proposals),然后對候選區域分類(一般還需要對位置精修),這一類的典型代表是R-CNN, Fast R-CNN, Faster R-CNN,Mask R-CNN家族,他們識別錯誤率低,漏識別率也較低,但速度較慢,不能滿足實時檢測場景,
另一類方式稱為one-stage檢測演算法,其不需要region proposal階段,直接產生物體的類別概率和位置坐標值,經過單次檢測即可直接得到最終的檢測結果,因此有著更快的檢測速度,比較典型的演算法如YOLOv5,SSD,RetinaNet等,
FasterRCNN和yolov5可以說是目前最先進的兩類演算法,本次將使用FasterRCNN和yolov5訓練飛機目標識別的專案
資料集來源:從COCO2017 val的圖片中隨機抽取99張包含飛機類別目標的圖片來構成mini-airplane資料集,抽取的代碼位于
COCO2017 val 下載地址:https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip

generate_mini_airplane.py 從COCO2017 val的圖片中隨機抽取99張包含飛機類別目標的圖片來構成mini-airplane資料集
FasterRCNN
FasterRCNN相關教程:https://work.datafountain.cn/forum?id=4791&type=1&source=2
檔案夾中FasterRCNN
- coco 官方的檔案
- dataset torch讀取資料集
- model FasterRCNN 預訓練模型 修改輸出
- data_split 生成訓練集和測驗集
(base) ng@ng-Z390:/home/lrs/demo/fastrcnn$ python ./coco/coco_eval.py ../results/val_results.json --ann ../mini_airplane/annotations/val.json
fastrcnn訓練測驗結果

results/val_vis中存放了fastrcnn模型測驗結果






模型保存到models檔案夾中,
yolo
yolo相關教程:https://work.datafountain.cn/forum?id=89&type=2&source=1
上面教程基于yolov3,可以參考github上的v5教程,對資料進行相關的處理
由于coco資料存在相關的yolo資料,只需要劃分訓練集和測驗集即可,腳本是yolo_split_data.py,
mini-airplane.yaml
train: ../mini_airplane/ImageSets/Main/train.txt
val: ../mini_airplane/ImageSets/Main/val.txt
test: ../mini_airplane/ImageSets/Main/test.txt
# number of classes
nc: 1
# class names
names: ['airplane']
對應模型的yaml檔案將80設定為1,
在yolo檔案夾中,執行各yolov5模型訓練代碼
python train.py --img 610 --batch 32 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --name=yolov5s

yolo5s的map非常出乎我的意料,一直保持0.01不動
python train.py --img 610 --batch 16 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5m.yaml --weights weights/yolov5m.pt --name=yolov5m

yolo5m的map0.5=0.823
python train.py --img 610 --batch 8 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5l.yaml --weights weights/yolov5l.pt --name=yolo5l

yolo5l的map0.5=0.9
python train.py --img 610 --batch 8 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5x.yaml --weights weights/yolov5x.pt --name=yolov5x

yolo5x的map0.5=0.78
下面的測驗使用yolo5l 90精確度的模型:測驗并保存對應的–save-txt
python detect.py --weights runs/train/yolo5l/weights/best.pt --img 610 --conf 0.4 --source ../mini_airplane/images --save-txt
下面是yolo5l模型測驗結果







附上Github:https://github.com/MaoliRUNsen/yolov5-fastercnn
訓練模型沒有任何價值,Github上傳資料大小有限,沒有對應模型檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298041.html
標籤:AI
