暗網目標偵測框架與 YOLO
!darknet 和 hank.ai 徽標
Darknet 是一個開源神經網路框架,主要以 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 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」。
目標是在熟悉程式碼庫的同時嘗試盡可能少地破壞現有功能。
Darknet 2.x 中的主要變更包括:
重新編寫了 Windows 和 Linux 上基於 CMake 的統一建置的建置步驟。
將程式碼庫轉換為使用 C++ 編譯器。
增強了訓練期間的 Chart.png 視覺化。
錯誤修復和效能優化,主要集中在減少訓練時間。
該程式碼庫的最後一個分支是 v2 分支中的版本 2.1。
下一階段的開發於 2024 年中期開始,並於 2024 年 10 月發布。
如果您需要執行這些命令之一,您始終可以簽出先前的 v2 分支。如果您遇到任何遺失的命令,請告訴我們。
Darknet 3.x 中的主要變更包括:
刪除許多舊的和未維護的命令。
訓練和推理的顯著表現最佳化。
修改舊版 C API,需要對使用原始 Darknet API 的應用程式進行少量修改。請參閱此處更新的 API 文件:https://darknetcv.ai/api/api.html
引進新的 Darknet V3 C 和 C++ API:https://darknetcv.ai/api/api.html
src-examples 目錄中的新應用程式和範例程式碼:https://darknetcv.ai/api/files.html
MSCOCO 預訓練權重
為了方便起見,YOLO 的幾個流行版本在 MSCOCO 資料集上進行了預訓練。該資料集包含 80 個類,可以在 cfg/coco.names 文字檔案中找到。
還有其他幾個更簡單的資料集和預訓練權重可用於測試 Darknet/YOLO,例如 LEGO Gears 和 Rolodex。有關詳細信息,請參閱 Darknet/YOLO 常見問題解答。
MSCOCO 預訓練權重可從各個位置下載,包括此儲存庫:
YOLOv2(2016 年 11 月)
YOLOv2-微小
YOLOv2-full
YOLOv3(2018 年 5 月)
YOLOv3-微小
YOLOv3-full
YOLOv4(2020 年 5 月)
YOLOv4-小
YOLOv4-full
YOLOv7(2022 年 8 月)
YOLOv7-微小
YOLOv7-full
MSCOCO 預訓練權重僅用於演示目的。 MSCOCO 對應的 .cfg 和 .names 檔案位於 cfg 目錄中。命令範例:
`
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.安裝必要的套件:
`bash
sudo apt-get install build-essential git libopencv-dev cmake
`
2.克隆暗網儲存庫:
`bash
mkdir ~/src 目錄
cd ~/src
git 克隆 https://github.com/hank-ai/darknet
CD暗網
`
3. 建立建置目錄並執行 CMake:
`bash
mkdir 構建
光碟建構
cmake -DCMAKEBUILDTYPE=發布 ..
`
4. 建構暗網:
`bash
使-j4
`
5.可選:安裝CUDA或CUDA+cuDNN
如果您有現代 NVIDIA GPU,則可以安裝 CUDA 或 CUDA+cuDNN。這將允許 Darknet 使用您的 GPU 進行更快的影像和視訊處理。
- 從 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- 下載並安裝 cuDNN安裝概述。
重要提示:如果您在建置 Darknet 後安裝 CUDA 或 CUDA+cuDNN,則必須刪除建置目錄中的 CMakeCache.txt 檔案並重新執行 cmake 以確保 CMake 可以找到必要的檔案。
注意:Darknet 可以在沒有 CUDA 的情況下運行,但如果要訓練自訂網絡,則需要 CUDA 或 CUDA+cuDNN。
6.打包安裝Darknet:
`bash
製作包包
sudo dpkg -i darknet-VERSION.deb
`
重要提示:如果您使用的是舊版本的 CMake,則可能需要在執行 cmake 命令之前對其進行升級。使用以下命令在 Ubuntu 上升級 CMake:
`bash
sudo apt-get purge cmake
sudo snap install cmake --經典
`
進階用戶:
- 如果要建立 RPM 安裝檔案而不是 DEB 文件,請在執行 make package 之前編輯 CM_package.cmake 中的以下兩行:
`cmake
# 設定(CPACK_GENERATOR“DEB”)
設定(CPACK_GENERATOR“RPM”)
`
- 若要在安裝套件完成建置後安裝它,請使用您的發行版的套件管理器。例如,在基於 Debian 的系統(如 Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
- 安裝 .deb 套件將複製以下檔案:
- /usr/bin/darknet: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/ 中。從 CLI 運行 darknet 版本以確認安裝。
Windows CMake方法
這些說明假定全新安裝 Windows 11 22H2。
1.安裝所需軟體:
`powershell
winget 安裝 Git.Git
winget 安裝 Kitware.CMake
winget安裝nsis.nsis
winget安裝Microsoft.VisualStudio.2022.社區
`
2.修改Visual Studio安裝:
- 開啟「Windows 開始」功能表並執行「Visual Studio 安裝程式」。
- 按一下「修改」。
- 選擇「使用 C++ 進行桌面開發」。
- 點擊右下角的“修改”,然後按一下“是”。
3.安裝微軟VCPKG:
- 開啟「Windows 開始」功能表並選擇「VS 2022 的開發人員命令提示字元」。請勿使用 PowerShell 執行這些步驟。
- 進階使用者:您可以使用普通命令提示字元或 ssh 進入裝置並手動執行 Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat,而不是執行開發人員命令提示字元。
- 執行以下命令:
`powershell
疾病管制署:
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 以查看完整清單。
4.可選:安裝CUDA或CUDA+cuDNN
如果您有現代 NVIDIA GPU,則可以安裝 CUDA 或 CUDA+cuDNN。這將允許 Darknet 使用您的 GPU 進行更快的影像和視訊處理。
- 從 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。
重要提示:如果您在建置 Darknet 後安裝 CUDA 或 CUDA+cuDNN,則必須刪除建置目錄中的 CMakeCache.txt 檔案並重新執行 cmake 以確保 CMake 可以找到必要的檔案。
注意:Darknet 可以在沒有 CUDA 的情況下運行,但如果要訓練自訂網絡,則需要 CUDA 或 CUDA+cuDNN。
5.克隆暗網並建構它:
`powershell
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
`
重要的:
- CUDA 安裝:CUDA 必須在 Visual Studio 之後安裝。如果升級 Visual Studio,請記得重新安裝 CUDA。
- 缺少 DLL:如果遇到有關缺少 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的錯誤,請手動將 CUDA .dll 檔案複製到與 darknet.exe 相同的輸出目錄中。例如:
`powershell
複製「C: Program Files NVIDIA GPU運算工具包 CUDA v12.2 bin *.dll」src-cli Release
`
(這是一個範例;檢查您正在執行的 CUDA 版本並相應地調整路徑。)
- 重新執行msbuild.exe:複製.dll檔案後,重新執行最後的msbuild.exe命令以產生NSIS安裝包:
`powershell
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 版本。
6.安裝暗網:
- 執行上一個步驟中建置的 NSIS 安裝精靈。在建置目錄中尋找檔案 darknet-VERSION.exe。例如:
`
darknet-2.0.31-win64.exe
`
- NSIS 安裝套件將:
- 建立一個名為 Darknet 的目錄,例如 C:Program FilesDarknet。
- 安裝 CLI 應用程式 (darknet.exe) 和其他範例應用程式。
- 安裝所需的第三方 .dll 文件,例如 OpenCV 中的文件。
- 安裝必要的 Darknet .dll、.lib 和 .h 檔案以使用其他應用程式中的 darknet.dll。
- 安裝模板 .cfg 檔案。
- 現在你已經完成了!安裝精靈完成後,Darknet 將會安裝到 C:Program FilesDarknet。執行此指令測試:C:Program FilesDarknetbindarknet.exe 版本。
使用暗網
命令列介面
以下並不是 Darknet 支援的所有指令的完整清單。
除了 Darknet CLI 之外,還可以考慮 DarkHelp 專案 CLI,它提供了 Darknet/YOLO 的替代 CLI,具有 Darknet 中無法直接提供的高級功能。您可以同時使用 Darknet CLI 和 DarkHelp CLI。
對於下面的大多數命令,您將需要 .weights 檔案以及相應的 .names 和 .cfg 檔案。您可以訓練自己的網路(強烈建議!)或從網路下載預先訓練的網路。預訓練資料集的範例包括:
LEGO Gears(用於尋找影像中的物體)
Rolodex(用於尋找圖像中的文字)
MSCOCO(標準80級物體偵測)
運行命令:
獲得幫助:
`bash
暗網幫助
`
檢查版本:
`bash
暗網版本
`
使用影像進行預測:
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
`
輸出座標:
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
`
處理影片:
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
`
從網路攝影機讀取:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`bash
darknet08display_網路攝影機動物
`
將結果儲存到影片:
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
`
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
`
在特定 GPU 上運行:
V2:
`bash
暗網探測器示範 Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
檢查神經網路的準確性:
`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
`
檢查精度 mAP@IoU=75:
`bash
暗網探測器地圖animals.dataanimals.cfganimalsbest.weights-iothresh 0.75
`
重新計算錨點:
最好在 DarkMark 中重新計算錨點,因為它會連續運行 100 次並選擇最佳錨點。但是,如果您想在 Darknet 中使用舊版本:
`bash
暗網探測器 calcanchors Animals.data -numof_clusters 6 -寬度 320 -高度 256
`
訓練新網路:
`bash
暗網探測器-map-dont_show火車animals.dataanimals.cfg
`
(另請參閱下面的培訓部分)
訓練
暗網/YOLO 常見問題相關部分的快速連結:
我應該如何設定我的文件和目錄?
我應該使用哪個設定檔?
訓練自己的網路時應該使用什麼指令?
最簡單的註解和訓練方法是使用 DarkMark,它會建立所有必要的 Darknet 檔案。這是訓練新神經網路的推薦方法。
如果您喜歡手動設定各種文件來訓練自訂網路:
1. 新建資料夾:
- 選擇一個資料夾來儲存您的檔案。對於此範例,我們將建立一個神經網路來檢測動物,因此目錄將為 ~/nn/animals/。
2.複製暗網設定檔:
- 複製暗網設定檔作為範本。例如,使用 cfg/yolov4-tiny.cfg。將其放入您建立的資料夾中。現在,您應該有 ~/nn/animals/animals.cfg。
3. 建立animals.names文字檔:
- 在與設定檔相同的資料夾中建立animals.names 文字檔案。您現在擁有 ~/nn/animals/animals.names。
4. 編輯animals.names檔:
- 使用文字編輯器編輯animals.names 檔案。列出您想要偵測的類,每行只有一個條目,沒有空白行,也沒有註解。對於此範例,.names 檔案將包含四行:
`
狗
貓
鳥
馬
`
5. 建立animals.data文字檔:
- 在同一資料夾中建立animals.data 文字檔。對於此範例,.data 檔案將包含:
`
班級 = 4
火車 = /home/使用者名稱/nn/animals/animals_train.txt
有效 = /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. 建立「train」和「valid」文字檔:
- 建立在 .data 檔案中命名的「train」和「valid」文字檔案。
- 這兩個文字檔案應列出 Darknet 將用於訓練和驗證(用於計算 mAP%)的所有圖像。
- 每一行應包含一個影像路徑和檔名。您可以使用相對或絕對路徑。
8.修改.cfg檔:
- 使用文字編輯器修改您的.cfg 檔案:
- 確保批次=64。
- 細分:根據網路尺寸和 GPU 內存,您可能需要調整細分。從 subdivisions=1 開始,如果不起作用,請參閱 Darknet/YOLO FAQ。
- Maxbatches:將 maxbatches 的起始值設定為類別數的 2000 倍。對於本例,我們有 4 隻動物,因此 max_batches=8000。
- 步驟:將步驟設定為 max_batches 的 80% 和 90%。在本例中,我們將使用steps=6400,7200。
- 寬度和高度:這些是網路尺寸。 Darknet/YOLO FAQ 說明如何計算最佳大小。
- 類別:搜尋classes=... 的所有實例,並使用 .names 檔案中的類別數進行更新。在此範例中,我們將使用classes=4。
- 過濾器:在每個[yolo]部分之前的[卷積]部分中搜尋filters=...的所有實例。要使用的值是 (numberofclasses + 5) 3。
9. 開始訓練:
- 導航至 ~/nn/animals/ 目錄:
`bash
cd ~/nn/動物/
`
- 執行以下命令開始訓練:
`bash
暗網探測器-map-dont_show火車animals.dataanimals.cfg
`
- 要有耐心。最佳權重將儲存為animals_best.weights。您可以透過觀察chart.png檔案來追蹤訓練進度。請參閱 Darknet/YOLO 常見問題解答,以了解您在訓練期間可能需要使用的其他參數。
- 如果您想要更詳細的訓練信息,請添加 --verbose 參數:
`bash
暗網探測器-map-dont_show--verbose火車animals.dataanimals.cfg
`
其他工具和鏈接
DarkMark:用於管理 Darknet/YOLO 專案、註釋圖像、驗證註釋以及產生用於 Darknet 訓練的檔案。
DarkHelp:用於 Darknet 的強大替代 CLI,使用影像平鋪、影片中的物件追蹤以及適合商業應用程式的強大 C++ API。
Darknet/YOLO 常見問題:用於回答您的問題的綜合資源。
Stéphane 的 YouTube 頻道:大量教學和範例影片。
Darknet/YOLO Discord 伺服器:加入社群以獲得支援和討論。
路線圖
最後更新於 2024 年 10 月 30 日:
完全的:
在訓練期間將 qsort() 替換為 std::sort() (仍有其他一些模糊的)。
刪除了 check_mistakes、getchar() 和 system()。
將 Darknet 轉換為使用 C++ 編譯器(Linux 上為 g++,Windows 上為 VisualStudio)。
修復了 Windows 版本。
修復了 Python 支援。
建立了暗網庫。
重新啟用預測標籤(“字母”代碼)。
重新啟用 CUDA/GPU 代碼。
重新啟用 CUDNN。
重新啟用 CUDNN 一半。
刪除了硬編碼的 CUDA 架構。
改進了 CUDA 版本資訊。
重新啟用 AVX。
刪除了舊的解決方案和 Makefile。
使 OpenCV 成為非可選的。
刪除了對舊 pthread 函式庫的依賴。
刪除了機上盒。
重寫 CMakeLists.txt 以使用新的 CUDA 檢測。
刪除了舊的“字母”代碼並刪除了資料/標籤中的 700 多個圖像。
啟用外源建置。
改進了版本號輸出。
實施與培訓相關的性能優化(正在進行中)。
實施了與推理相關的性能優化(正在進行中)。
盡可能使用引用傳遞。
清理了 .hpp 檔案。
重寫了darknet.h。
避免將 cv::Mat 轉換為 void*,將其用作正確的 C++ 物件。
修復或改進了內部影像結構使用的一致性。
修復了基於 ARM 的 Jetson 設備的建置。 (原始 Jetson 設備不太可能修復,因為 NVIDIA 不再支援它們 - 沒有 C++17 編譯器。新的 Jetson Orin 設備正在運行)。
修復了 V3 中的 Python API。
改進了對 Python 的支援。 (有Python開發人員願意幫忙解決這個問題嗎?)
短期目標
將 printf() 替換為 std::cout (正在進行中)。
調查對舊 zed 相機的支援。
改進命令列解析並使之更加一致(正在進行中)。
中期目標
刪除所有 char* 程式碼並替換為 std::string。
避免隱藏警告並清理編譯器警告(正在進行中)。
改進 cv::Mat 的使用,而不是 C 中的自訂影像結構(正在進行中)。
用 std::vector 或 std::list 取代舊的清單功能。
修復對 1 通道灰階影像的支援。
添加對 N 通道影像的支持,其中 N > 3(例如,具有附加深度或熱通道的影像)。
繼續正在進行的程式碼清理(正在進行中)。
長期目標
修復所有 GPU 的 CUDA/CUDNN 問題。
重寫CUDA+cuDNN程式碼。
考慮新增對非 NVIDIA GPU 的支援。
新增旋轉邊界框或“角度”支援。
實施關鍵點/骨架。
新增熱圖(正在進行中)。
實施細分。