YOLOX目標(biāo)檢測模型Keras實(shí)現(xiàn),超越Y(jié)olov5

向AI轉(zhuǎn)型的程序員都關(guān)注了這個號??????
機(jī)器學(xué)習(xí)AI算法工程?? 公眾號:datayx
論文地址
YOLOX: Exceeding YOLO Series in 2021
https://arxiv.org/abs/2107.08430
本文將YOLO檢測器調(diào)整為了Anchor-Free形式并在此基礎(chǔ)上融合了其他檢測技術(shù)(比如decoupled head、label assignment SimOTA)取得了SOTA性能,比如:
對于YOLO-Nano,所提方法僅需0.91M參數(shù)+1.08G FLOPs取得了25.3%AP指標(biāo),以1.8%超越了NanoDet;
對于YOLOv3,所提方法將指標(biāo)提升到了47.3%,以3%超越了當(dāng)前最佳;
具有與YOLOv4-CSP、YOLOv5-L相當(dāng)?shù)膮?shù)量,YOLOX-L取得了50.0%AP指標(biāo)同事具有68.9fps推理速度(Tesla V100),指標(biāo)超過YOLOv5-L 1.8%;
值得一提的是,YOLOX-L憑借單模型取得了Streaming Perception(Workshop on Autonomous Driving at CVPR 2021)競賽冠軍。
性能情況

