成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

GitHub開源130+Stars:手把手教你復現基于PPYOLO系列的目標檢測算法

人工智能 新聞
還在愁沒法入門目標檢測?這個倉庫一定得看看!作者復現了多個知名算法,訓練記錄都能查看。而且性能和原版持平,多機八卡也能跑!

目標檢測是計算機視覺領域的基礎任務,沒個稱手的Model Zoo怎么行?

今天給大家安利一個簡單好用的目標檢測的算法模型庫miemiedetection,目前在GitHub已斬獲130+顆star

代碼鏈接:https://github.com/miemie2013/miemiedetection

miemiedetection是基于YOLOX進行二次開發的個人檢測庫,還支持PPYOLO、PPYOLOv2、PPYOLOE、FCOS等算法。

得益于YOLOX的優秀架構,miemiedetection里的算法訓練速度都非常快,數據讀取不再是訓練速度的瓶頸。

代碼開發使用的深度學習框架為pyTorch,實現了可變形卷積DCNv2、Matrix NMS等高難度算子,支持單機單卡、單機多卡、多機多卡訓練模式(多卡訓練模式建議使用Linux系統),支持Windows、Linux系統。

并且由于miemiedetection是一個不需要安裝的檢測庫,用戶可以直接更改其代碼改變執行邏輯,所以向庫中添加新算法也很容易。

作者表示未來還會加入更多的算法支持(還有女裝)。

算法如假包換

復現模型,最重要的就是準確率要跟原版的基本相同。

先看PPYOLO、PPYOLOv2、PPYOLOE這三個模型,作者均經過了loss對齊、梯度對齊的實驗。

為了保留證據,在源碼中還可以看到注釋掉的讀寫*.npz 的部分,都是做對齊實驗遺留的代碼。

并且作者還詳細記錄了性能對齊的過程,對于新手來說,照著這條路走一遍,也是一個不錯的學習過程!

全部的訓練日志也都記錄保存在倉庫中,足以證明復現PPYOLO系列算法的正確性!

最后的訓練結果顯示,復現的PPYOLO算法和原版倉庫具有一樣的損失、一樣的梯度。

另外,作者也試著用原版倉庫和miemiedetection遷移學習voc2012數據集,也獲得了一樣的精度(使用了相同的超參數)。

和原版實現一樣,使用了同樣的學習率、同樣的學習率衰減策略warm_piecewisedecay(PPYOLO和PPYOLOv2使用)和warm_cosinedecay(PPYOLOE使用)、同樣的指數滑動平均EMA、同樣的數據預處理方式、同樣的參數L2權重衰減、同樣的損失、同樣的梯度、同樣的預訓練模型,遷移學習得到了同樣的精度。

實驗做得足,測試做得多,保證大家有美好的使用體驗!

不要998,也不要98,只要點個star,所有目標檢測算法免費帶回家!

模型下載與轉換

想跑通模型,參數很重要,作者提供了轉換好的預訓練pth權重文件,可以通過百度網盤直接下載。

鏈接:https://pan.baidu.com/s/1ehEqnNYKb9Nz0XNeqAcwDw

提取碼:qe3i

或者按照下面的步驟獲取:

第一步,下載權重文件,項目根目錄下執行(即下載文件,Windows用戶可以用迅雷或瀏覽器下載wget后面的鏈接,這里為了展現美觀,只以ppyoloe_crn_l_300e_coco為例):

注意,帶有pretrained字樣的模型是在ImageNet上預訓練的骨干網路,PPYOLO、PPYOLOv2、PPYOLOE加載這些權重以訓練COCO數據集。其余為COCO上的預訓練模型。

第二步,轉換權重,項目根目錄下執行:

其中各個參數的含義為:

- -f表示的是使用的配置文件;

- -c表示的是讀取的源權重文件;

- -oc表示的是輸出(保存)的pytorch權重文件;

- -nc表示的是數據集的類別數;

- --only_backbone為True時表示只轉換骨干網絡的權重;

執行完畢后就會在項目根目錄下獲得轉換好的*.pth權重文件。

手把手教學

