Darknet Object Detection Framework and YOLO
Darknet 是一個由C、C++ 和CUDA 編寫的開源神經網路框架。 YOLO(You Only Look Once)是一個最先進的即時目標偵測系統,它運行在Darknet 框架中。
閱讀Hank.ai 如何幫助Darknet/YOLO 社區
宣布Darknet V3 "Jazz"
查看Darknet/YOLO 網站
請閱讀Darknet/YOLO 常見問題解答
加入Darknet/YOLO Discord 伺服器
Papers
1. Paper YOLOv7
2. Paper Scaled-YOLOv4
3. Paper YOLOv4
4. Paper YOLOv3
General Information
Darknet/YOLO 框架仍然比其他框架和YOLO 版本更快、更準確。
這個框架完全免費且開源。您可以將Darknet/YOLO 整合到現有專案和產品中- 包括商業產品- 無需許可或支付費用。
2024 年10 月發布的Darknet V3(“Jazz”)可以使用NVIDIA RTX 3090 GPU 以高達1000 FPS 的速度準確運行LEGO 數據集視頻,這意味著每個視頻幀在1 毫秒或更短的時間內被Darknet /YOLO 讀取、調整大小和處理。
如果您需要協助或想討論Darknet/YOLO,請加入Darknet/YOLO Discord 伺服器:https://discord.gg/zSq8rtW
Darknet/YOLO 的CPU 版本可在Raspberry Pi、雲端和協作伺服器、桌上型電腦、筆記型電腦和高階訓練設備等簡單設備上運作。 Darknet/YOLO 的GPU 版本需要NVIDIA 的CUDA 相容GPU。
Darknet/YOLO 已知在Linux、Windows 和Mac 上運作良好。請參閱下面的建置說明。
Darknet 版本
Joseph Redmon 在2013-2017 年寫的原始Darknet 工具沒有版本號。我們認為這個版本是0.x。
Alexey Bochkovskiy 在2017-2021 年間維護的下一個流行的Darknet 倉庫也沒有版本號。我們認為這個版本是1.x。
由Hank.ai 贊助並由Stéphane Charette 從2023 年開始維護的Darknet 倉庫是第一個具有版本命令的倉庫。從2023 年到2024 年底,它返回版本2.x “OAK”。
目標是盡可能少地破壞現有功能,同時熟悉程式碼庫。
1. 重寫建置步驟,以便我們有一個統一的方式使用CMake 在Windows 和Linux 上建置。
2. 將程式碼庫轉換為使用C++ 編譯器。
3. 增強了訓練時的chart.png。
4. 錯誤修復和與效能相關的最佳化,主要與減少訓練網路所需的時間有關。
該程式碼庫的最後一個分支是v2 分支中的版本2.1。
下一階段的開發始於2024 年年中,並於2024 年10 月發布。版本命令現在返回3.x “JAZZ”。
如果您需要執行以下命令,可以隨時簽出先前的v2 分支。請告知我們,以便我們可以調查添加任何缺失的命令。
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-tiny
- YOLOv2-full
2. YOLOv3,2018 年5 月
- YOLOv3-tiny
- YOLOv3-full
3. YOLOv4,2020 年5 月
- YOLOv4-tiny
- YOLOv4-full
4. YOLOv7,2022 年8 月
- YOLOv7-tiny
- YOLOv7-full
MSCOCO 預訓練權重僅用於演示目的。 MSCOCO 的對應.cfg 和.names 檔案位於cfg 目錄中。範例命令:
`bash
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet02displayannotatedatedimages 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 yoightlovs 1.o.
`
請注意,人們應該訓練自己的網路。 MSCOCO 通常用於確認一切正常。
建構
過去(2023 年之前)的各種建置方法已合併到一個統一的解決方案中。 Darknet 需要C++17 或更高版本、OpenCV 以及使用CMake 產生必要的專案檔。
您不需要了解C++ 就可以建置、安裝或運行Darknet/YOLO,就像您不需要是機械師就可以駕駛汽車一樣。
Google Colab
Google Colab 說明與Linux 說明相同。有幾個Jupyter 筆記本顯示如何執行某些任務,例如訓練新網路。
請參閱colab 子目錄中的筆記本,或遵循下面的Linux 說明。
Linux CMake 方法
Darknet 建置教程for Linux
選購:如果您擁有現代NVIDIA GPU,您可以在此時安裝CUDA 或CUDA+cuDNN。如果安裝了,Darknet 將使用您的GPU 來加速映像(和視訊)處理。
您必須刪除Darknet 建置目錄中的CMakeCache.txt 文件,以強制CMake 重新尋找所有必要的文件。
請記住重新建置Darknet。
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 clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDPE=Relkdir buildcd build cmake -D CMAKEBUILDPE=Release ..package sudo dpkg -i darknet-VERSION.deb
`
如果您使用的是舊版的CMake,則需要在執行上面的cmake 指令之前升級CMake。在Ubuntu 上升級CMake 可以使用以下指令完成:
`bash
sudo apt-get purge cmake sudo snap install cmake --classic
`
如果使用bash 作為您的命令shell,您需要在此時重新啟動shell。如果使用fish,它應該立即拾取新的路徑。
進階用戶:
如果您想建立RPM 安裝文件而不是DEB 文件,請參閱CM_package.cmake 中的相關行。在執行make -j4 package 之前,您需要編輯這兩行:
`bash
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
對於Centos 和OpenSUSE 等發行版,您需要將CM_package.cmake 中這兩行更改為:
`bash
SET (CPACKGENERATOR "DEB")SET (CPACKGENERATOR "RPM")
`
要安裝安裝包,一旦它已建置完成,請使用您發行版的常用套件管理器。例如,在基於Debian 的系統(如Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
安裝.deb 套件將複製以下檔案:
1. /usr/bin/darknet 是通常的Darknet 執行檔。從CLI 運行darknet version 以確認它已正確安裝。
2. /usr/include/darknet.h 是針對C、C++ 和Python 開發人員的Darknet API。
3. /usr/include/darknet_version.h 包含開發人員使用的版本資訊。
4. /usr/lib/libdarknet.so 是針對C、C++ 和Python 開發人員的函式庫。
5. /opt/darknet/cfg/... 是所有.cfg 範本儲存的位置。
您現在完成了! Darknet 已建置並安裝到/usr/bin/ 中。執行以下命令進行測試:darknet version。
如果您沒有/usr/bin/darknet,則表示您沒有安裝它,您只是建置了它!確保按照上面的說明安裝.deb 或.rpm 檔案。
Windows CMake 方法
這些說明假設Windows 11 22H2 的全新安裝。
打開一個正常的cmd.exe 命令提示字元視窗並執行以下命令:
`bash
winget install Git.Git winget install Kitware.CMake winget install nsis.nsis winget install Microsoft.VisualStudio.2022.Community
`
此時,我們需要修改Visual Studio 安裝以包含對C++ 應用程式的支援:
1. 點選「Windows 開始」功能表並執行「Visual Studio 安裝程式」。
2. 點選修改。
3. 選擇使用C++ 的桌面開發。
4. 點選右下角的“修改”,然後點選“是”。
一旦所有內容都下載並安裝完畢,再次點擊「Windows 開始」功能表並選擇用於VS 2022 的開發人員命令提示字元。不要使用PowerShell 執行這些步驟,您會遇到問題!
進階用戶:
您可以使用正常的命令提示符,而不是執行開發人員命令提示符,或使用ssh 登入裝置並手動執行「Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat」。
一旦您按照上面描述的方式運行了開發人員命令提示字元(不是PowerShell!),請執行以下命令來安裝Microsoft VCPKG,然後使用它來建置OpenCV:
`bash
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe integrate install .vcpkg.exe integrate powershell.pkg.exe install opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
最後一步要耐心,因為它可能需要很長時間才能運行。它需要下載和構建許多東西。
進階用戶:
請注意,在建置OpenCV 時,您可能想要添加許多其他可選模組。運行.vcpkg.exe search opencv 以查看完整列表。
選購:如果您擁有現代NVIDIA GPU,您可以在此時安裝CUDA 或CUDA+cuDNN。如果安裝了,Darknet 將使用您的GPU 來加速映像(和視訊)處理。
您必須刪除Darknet 建置目錄中的CMakeCache.txt 文件,以強制CMake 重新尋找所有必要的文件。
請記住重新建置Darknet。
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 Computing Toolkit/CUDA/[版本]/. 您可能需要覆寫一些檔案。
如果您在稍後安裝CUDA 或CUDA+cuDNN,或您升級至NVIDIA 軟體的更新版本,請執行下列操作:
CUDA 必須在Visual Studio 之後安裝。如果您升級Visual Studio,請記得重新安裝CUDA。
一旦所有前面的步驟都成功完成,您需要克隆Darknet 並建立它。在此步驟中,我們還需要告訴CMake vcpkg 的位置,以便它可以找到OpenCV 和其他依賴:
`bash
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/KETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/scripts/ exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.Release PACK
`
如果您收到有關某些缺少的CUDA 或cuDNN DLL(如cublas64_12.dll)的錯誤,請手動將CUDA .dll 檔案複製到與Darknet.exe 相同的輸出目錄中。例如:
`bash
copy "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(這是一個範例!請檢查以確保您正在執行的是哪個版本,並執行適合您所安裝內容的命令。)
複製檔案後,重新執行最後一個msbuild.exe 命令以產生NSIS 安裝包:
`bash
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
進階用戶:
請注意,cmake 命令的輸出是一個正常的Visual Studio 解決方案文件,Darknet.sln。如果您是經常使用Visual Studio GUI 而不是msbuild.exe 來建置專案的軟體開發人員,您可以忽略命令列並在Visual Studio 中載入Darknet 專案。
您現在應該擁有以下可以運行的檔案:C:srcDarknetbuildsrc-cliReleasedarknet.exe。執行以下命令進行測試:C:srcDarknetbuildsrc-cliReleasedarknet.exe version。
若要正確安裝Darknet、程式庫、包含檔案和必要的DLL,請執行在最後一步建置的NSIS 安裝精靈。查看build 目錄中的檔案darknet-VERSION.exe。例如:
`bash
darknet-2.0.31-win64.exe
`
安裝NSIS 安裝包將:
1. 建立一個名為Darknet 的目錄,例如C:Program FilesDarknet。
2. 安裝CLI 應用程式、darknet.exe 和其他範例應用程式。
3. 安裝所需的第三方.dll 文件,例如來自OpenCV 的文件。
4. 安裝必要的Darknet .dll、.lib 和.h 文件,以便從另一個應用程式使用darknet.dll。
5. 安裝模板.cfg 檔案。
您現在完成了!安裝精靈完成後,Darknet 將安裝到C:Program FilesDarknet 中。執行以下命令進行測試:C:Program FilesDarknetbindarknet.exe version。
如果您沒有C:/Program Files/darknet/bin/darknet.exe,則表示您沒有安裝它,您只是建置了它!確保按照前面步驟中的說明完成NSIS 安裝精靈的每個面板。
使用Darknet
CLI
以下不是Darknet 支援的所有命令的完整清單。
除了Darknet CLI 之外,請注意DarkHelp 專案CLI,它提供了一個替代Darknet/YOLO 的CLI。 DarkHelp CLI 還具有幾個在Darknet 中不可直接獲得的高級功能。您可以將Darknet CLI 和DarkHelp CLI 結合使用,它們並不互相排斥。
對於下面顯示的大多數命令,您需要具有相應.names 和.cfg 檔案的.weights 檔案。您可以either 訓練自己的人脈(強烈建議!)或從網路上下載他人已經訓練並免費提供的neural network。預訓練資料集的範例包括:
1. LEGO Gears(在影像中尋找物體)
2. Rolodex(在圖像中尋找文字)
3. MSCOCO(標準80 類目標偵測)
要運行的命令包括:
列出一些可能運行的命令和選項:
`bash
darknet help
`
檢查版本:
`bash
darknet version
`
使用影像進行預測:
V2:
`bash
darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
`
V3:
`bash
darknet02displayannotatedimages cars.cfg image1.jpg
`
DarkHelp:
`bash
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
輸出座標:
V2:
`bash
darknet detector test animals.data animals.cfg animalsbest.weights -extoutput dog.jpg
`
V3:
`bash
darknet01inference_images animals dog.jpg
`
DarkHelp:
`bash
DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
`
使用影片:
V2:
`bash
darknet detector demo animals.data animals.cfg animalsbest.weights -extoutput test.mp4
`
V3:
`bash
darknet03display_videos animals.cfg test.mp4
`
DarkHelp:
`bash
DarkHelp animals.cfg animals.names animals_best.weights test.mp4
`
從網路攝影機讀取:
V2:
`bash
darknet detector demo animals.data animals.cfg animals_best.weights -c 0
`
V3:
`bash
darknet08display_webcam animals
`
將結果儲存到影片中:
V2:
`bash
darknet detector demo animals.data animals.cfg animalsbest.weights test.mp4 -outfilename res.avi
`
V3:
`bash
darknet05processvideosmultithreaded animals.cfg animals.names animals_best.weights test.mp4
`
DarkHelp:
`bash
DarkHelp animals.cfg animals.names animals_best.weights test.mp4
`
JSON:
V2:
`bash
darknet detector demo animals.data animals.cfg animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3:
`bash
darknet06imagestojson animals image1.jpg
`
DarkHelp:
`bash
DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
`
在特定GPU 上運行:
V2:
`bash
darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
`
要檢查神經網路的準確性:
`bash
darknet detector map driving.data driving.cfg driving_best.weights ... Id Name AvgPrecision TP FN FP TN Accuracy ErrorRate Precision Recall Specificity FalsePosRate -- ---- ------------ ---- -- ------ ------ ------ -------- --------- --------- ---- -- ----------- ------------ 0 vehicle 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821 1 motorcycle 80.4499 2936 513 569 5393. 0.8513 0.9046 0.0954 2 bicycle 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285 3 person 76.7937 7072 1727 2574 27523 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855 4 many vehicles 64.3089 1068 509 733 11288 0. 0.9390 0.0610 5 green light 86.8118 1969 239 510 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102 6 38321038 2038 0.1102 6 38321039 20038 0.9525 0.0475 0.8077 0.7683 0.9764 0.0236 7 red light 94.1033 3449 217 451 4643 0.9237 0.0763 0.
`
要檢查mAP@IoU=75 的準確性:
`bash
darknet detector map animals.data animals.cfg animalsbest.weights -iouthresh 0.75
`
重新計算錨點最好在DarkMark 中完成,因為它將連續運行100 次並從所有計算的錨點中選擇最佳錨點。但如果您想在Darknet 中執行舊版本,請執行以下操作:
`bash
darknet detector calcanchors animals.data -numof_clusters 6 -width 320 -height 256
`
訓練新網路:
`bash
darknet detector -map -dont_show train animals.data animals.cfg (also see the training section below)
`
訓練
到Darknet/YOLO 常見問題解答的相關部分的快速連結:
1. 我應該如何設定我的文件和目錄?
2. 我應該使用哪個設定檔?
3. 訓練自己的網路時應該使用哪一個指令?
使用DarkMark 建立所有必要的Darknet 檔案是註解和訓練最簡單的方法。這絕對是訓練新神經網路的推薦方法。
如果您想手動設定各種文件以訓練自訂網絡,請執行以下操作:
1. 建立一個新資料夾來儲存這些檔案。對於這個例子,將創建一個神經網路來檢測動物,因此將創建以下目錄:~/nn/animals/.
2. 複製您想用作模板的Darknet 設定檔之一。例如,請參閱cfg/yolov4-tiny.cfg。將它放在您建立的資料夾中。對於這個例子,我們現在有~/nn/animals/animals.cfg。
3. 在您放置設定檔的同一個資料夾中建立一個animals.names 文字檔。對於這個例子,我們現在有~/nn/animals/animals.names。
4. 使用您的文字編輯器編輯animals.names 檔案。列出您想要使用的類別。您需要為每行正好有一個條目,沒有空白行,也沒有註解。對於這個例子,.names 檔案將包含正好4 行:
`
dog
cat
鳥
horse
`
5. 在同一個資料夾中建立一個animals.data 文字檔。對於這個例子,.data 檔案將包含:
`
classes = 4
train = /home/username/nn/animals/animals_train.txt
valid = /home/username/nn/animals/animals_valid.txt
names = /home/username/nn/animals/animals.names
backup = /home/username/nn/animals
`
6. 建立一個資料夾來儲存您的圖像和註釋。例如,這可以是~/nn/animals/dataset。每個圖像都需要一個相應的.txt 檔案來描述該圖像的註釋。 .txt 註解文件的格式非常具體。您不能手動建立這些文件,因為每個註釋都需要包含註釋的確切座標。請參閱DarkMark 或其他類似軟體來註釋您的影像。 YOLO 註解格式在Darknet/YOLO 常見問題中有所描述。
7. 建立.data 檔案中命名的「train」和「valid」文字檔。這兩個文字檔案需要分別列出Darknet 必須用來訓練和驗證的mAP% 時所使用的所有圖像。每行正好一張圖像。路徑和檔案名稱可以是相對的或絕對的。
8. 使用文字編輯器修改您的.cfg 檔案。
- 確保batch=64。
- 注意subdivisions。根據網路尺寸和GPU 上可用的記憶體量,您可能需要增加subdivisions。最佳值是1,因此從它開始。如果1 對您不起作用,請參閱Darknet/YOLO 常見問題。
- 注意maxbatches=.... 當開始時,一個好的值是類別的數量2000。對於這個例子,我們有4 個動物,因此4 2000 = 8000。這意味著我們將使用maxbatches=8000。
- 注意steps=.... 這應該設定為maxbatches 的80% 和90%。對於這個例子,我們將使用steps=6400,7200,因為maxbatches 被設定為8000。
- 注意width=... 和height=.... 這些是網路尺寸。 Darknet/YOLO 常見問題解答說明如何計算要使用的最佳尺寸。
- 在[convolutional] 部分之前的每個[yolo] 部分中,搜尋所有filters=... 行的實例。要使用的值是(類別數量+ 5) 3。這意味著對於這個例子,(4 + 5) 3 = 27。因此,我們在適當的行上使用filters=27。
9. 開始訓練!運行以下命令:
`bash
cd ~/nn/animals/
darknet detector -map -dont_show train animals.data animals.cfg
`
耐心點。最佳權重將儲存為animals_best.weights。可以透過查看chart.png 檔案來觀察訓練進度。有關您可能希望在訓練新網路時使用的其他參數,請參閱Darknet/YOLO 常見問題。
- 如果您想在訓練期間看到更多詳細信息,請添加--verbose 參數。例如:
`bash
darknet detector -map -dont_show --verbose train animals.data animals.cfg
`
其他工具和鏈接
要管理您的Darknet/YOLO 專案、註釋圖像、驗證您的註釋以及產生使用Darknet 訓練所需的文件,請參閱DarkMark。
要獲得一個強大的Darknet 替代CLI,使用圖像拼接、視頻中的目標跟踪或一個強大的C++ API,該API 可以輕鬆地用於商業應用程序,請參閱DarkHelp。
請參閱Darknet/YOLO 常見問題解答,看看它是否可以幫助回答您的問題。
查看Stéphane 的YouTube 頻道上的許多教程和示例視頻
如果您有支援問題或想與其他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. 建置darknet 庫
7. 重新啟用預測上的標籤(「alphabet」代碼)
8. 重新啟用CUDA/GPU 代碼
9. 重新啟用CUDNN
10. 重新啟用CUDNN half
11. 不要硬編碼CUDA 架構
12. 更好的CUDA 版本信息
13. 重新啟用AVX
14. 刪除舊的解決方案和Makefile
15. 使OpenCV 成為非可選的
16. 刪除對舊pthread 函式庫的依賴
17. 刪除STB
18. 重新編寫CMakeLists.txt 以使用新的CUDA 偵測
19. 刪除舊的「alphabet」程式碼,並刪除data/labels 中的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
31. 需要更好的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 通道影像的支持,其中N > 3(例如,具有額外深度或熱通道的影像)
7. 正在進行的程式碼清理(正在進行中)
長期目標
1. 修正所有GPU 的CUDA/CUDNN 問題
2. 重新編寫CUDA+cuDNN 程式碼
3. 調查新增對非NVIDIA GPU 的支持
4. 旋轉的邊界框,或某種「角度」支持
5. 關鍵點/骨架
6. 熱圖(正在進行中)
7. 分割