實(shí)現(xiàn)的內(nèi)容
?主干特征提取網(wǎng)絡(luò):使用了Focus網(wǎng)絡(luò)結(jié)構(gòu)。
?分類回歸層:Decoupled Head,在YoloX中,Yolo Head被分為了分類回歸兩部分,最后預(yù)測的時候才整合在一起。
?訓(xùn)練用到的小技巧:Mosaic數(shù)據(jù)增強(qiáng)、CIOU(原版是IOU和GIOU,CIOU效果類似,都是IOU系列的,甚至更新一些)、學(xué)習(xí)率余弦退火衰減。
?Anchor Free:不使用先驗(yàn)框
?SimOTA:為不同大小的目標(biāo)動態(tài)匹配正樣本。
代碼 獲取方式:
關(guān)注微信公眾號 datayx ?然后回復(fù)?yolox?即可獲取。
所需環(huán)境
tensorflow-gpu==1.13.1
keras==2.1.5
小技巧的設(shè)置
在train.py文件下:
1、mosaic參數(shù)可用于控制是否實(shí)現(xiàn)Mosaic數(shù)據(jù)增強(qiáng)。
2、Cosine_scheduler可用于控制是否使用學(xué)習(xí)率余弦退火衰減。
文件下載
訓(xùn)練所需的權(quán)值可在百度網(wǎng)盤中下載。
鏈接:?https://pan.baidu.com/s/18vaa1ehQuS4vN6xRc2Qidg
提取碼: 28mx
VOC數(shù)據(jù)集下載地址如下,里面已經(jīng)包括了訓(xùn)練集、測試集、驗(yàn)證集(與測試集一樣),無需再次劃分:
鏈接:?https://pan.baidu.com/s/1YuBbBKxm2FGgTU5OfaeC5A
提取碼: uack
訓(xùn)練步驟
a、訓(xùn)練VOC07+12數(shù)據(jù)集
數(shù)據(jù)集的準(zhǔn)備
本文使用VOC格式進(jìn)行訓(xùn)練,訓(xùn)練前需要下載好VOC07+12的數(shù)據(jù)集,解壓后放在根目錄數(shù)據(jù)集的處理
修改voc_annotation.py里面的annotation_mode=2,運(yùn)行voc_annotation.py生成根目錄下的2007_train.txt和2007_val.txt。開始網(wǎng)絡(luò)訓(xùn)練
train.py的默認(rèn)參數(shù)用于訓(xùn)練VOC數(shù)據(jù)集,直接運(yùn)行train.py即可開始訓(xùn)練。訓(xùn)練結(jié)果預(yù)測
訓(xùn)練結(jié)果預(yù)測需要用到兩個文件,分別是yolo.py和predict.py。我們首先需要去yolo.py里面修改model_path以及classes_path,這兩個參數(shù)必須要修改。
model_path指向訓(xùn)練好的權(quán)值文件,在logs文件夾里。
classes_path指向檢測類別所對應(yīng)的txt。
完成修改后就可以運(yùn)行predict.py進(jìn)行檢測了。運(yùn)行后輸入圖片路徑即可檢測。
b、訓(xùn)練自己的數(shù)據(jù)集
數(shù)據(jù)集的準(zhǔn)備
本文使用VOC格式進(jìn)行訓(xùn)練,訓(xùn)練前需要自己制作好數(shù)據(jù)集,
訓(xùn)練前將標(biāo)簽文件放在VOCdevkit文件夾下的VOC2007文件夾下的Annotation中。
訓(xùn)練前將圖片文件放在VOCdevkit文件夾下的VOC2007文件夾下的JPEGImages中。數(shù)據(jù)集的處理
在完成數(shù)據(jù)集的擺放之后,我們需要利用voc_annotation.py獲得訓(xùn)練用的2007_train.txt和2007_val.txt。
修改voc_annotation.py里面的參數(shù)。第一次訓(xùn)練可以僅修改classes_path,classes_path用于指向檢測類別所對應(yīng)的txt。
訓(xùn)練自己的數(shù)據(jù)集時,可以自己建立一個cls_classes.txt,里面寫自己所需要區(qū)分的類別。
model_data/cls_classes.txt文件內(nèi)容為:
cat
dog
...
修改voc_annotation.py中的classes_path,使其對應(yīng)cls_classes.txt,并運(yùn)行voc_annotation.py。
開始網(wǎng)絡(luò)訓(xùn)練
訓(xùn)練的參數(shù)較多,均在train.py中,大家可以在下載庫后仔細(xì)看注釋,其中最重要的部分依然是train.py里的classes_path。
classes_path用于指向檢測類別所對應(yīng)的txt,這個txt和voc_annotation.py里面的txt一樣!訓(xùn)練自己的數(shù)據(jù)集必須要修改!
修改完classes_path后就可以運(yùn)行train.py開始訓(xùn)練了,在訓(xùn)練多個epoch后,權(quán)值會生成在logs文件夾中。訓(xùn)練結(jié)果預(yù)測
訓(xùn)練結(jié)果預(yù)測需要用到兩個文件,分別是yolo.py和predict.py。在yolo.py里面修改model_path以及classes_path。
model_path指向訓(xùn)練好的權(quán)值文件,在logs文件夾里。
classes_path指向檢測類別所對應(yīng)的txt。
完成修改后就可以運(yùn)行predict.py進(jìn)行檢測了。運(yùn)行后輸入圖片路徑即可檢測。
預(yù)測步驟
a、使用預(yù)訓(xùn)練權(quán)重
下載完庫后解壓,在百度網(wǎng)盤下載yolo_weights.pth,放入model_data,運(yùn)行predict.py,輸入
img/street.jpg在predict.py里面進(jìn)行設(shè)置可以進(jìn)行fps測試和video視頻檢測。
b、使用自己訓(xùn)練的權(quán)重
按照訓(xùn)練步驟訓(xùn)練。
在yolo.py文件里面,在如下部分修改model_path和classes_path使其對應(yīng)訓(xùn)練好的文件;model_path對應(yīng)logs文件夾下面的權(quán)值文件,classes_path是model_path對應(yīng)分的類。
運(yùn)行predict.py,輸入
img/street.jpg在predict.py里面進(jìn)行設(shè)置可以進(jìn)行fps測試和video視頻檢測。
評估步驟
a、評估VOC07+12的測試集
本文使用VOC格式進(jìn)行評估。VOC07+12已經(jīng)劃分好了測試集,無需利用voc_annotation.py生成ImageSets文件夾下的txt。
在yolo.py里面修改model_path以及classes_path。model_path指向訓(xùn)練好的權(quán)值文件,在logs文件夾里。classes_path指向檢測類別所對應(yīng)的txt。
運(yùn)行g(shù)et_map.py即可獲得評估結(jié)果,評估結(jié)果會保存在map_out文件夾中。
b、評估自己的數(shù)據(jù)集
本文使用VOC格式進(jìn)行評估。
如果在訓(xùn)練前已經(jīng)運(yùn)行過voc_annotation.py文件,代碼會自動將數(shù)據(jù)集劃分成訓(xùn)練集、驗(yàn)證集和測試集。如果想要修改測試集的比例,可以修改voc_annotation.py文件下的trainval_percent。trainval_percent用于指定(訓(xùn)練集+驗(yàn)證集)與測試集的比例,默認(rèn)情況下 (訓(xùn)練集+驗(yàn)證集):測試集 = 9:1。train_percent用于指定(訓(xùn)練集+驗(yàn)證集)中訓(xùn)練集與驗(yàn)證集的比例,默認(rèn)情況下 訓(xùn)練集:驗(yàn)證集 = 9:1。
利用voc_annotation.py劃分測試集后,前往get_map.py文件修改classes_path,classes_path用于指向檢測類別所對應(yīng)的txt,這個txt和訓(xùn)練時的txt一樣。評估自己的數(shù)據(jù)集必須要修改。
在yolo.py里面修改model_path以及classes_path。model_path指向訓(xùn)練好的權(quán)值文件,在logs文件夾里。classes_path指向檢測類別所對應(yīng)的txt。
運(yùn)行g(shù)et_map.py即可獲得評估結(jié)果,評估結(jié)果會保存在map_out文件夾中。
機(jī)器學(xué)習(xí)算法AI大數(shù)據(jù)技術(shù)
?搜索公眾號添加:?datanlp
長按圖片,識別二維碼
閱讀過本文的人還看了以下文章:
TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《基于深度學(xué)習(xí)的自然語言處理》中/英PDF
Deep Learning 中文版初版-周志華團(tuán)隊(duì)
【全套視頻課】最全的目標(biāo)檢測算法系列講解,通俗易懂!
《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf
《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼
《深度學(xué)習(xí):基于Keras的Python實(shí)踐》PDF和代碼
python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼
《深度學(xué)習(xí)之pytorch》pdf+附書源碼
PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)
李沐大神開源《動手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計學(xué)習(xí)方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼
將機(jī)器學(xué)習(xí)模型部署為REST API
FashionAI服裝屬性標(biāo)簽圖像識別Top1-5方案分享
重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識別
同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?
前海征信大數(shù)據(jù)算法:風(fēng)險概率預(yù)測
【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類
VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識別分類工程項(xiàng)目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程
不斷更新資源
深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python
?搜索公眾號添加:?datayx??