在下面的命令中,大部分都會使用模型的配置文件,所以一開始就有必要先詳細解釋配置文件。

mmdet.exp.base_exp.BaseExp為配置文件基類,是一個抽象類,聲明了一堆抽象方法,如get_model()表示如何獲取模型,get_data_loader()表示如何獲取訓練的dataloader,get_optimizer()表示如何獲取優化器等等。

mmdet.exp.datasets.coco_base.COCOBaseExp是數據集的配置,繼承了BaseExp,它只給出數據集的配置。該倉庫只支持COCO標注格式的數據集的訓練!

其它標注格式的數據集,需要先轉換成COCO標注格式,才能訓練(支持太多標注格式的話,工作量太大)。可以通過miemieLabels將自定義的數據集轉換成COCO的標注格式。所有的檢測算法配置類都會繼承COCOBaseExp,表示所有的檢測算法共用同樣的數據集的配置。

COCOBaseExp的配置項有:

其中,

- self.num_classes表示的是數據集的類別數;

- self.data_dir表示的是數據集的根目錄;

- self.cls_names表示的是數據集的類別名文件路徑,是一個txt文件,一行表示一個類別名。如果是自定義數據集,需要新建一個txt文件并編輯好類別名,再修改self.cls_names指向它;

- self.ann_folder表示的是數據集的注解文件根目錄,需要位于self.data_dir目錄下;

- self.train_ann表示的是數據集的訓練集的注解文件名,需要位于self.ann_folder目錄下;

- self.val_ann表示的是數據集的驗證集的注解文件名,需要位于self.ann_folder目錄下;

- self.train_image_folder表示的是數據集的訓練集的圖片文件夾名,需要位于self.data_dir目錄下;

- self.val_image_folder表示的是數據集的驗證集的圖片文件夾名,需要位于self.data_dir目錄下;

對于VOC 2012數據集,則需要修改數據集的配置為:

另外,你也可以像exps/ppyoloe/ppyoloe_crn_l_voc2012.py中一樣,在子類中修改self.num_classes、self.data_dir這些數據集的配置,這樣COCOBaseExp的配置就被覆蓋掉(無效)了。

將前面提到的模型下載好后,在VOC2012數據集的self.data_dir目錄下新建一個文件夾annotations2,把voc2012_train.json、voc2012_val.json放進這個文件夾。

最后,COCO數據集、VOC2012數據集、本項目的放置位置應該是這樣:

數據集根目錄和miemiedetection-master是同一級目錄。我個人非常不建議把數據集放在miemiedetection-master里,那樣的話PyCharm打開會巨卡無比;而且,多個項目(如mmdetection、PaddleDetection、AdelaiDet)共用數據集時,可以做到數據集路徑和項目名無關。

mmdet.exp.ppyolo.ppyolo_method_base.PPYOLO_Method_Exp是實現具體算法所有抽象方法的類,繼承了COCOBaseExp,它實現了所有抽象方法。

exp.ppyolo.ppyolo_r50vd_2x.Exp是PPYOLO算法的Resnet50Vd模型的最終配置類,繼承了PPYOLO_Method_Exp;

PPYOLOE的配置文件也是類似這樣的結構。

預測

首先,如果輸入的數據為一張圖片,則在項目根目錄下執行:

其中各個參數的含義為:

- -f表示的是使用的配置文件;

- -c表示的是讀取的權重文件;

- --path表示的是圖片的路徑;

- --conf表示的是分數閾值,只會畫出高于這個閾值的預測框;

- --tsize表示的是預測時將圖片Resize成--tsize的分辨率;

預測完成后控制臺會打印結果圖片的保存路徑,用戶可打開查看。如果是使用訓練自定義數據集保存的模型進行預測,修改-c為你的模型的路徑即可。

如果預測的是一個文件夾下的所有圖片,則在項目根目錄下執行:

將--path修改為對應圖片文件夾的路徑即可。

訓練COCO2017數據集

如果讀取ImageNet預訓練骨干網絡訓練COCO數據集,則在項目根目錄下執行:

一條命令直接啟動單機八卡訓練,當然了,前提是你真的有一臺單機8卡的超算。

