暗網目標偵測框架與 YOLO
[Darknet 和 Hank.ai 標誌]
Darknet 是一個用 C、C++ 和 CUDA 寫的開源神經網路框架。
YOLO(You Only Look Once)是一種在 Darknet 框架內運作的最先進的即時物件偵測系統。
了解 Hank.ai 如何幫助 Darknet/YOLO 社區
宣布暗網 V3“爵士樂”
請參閱 Darknet/YOLO 網站
請仔細閱讀 Darknet/YOLO 常見問題解答
加入 Darknet/YOLO Discord 伺服器
文件
1.論文YOLOv7
2. 紙尺度-YOLOv4
3.論文YOLOv4
4.論文YOLOv3
一般資訊
Darknet/YOLO 框架仍然比其他框架和 YOLO 版本更快、更準確。
該框架是完全免費且開源的。您可以將 Darknet/YOLO 整合到現有項目和產品中,包括商業項目和產品,而無需許可或支付費用。
Darknet V3(“Jazz”)於2024 年10 月發布,使用NVIDIA RTX 3090 GPU 時,可以以高達1000 FPS 的速度準確運行樂高數據集視頻,這意味著每個視頻幀都由Darknet/YOLO 在1 時間內讀取、調整大小和處理。
如果您需要協助或想要討論 Darknet/YOLO,請加入 Darknet/YOLO Discord 伺服器:https://discord.gg/zSq8rtW
Darknet/YOLO 的 CPU 版本可在 Raspberry Pi、雲端和 Colab 伺服器、桌上型電腦、筆記型電腦和高階訓練設備等簡單設備上運行。 Darknet/YOLO 的 GPU 版本需要 NVIDIA 提供的支援 CUDA 的 GPU。
眾所周知,Darknet/YOLO 可在 Linux、Windows 和 Mac 上運作。請參閱下面的建置說明。
暗網版本
Joseph Redmon 在 2013-2017 年所寫的原始暗網工具沒有版本號。我們認為這個版本是 0.x。
Alexey Bochkovskiy 在 2017 年至 2021 年間維護的下一個流行的暗網儲存庫也沒有版本號。我們認為這個版本是 1.x。
從 2023 年開始,由 Hank.ai 贊助並由 Stéphane Charette 維護的 Darknet 儲存庫是第一個帶有版本命令的儲存庫。從 2023 年到 2024 年底,它返回了版本 2.x「OAK」。
目標是在熟悉程式碼庫的同時嘗試盡可能少地破壞現有功能。以下是一些關鍵變化:
1. 重新編寫建置步驟,以便我們有 1 種統一的方法在 Windows 和 Linux 上使用 CMake 進行建置。
2. 轉換程式碼庫以使用 C++ 編譯器。
3. 訓練時增強chart.png。
4. 錯誤修復和與效能相關的最佳化,主要與減少訓練網路所需的時間有關。
該程式碼庫的最後一個分支是 v2 分支中的版本 2.1。
下一階段的開發於 2024 年中期開始,並於 2024 年 10 月發布。
如果您需要執行這些命令之一,您始終可以簽出先前的 v2 分支。請告訴我們,以便我們研究添加回所有丟失的命令。
以下是 Darknet V3「JAZZ」的一些關鍵變化:
1.刪除了許多舊的和未維護的命令。
2. 在訓練和推理過程中進行許多效能最佳化。
3. 修改了舊版C API。使用原始 Darknet API 的應用程式需要少量修改:https://darknetcv.ai/api/api.html
4. 新的 Darknet V3 C 和 C++ API:https://darknetcv.ai/api/api.html
5. src-examples 中的新應用程式和範例程式碼:https://darknetcv.ai/api/files.html
MSCOCO 預訓練權重
為了方便起見,YOLO 的幾個流行版本在 MSCOCO 資料集上進行了預訓練。該資料集有 80 個類,可以在文字檔案 cfg/coco.names 中看到。
還有其他幾個更簡單的資料集和預訓練權重可用於測試 Darknet/YOLO,例如 LEGO Gears 和 Rolodex。有關詳細信息,請參閱 Darknet/YOLO 常見問題解答。
MSCOCO 預訓練權重可以從幾個不同的位置下載,也可以從此儲存庫下載:
1.YOLOv2,2016 年 11 月
* YOLOv2-微小
* YOLOv2-完整
2.YOLOv3,2018 年 5 月
* YOLOv3-小
* YOLOv3-full
3.YOLOv4,2020 年 5 月
* YOLOv4-小
* YOLOv4-full
4.YOLOv7,2022 年 8 月
* YOLOv7-小
* YOLOv7-完整版
MSCOCO 預訓練權重僅用於演示目的。 MSCOCO 對應的 .cfg 和 .names 檔案位於 cfg 目錄中。命令範例:
`bash
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
請注意,人們應該訓練自己的網路。 MSCOCO 通常用於確認一切正常運作。
大樓
過去(2023 年之前)可用的各種建置方法已合併為一個統一的解決方案。 Darknet 需要 C++17 或更高版本、OpenCV,並使用 CMake 產生必要的專案檔案。
您不需要了解 C++ 來建造、安裝或運行 Darknet/YOLO,就像您不需要成為機械師來駕駛汽車一樣。
如果您遵循具有更複雜建置步驟的舊教學課程,或建置步驟與本自述文件中的內容不匹配,請注意。如下所述的新建步驟於 2023 年 8 月開始。
我們鼓勵軟體開發人員造訪 https://darknetcv.ai/ 以取得有關 Darknet/YOLO 物件偵測框架內部的資訊。
Google合作實驗室
Google Colab 指令與 Linux 指令相同。有多個 Jupyter 筆記本可以展示如何執行某些任務,例如訓練新網路。
請參閱 colab 子目錄中的筆記本,和/或按照下面的 Linux 說明進行操作。
Linux CMake方法
Linux 暗網建置教學課程
1. 選用:如果您有現代 NVIDIA GPU,則此時可以安裝 CUDA 或 CUDA+cuDNN。如果安裝,Darknet 將使用您的 GPU 來加速映像(和視訊)處理。
2. 您必須從 Darknet 建置目錄中刪除 CMakeCache.txt 文件,以強制 CMake 重新尋找所有必要的文件。
3.記得重建Darknet。
4. Darknet 可以在沒有它的情況下運行,但如果您想訓練自訂網絡,則需要 CUDA 或 CUDA+cuDNN。
造訪 https://developer.nvidia.com/cuda-downloads 下載並安裝 CUDA。
造訪 https://developer.nvidia.com/rdp/cudnn-download 或 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview 下載並安裝cuDNN。
安裝 CUDA 後,請確保可以執行 nvcc 和 nvidia-smi。您可能必須修改 PATH 變數。
如果您稍後安裝 CUDA 或 CUDA+cuDNN,或升級到較新版本的 NVIDIA 軟體:
這些說明假設(但不要求!)系統運行 Ubuntu 22.04。如果您使用不同的發行版,請根據需要進行調整。
`bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git 克隆 https://github.com/hank-ai/darknet
CD暗網
mkdir 構建
光碟建構
cmake -DCMAKEBUILDTYPE=發布 ..
製作-j4包
sudo dpkg -i darknet-VERSION.deb
`
如果您使用的是舊版的 CMake,則需要先升級 CMake,然後才能執行上面的 cmake 指令。可以使用以下命令在 Ubuntu 上升級 CMake:
`bash
sudo apt-get purge cmake
sudo snap install cmake --經典
`
如果使用 bash 作為命令 shell,此時您需要重新啟動 shell。如果使用魚,它應該立即選擇新路徑。
進階用戶:
如果您想要建立 RPM 安裝文件而不是 DEB 文件,請參閱 CM_package.cmake 中的相關行。在執行 make -j4 package 之前,您需要編輯以下兩行:
`bash
設定(CPACKGENERATOR“DEB”)#設定(CPACKGENERATOR“RPM”)
`
對於 Centos 和 OpenSUSE 等發行版,您需要將 CM_package.cmake 中的這兩行切換為:
`bash
設定(CPACK_GENERATOR“DEB”)
設定(CPACK_GENERATOR“RPM”)
`
若要在安裝套件完成建置後進行安裝,請使用您的發行版常用的套件管理器。例如,在基於 Debian 的系統(例如 Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
安裝 .deb 套件將複製以下檔案:
/usr/bin/darknet 是通常的 Darknet 執行檔。從 CLI 運行 darknet 版本以確認其安裝正確。
/usr/include/darknet.h 是 C、C++ 和 Python 開發人員的 Darknet API。
/usr/include/darknet_version.h 包含開發人員使用的版本資訊。
/usr/lib/libdarknet.so 是 C、C++ 和 Python 開發人員連結的函式庫。
/opt/darknet/cfg/... 是儲存所有 .cfg 範本的位置。
現在你已經完成了! Darknet 已建置並安裝到 /usr/bin/ 中。執行此測試:暗網版本。
如果你沒有 /usr/bin/darknet 那麼這意味著你沒有安裝它,你只是建造了它!確保如上所述安裝 .deb 或 .rpm 檔案。
Windows CMake方法
這些說明假定全新安裝 Windows 11 22H2。
1. 開啟普通的 cmd.exe 命令提示字元視窗並執行以下命令:
`bash
winget 安裝 Git.Git
winget 安裝 Kitware.CMake
winget安裝nsis.nsis
winget安裝Microsoft.VisualStudio.2022.社區
`
2. 此時,我們需要修改 Visual Studio 安裝以包含對 C++ 應用程式的支援:
點擊“Windows 開始”功能表並執行“Visual Studio Installer”。
單擊修改。
選擇使用 C++ 進行桌面開發。
點擊右下角的“修改”,然後按一下“是”。
3. 下載並安裝所有內容後,再次按一下「Windows 開始」選單,然後選擇 VS 2022 的開發人員命令提示字元。
進階用戶:
您可以使用普通命令提示字元或 ssh 進入裝置並手動執行“Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat”,而不是執行開發人員命令提示字元。
4. 依照上述方式執行開發人員命令提示字元(不是 PowerShell!)後,執行以下命令來安裝 Microsoft VCPKG,然後它將用於建置 OpenCV:
`bash
疾病管制署:
mkdir c:src
cd c:src
git 克隆 https://github.com/microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe 整合安裝
.vcpkg.exe 整合powershell
.vcpkg.exe 安裝 opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
最後一步請耐心等待,因為它可能需要很長時間才能運行。它需要下載和構建很多東西。
進階用戶:
請注意,在建置 OpenCV 時您可能需要添加許多其他可選模組。運行 .vcpkg.exe 搜尋 opencv 以查看完整清單。
5. 選用:如果您有現代 NVIDIA GPU,則此時可以安裝 CUDA 或 CUDA+cuDNN。如果安裝,Darknet 將使用您的 GPU 來加速映像(和視訊)處理。
6. 您必須從 Darknet 建置目錄中刪除 CMakeCache.txt 文件,以強制 CMake 重新尋找所有必要的文件。
7. 記得重建暗網。
8. Darknet 可以在沒有它的情況下運行,但如果您想訓練自訂網絡,則需要 CUDA 或 CUDA+cuDNN。
造訪 https://developer.nvidia.com/cuda-downloads 下載並安裝 CUDA。
造訪 https://developer.nvidia.com/rdp/cudnn-download 或 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows 下載並安裝 cuDNN。
安裝 CUDA 後,請確保可以執行 nvcc.exe 和 nvidia-smi.exe。您可能必須修改 PATH 變數。
下載 cuDNN 後,解壓縮並將 bin、include 和 lib 目錄複製到 C:/Program Files/NVIDIA GPU Compute Toolkit/CUDA/[version]/ 中。您可能需要覆蓋一些文件。
如果您稍後安裝 CUDA 或 CUDA+cuDNN,或升級到較新版本的 NVIDIA 軟體:
CUDA 必須在 Visual Studio 之後安裝。如果升級 Visual Studio,請記得重新安裝 CUDA。
9. 成功完成上述所有步驟後,您需要複製 Darknet 並建立它。在此步驟中,我們還需要告訴 CMake vcpkg 所在位置,以便它可以找到 OpenCV 和其他依賴:
`bash
cd c:src
git 克隆 https://github.com/hank-ai/darknet.git
CD暗網
mkdir 構建
光碟建構
cmake -DCMAKEBUILDTYPE=發布-DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:平台=x64;設定=發布 PACKAGE.vcxproj
`
10. 如果出現缺少某些 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的錯誤,請手動將 CUDA .dll 檔案複製到與 Darknet.exe 相同的輸出目錄中。例如:
`bash
複製“C:Program FilesNVIDIA GPU計算工具包CUDAv12.2bin * .dll”src-cliRelease
`
(這是一個範例!檢查以確保您正在執行什麼版本,然後執行適合您已安裝的版本的命令。)
11. 複製檔案後,重新執行最後一個 msbuild.exe 指令以產生 NSIS 安裝套件:
`bash
msbuild.exe /property:平台=x64;設定=發布 PACKAGE.vcxproj
`
進階用戶:
請注意,cmake 指令的輸出是普通的 Visual Studio 解決方案檔案 Darknet.sln。如果您是經常使用 Visual Studio GUI 而不是 msbuild.exe 來建置專案的軟體開發人員,則可以忽略命令列並在 Visual Studio 中載入 Darknet 專案。
您現在應該擁有可以運行的檔案:C:srcDarknetbuildsrc-cliReleasedarknet.exe。執行此命令來測試:C:srcDarknetbuildsrc-cliReleasedarknet.exe 版本。
若要正確安裝 Darknet、程式庫、包含檔案和必要的 DLL,請執行上一個步驟中建置的 NSIS 安裝精靈。請參閱建置目錄中的檔案 darknet-VERSION.exe。例如:
`bash
darknet-2.0.31-win64.exe
`
安裝 NSIS 安裝包將:
建立一個名為 Darknet 的目錄,例如 C:Program FilesDarknet。
安裝 CLI 應用程式、darknet.exe 和其他範例應用程式。
安裝所需的第 3 方 .dll 文件,例如來自 OpenCV 的文件。
安裝必要的 Darknet .dll、.lib 和 .h 檔案以使用其他應用程式中的 darknet.dll。
安裝模板 .cfg 檔案。
現在你已經完成了!安裝精靈完成後,Darknet 將會安裝到 C:Program FilesDarknet 中。執行此命令來測試:C:Program FilesDarknetbindarknet.exe 版本。
如果您沒有 C:/Program Files/darknet/bin/darknet.exe 那麼這表示您沒有安裝它,您只是建置了它!確保您在上一個步驟中完成了 NSIS 安裝精靈的每個面板。
使用暗網
命令列介面
以下不是 Darknet 支援的所有命令的完整列表。
除了 Darknet CLI 之外,請注意 DarkHelp 專案 CLI,它提供了 Darknet/YOLO 的替代 CLI。 DarkHelp CLI 還具有一些在 Darknet 中無法直接使用的進階功能。您可以同時使用 Darknet CLI 和 DarkHelp CLI,它們並不互相排斥。
對於下面顯示的大多數命令,您需要 .weights 檔案以及相應的 .names 和 .cfg 檔案。您可以訓練自己的網路(強烈建議!),也可以下載某人已經訓練過並在網路上免費提供的神經網路。預訓練資料集的範例包括:
1. LEGO Gears(在影像中尋找物件)
2. Rolodex(在圖像中尋找文字)
3.MSCOCO(標準80級物體偵測)
要運行的命令包括:
1. 列出一些可能會運行的命令和選項:
`bash
暗網幫助
`
2、檢查版本:
`bash
暗網版本
`
3. 使用影像進行預測:
V2:
`bash
暗網探測器測試 cars.data cars.cfg cars_best.weights image1.jpg
`
V3:
`bash
darknet02displayannotatedimages cars.cfg image1.jpg
`
黑暗幫助:
`bash
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
4、輸出座標:
V2:
`bash
暗網探測器測試animals.dataanimals.cfganimalsbest.weights-extoutputdog.jpg
`
V3:
`bash
darknet01inference_images 動物 狗.jpg
`
黑暗幫助:
`bash
DarkHelp --json Animals.cfg Animals.names Animals_best.weights Dog.jpg
`
5. 處理影片:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animalbest.weights -extoutput test.mp4
`
V3:
`bash
darknet03display_videos Animals.cfg test.mp4
`
黑暗幫助:
`bash
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
6. 從網路攝影機讀取資料:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`bash
darknet08display_網路攝影機動物
`
7. 將結果儲存到影片中:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animalbest.weights test.mp4 -outfilename res.avi
`
V3:
`bash
darknet05processvideos多線程animals.cfganimals.namesanimals_best.weightstest.mp4
`
黑暗幫助:
`bash
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
8.JSON:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3:
`bash
darknet06imagestojson 動物 image1.jpg
`
黑暗幫助:
`bash
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
`
9. 在特定GPU上運作:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. 檢查神經網路的準確性:
`bash
暗網探測器地圖 Driving.data Driving.cfg moving_best.weights ...
`
`
Id 名稱AvgPrecision TP FN FP TN 準確度ErrorRate 精確度Recall 特異性FalsePosRate -- ---- ------------ ------ ------ ---- -- - ----- -------- --------- --------- ------ ---------- ---- -- ---------- 0 輛汽車91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821 1 輛摩托車 80.4938 50953 5095 13950 5093195 5093195 5093195 509395 509395 5093195 5093195 5093195 509319509395 509395 509395 509395 509395 509395 509395039395 13953950399 50 0 .8377 0.8513 0.9046 0.0954 2 自行車89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285 3人76.7937 7072 1727 2574 27523 30. 45 0.0855 4輛64.3089 1068 509 733 11288 0.9087 0.0913 0.593 0 0.6772 0.9390 0.0610 5 綠燈 19811969191969191919691919. 6 0.7943 0.8918 0.8898 0.1102 6 黃燈82.0390 126 38 30 1239 0. 9525 0.0475 0.8077 0.7683 0.9764 0.0236 7 紅光 94.1033 0.9764 0.0236 7 紅光 94.1033 3449 21743. 0.9408 0.9115 0.0885
`
11. 檢查精度 mAP@IoU=75:
`bash
暗網探測器地圖animals.dataanimals.cfganimalsbest.weights-iothresh 0.75
`
12. 重新計算錨點最好在 DarkMark 中完成,因為它將連續運行 100 次並從所有計算的錨點中選擇最佳錨點。但如果你想在 Darknet 中運行舊版:
`bash
暗網探測器 calcanchors Animals.data -numof_clusters 6 -寬度 320 -高度 256
`
13. 訓練新網路:
`bash
darknet detector -map -dont_show train Animals.data Animals.cfg(另請參閱下面的訓練部分)
`
訓練
暗網/YOLO 常見問題相關部分的快速連結:
我應該如何設定我的文件和目錄?
我應該使用哪個設定檔?
訓練自己的網路時應該使用什麼指令?
最簡單的註解和訓練方法是使用 DarkMark 建立所有必要的 Darknet 檔案。這絕對是訓練新神經網路的推薦方法。
如果您想手動設定各種文件來訓練自訂網路:
1. 建立一個用於儲存檔案的新資料夾。對於本例,將建立一個神經網路來偵測動物,因此建立以下目錄:~/nn/animals/。
2. 複製您想要用作範本的暗網設定檔之一。例如,請參閱 cfg/yolov4-tiny.cfg。將其放入您建立的資料夾中。對於此範例,我們現在有 ~/nn/animals/animals.cfg。
3. 在放置設定檔的相同資料夾中建立animals.names 文字檔。對於此範例,我們現在有 ~/nn/animals/animals.names。
4. 使用文字編輯器編輯animals.names 檔案。列出您要使用的類別。每行必須有 1 個條目,沒有空白行,也沒有註解。對於此範例,.names 檔案將包含 4 行:
`
狗
貓
鳥
馬
`
5. 在同一資料夾中建立animals.data 文字檔。對於此範例,.data 檔案將包含:
`
班級=4
train=/home/使用者名稱/nn/animals/animals_train.txt
valid=/home/使用者名稱/nn/animals/animals_valid.txt
名稱=/home/使用者名稱/nn/animals/animals.names
備份=/home/用戶名/nn/animals
`
6. 建立一個資料夾,用於儲存影像和註釋。例如,這可能是 ~/nn/animals/dataset。每個圖像都需要一個相應的 .txt 檔案來描述該圖像的註釋。 .txt 註解文件的格式非常具體。您無法手動建立這些文件,因為每個註釋都需要包含註釋的精確座標。請參閱 DarkMark 或其他類似軟體來註釋您的影像。 YOLO 註釋格式在 Darknet/YOLO FAQ 中有描述。
7. 建立在.data 檔案中命名的「train」和「valid」文字檔。這兩個文字檔案需要單獨列出 Darknet 在計算 mAP% 時必須用於訓練和驗證的所有圖像。每行只有一張圖像。路徑和檔案名稱可以是相對的或絕對的。
8. 使用文字編輯器修改 .cfg 檔案。
確保批次=64。
注意細分。根據網路尺寸和 GPU 上可用的記憶體量,您可能需要增加細分。最好使用的值是 1,因此從該值開始。如果 1 不適合您,請參閱 Darknet/YOLO 常見問題。
注意 maxbatches=...。對於此範例,我們有 4 隻動物,因此 4 2000 = 8000。
注意steps=...。對於此範例,我們將使用steps=6400,7200,因為 maxbatches 設定為 8000。
注意 width=... 和 height=.... 這些是網路尺寸。 Darknet/YOLO 常見問題解答說明如何計算最佳使用大小。
搜尋 class=... 行的所有實例,並使用 .names 檔案中的類別數對其進行修改。對於本例,我們將使用classes=4。
在每個 [yolo] 部分之前的 [卷積] 部分中搜尋 linefilters=... 的所有實例。要使用的值是 (numberofclasses + 5) 3。
9.開始訓練!運行以下命令:
`bash
cd ~/nn/動物/
暗網探測器-map-dont_show火車animals.dataanimals.cfg
`
要有耐心。最佳權重將儲存為animals_best.weights。並且可以透過查看chart.png檔案來觀察訓練的進度。請參閱 Darknet/YOLO 常見問題解答,以了解訓練新網路時可能需要使用的其他參數。
如果您想在訓練過程中查看更多詳細信息,請添加 --verbose 參數。例如:
`bash
暗網探測器-map-dont_show--verbose火車animals.dataanimals.cfg
`
其他工具和鏈接
1. 若要管理您的 Darknet/YOLO 專案、註釋圖像、驗證註釋並產生使用 Darknet 進行訓練所需的文件,請參閱 DarkMark。
2. 如需 Darknet 的強大替代 CLI、使用圖像平鋪、影片中的物件跟踪,或可輕鬆在商業應用程式中使用的強大 C++ API,請參閱 DarkHelp。
3.看看Darknet/YOLO常見問題解答是否可以幫助解答您的問題。
4. 在 Stéphane 的 YouTube 頻道上觀看許多教學和範例影片。
5. 如果您有支援問題或想與其他 Darknet/YOLO 使用者聊天,請加入 Darknet/YOLO Discord 伺服器。
路線圖
最後更新於 2024 年 10 月 30 日:
完全的
1. 將訓練期間使用的 qsort() 替換為 std::sort() (仍有其他一些模糊的)
2. 擺脫 check_mistakes、getchar() 和 system()
3. 將 Darknet 轉換為使用 C++ 編譯器(Linux 上為 g++,Windows 上為 VisualStudio)
4.修復Windows構建
5.修復Python支持
6. 建置暗網庫
7. 重新啟用預測標籤(「字母」代碼)
8.重新啟用CUDA/GPU程式碼
9.重新啟用CUDNN
10.重新啟用CUDNN一半
11.不要對CUDA架構進行硬編碼
12.更好的CUDA版本信息
13.重新啟用AVX
14.刪除舊的解決方案和Makefile
15.使OpenCV成為非可選
16.刪除對舊pthread函式庫的依賴
17.刪除機上盒
18.重寫CMakeLists.txt以使用新的CUDA檢測
19.刪除舊的「字母」代碼,並刪除資料/標籤中的700+影像
20. 外源構建
21.有更好的版本號輸出
22. 與訓練相關的表現最佳化(正在進行的任務)
23. 與推理相關的效能最佳化(正在進行的任務)
24. 盡可能透過引用傳遞
25.清理.hpp文件
26.重寫darknet.h
27. 不要將 cv::Mat 轉換為 void* 而是將其用作正確的 C++ 對象
28. 修復或保持內部影像結構的使用方式一致
29.修復基於 ARM 的 Jetson 設備的構建
* 原始 Jetson 裝置不太可能修復,因為 NVIDIA 不再支援它們(無 C++17 編譯器)
* 新的 Jetson Orin 設備正在運行
30.修復V3中的Python API
* 需要對 Python 提供更好的支援(任何 Python 開發人員想為此提供協助嗎?)
短期目標
1. 將 printf() 替換為 std::cout (正在進行中)
2.查看舊的 zed 相機支持
3.更好、更一致的命令列解析(正在進行中)
中期目標
1. 刪除所有 char* 程式碼並替換為 std::string
2.不要隱藏警告並清理編譯器警告(正在進行中)
3.更好地使用cv::Mat代替C中的自訂影像結構(正在進行中)
4. 用 std::vector 或 std::list 取代舊的清單功能
5.修復對1通道灰階影像的支持
6. 增加對 N > 3 的 N 通道影像的支援(例如,具有附加深度或熱通道的影像)
7. 正在進行的程式碼清理(正在進行中)
長期目標
1.修復所有GPU的CUDA/CUDNN問題
2.重寫CUDA+cuDNN程式碼
3.考慮新增對非 NVIDIA GPU 的支持
4.旋轉邊界框,或某種「角度」支持
5. 關鍵點/骨架
6. 熱圖(進行中)
7. 細分