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資料集,則需要修改資料集的配置為:
將前面提到的模型下載好後,在VOC2012資料集的self.data_dir目錄下新建一個資料夾annotations2,把voc2012_train.json、voc2012_val.json放進這個文件夾。
最後,COCO資料集、VOC2012資料集、本專案的放置位置應該是這樣:
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修改為對應圖片資料夾的路徑即可。 如果讀取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%。 預測
訓練COCO2017資料集
訓練自訂資料集
評估
以上是GitHub開源130+Stars:手把手教你重現基於PPYOLO系列的目標偵測演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

文字標註工作是將標籤或標記與文字中特定內容相對應的工作。其主要目的是為文本提供額外的信息,以便進行更深入的分析和處理,尤其是在人工智慧領域。文字標註對於人工智慧應用中的監督機器學習任務至關重要。用於訓練AI模型,有助於更準確地理解自然語言文本訊息,並提高文本分類、情緒分析和語言翻譯等任務的表現。透過文本標註,我們可以教導AI模型識別文本中的實體、理解上下文,並在出現新的類似數據時做出準確的預測。本文主要推薦一些較好的開源文字標註工具。 1.LabelStudiohttps://github.com/Hu

圖像標註是將標籤或描述性資訊與圖像相關聯的過程,以賦予圖像內容更深層的含義和解釋。這個過程對於機器學習至關重要,它有助於訓練視覺模型以更準確地識別圖像中的各個元素。透過為圖像添加標註,使得電腦能夠理解圖像背後的語義和上下文,從而提高對圖像內容的理解和分析能力。影像標註的應用範圍廣泛,涵蓋了許多領域,如電腦視覺、自然語言處理和圖視覺模型具有廣泛的應用領域,例如,輔助車輛識別道路上的障礙物,幫助疾病的檢測和診斷透過醫學影像識別。本文主要推薦一些較好的開源免費的圖片標註工具。 1.Makesens

寫在前面&筆者的個人理解目前,在整個自動駕駛系統當中,感知模組扮演了其中至關重要的角色,行駛在道路上的自動駕駛車輛只有通過感知模組獲得到準確的感知結果後,才能讓自動駕駛系統中的下游規控模組做出及時、正確的判斷和行為決策。目前,具備自動駕駛功能的汽車中通常會配備包括環視相機感測器、光達感測器以及毫米波雷達感測器在內的多種數據資訊感測器來收集不同模態的信息,用於實現準確的感知任務。基於純視覺的BEV感知演算法因其較低的硬體成本和易於部署的特點,以及其輸出結果能便捷地應用於各種下游任務,因此受到工業

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

多模態文件理解能力新SOTA!阿里mPLUG團隊發布最新開源工作mPLUG-DocOwl1.5,針對高解析度圖片文字辨識、通用文件結構理解、指令遵循、外部知識引入四大挑戰,提出了一系列解決方案。話不多說,先來看效果。複雜結構的圖表一鍵識別轉換為Markdown格式:不同樣式的圖表都可以:更細節的文字識別和定位也能輕鬆搞定:還能對文檔理解給出詳細解釋:要知道,“文檔理解”目前是大語言模型實現落地的一個重要場景,市面上有許多輔助文檔閱讀的產品,有的主要透過OCR系統進行文字識別,配合LLM進行文字理

向大家介紹一個最新的AIGC開源專案-AnimagineXL3.1。這個專案是動漫主題文字到圖像模型的最新迭代,旨在為用戶提供更優化和強大的動漫圖像生成體驗。在AnimagineXL3.1中,開發團隊專注於優化了幾個關鍵方面,以確保模型在效能和功能上達到新的高度。首先,他們擴展了訓練數據,不僅包括了先前版本中的遊戲角色數據,還加入許多其他知名動漫系列的數據納入訓練集中。這項舉措豐富了模型的知識庫,使其能夠更全面地理解各種動漫風格和角色。 AnimagineXL3.1引入了一組新的特殊標籤和美學標

FP8和更低的浮點數量化精度,不再是H100的「專利」了!老黃想讓大家用INT8/INT4,微軟DeepSpeed團隊在沒有英偉達官方支援的條件下,硬生在A100上跑起FP6。測試結果表明,新方法TC-FPx在A100上的FP6量化,速度接近甚至偶爾超過INT4,而且比後者擁有更高的精度。在此基礎之上,還有端到端的大模型支持,目前已經開源並整合到了DeepSpeed等深度學習推理框架中。這項成果對大模型的加速效果也是立竿見影──在這種框架下用單卡跑Llama,吞吐量比雙卡還要高2.65倍。一名