其中各個參數的含義為:

-f表示的是使用的配置文件;

-d表示的是顯卡數量;

-b表示的是訓練時的批大小(所有卡的);

-eb表示的是評估時的批大小(所有卡的);

-c表示的是讀取的權重文件;

--fp16,自動混合精度訓練;

--num_machines,機器數量,建議單機多卡訓練;

--resume表示的是是否是恢復訓練;

訓練自定義數據集

建議讀取COCO預訓練權重進行訓練,因為收斂快。

以上述的VOC2012數據集為例,對于ppyolo_r50vd模型,如果是1機1卡,輸入下述命令開始訓練:

如果訓練因為某些原因中斷,想要讀取之前保存的模型恢復訓練,只要修改-c為想要讀取模型的路徑,再加上--resume參數即可。

如果是2機2卡,即每臺機上1張卡,在0號機輸入以下命令:

并在1號機輸入以下命令:

只需要把上面2條命令的192.168.0.107改成0號機的局域網ip即可。

如果是1機2卡,則輸入下面的命令即可開始訓練:

遷移學習VOC2012數據集,實測ppyolo_r50vd_2x的AP(0.50:0.95)可以到達0.59+、AP(0.50)可以到達0.82+、AP(small)可以到達0.18+。不管是單卡還是多卡,都能得到這個結果。

遷移學習時和PaddleDetection獲得了一樣的精度、一樣的收斂速度,二者的訓練日志位于train_ppyolo_in_voc2012文件夾下。

如果是ppyoloe_l模型,在單機輸入下面的命令即可開始訓練(凍結了骨干網絡)

遷移學習VOC2012數據集,實測ppyoloe_l的AP(0.50:0.95)可以到達0.66+、AP(0.50)可以到達0.85+、AP(small)可以到達0.28+。

評估

命令和具體的參數如下。

在項目根目錄下運行結果為:

轉換權重后精度有一點損失,大約為0.4%。

責任編輯:張燕妮 來源: 新智元
相關推薦

2017-09-05 13:01:11

CocoaPods開源庫GitHub

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印機

2025-05-07 00:31:30

2024-01-26 08:16:48

Exporter開源cprobe

2021-05-27 11:10:42

Python開源包代碼

2021-07-13 10:17:25

GitHubLinux代碼

2021-07-14 09:00:00

JavaFX開發應用

2014-11-07 11:39:59

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2021-09-26 16:08:23

CC++clang_forma

2023-04-26 12:46:43

DockerSpringKubernetes

2022-01-08 20:04:20

攔截系統調用

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙

2022-07-27 08:16:22

搜索引擎Lucene

2022-12-07 08:42:35

2021-12-11 20:20:19

Python算法線性

2018-03-23 20:45:23

機器學習NLP文本數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产96色在线 | 久久亚洲国产精品日日av夜夜 | 国产成人精品一区二区三区四区 | 久久毛片 | 国产高清在线观看 | 久久亚洲欧美日韩精品专区 | 国产一区二区免费 | 日本涩涩视频 | 成人欧美一区二区三区在线观看 | 一本一道久久a久久精品综合蜜臀 | 久草视 | 亚洲福利在线观看 | 日韩在线观看 | 欧美高清一级片 | 精品欧美一区二区三区免费观看 | 午夜免费网站 | 国产一区二区免费 | 欧美日韩在线一区二区 | 国产精品成人久久久久 | 在线播放日韩 | 久草www| 国产在线永久免费 | 中国美女一级黄色片 | 日本一区二区高清视频 | 国产日韩欧美电影 | 亚洲国产精品日本 | 欧美一区二区三区免费在线观看 | 色橹橹欧美在线观看视频高清 | 久久久久久中文字幕 | 精品视频在线播放 | 久久久久欧美 | 亚洲一区国产精品 | 欧美日韩国产一区二区三区 | 激情91 | 成人在线一区二区 | 国产激情91久久精品导航 | 羞羞视频一区二区 | 一级毛片视频 | 国产精品看片 | 欧美精品在线观看 | 成年人黄色小视频 |