Darknet Object Detection Framework and YOLO
Downcodes小編整理
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版本可以在簡單的裝置上運行,例如樹莓派、雲端和colab伺服器、桌上型電腦、筆記型電腦以及高階訓練設備。 Darknet/YOLO的GPU版本需要NVIDIA的CUDA支援GPU。
Darknet/YOLO已知可在Linux、Windows和Mac上運作。請查看下面的建置說明。
Darknet Version
由Joseph Redmon在2013-2017年編寫的原始Darknet工具沒有版本號。我們認為這是0.x版本。
Alexey Bochkovskiy在2017-2021年維護的下一個流行Darknet repo也沒有版本號。我們認為這是1.x版本。
Hank.ai贊助並由Stéphane Charette從2023年開始維護的Darknet repo是第一個具有版本命令的repo。從2023年到2024年底,它返回版本2.x“OAK”。
目標是在盡可能少破壞現有功能的同時,熟悉程式碼庫。
重寫建置步驟,以便我們有一種統一的方式來使用CMake在Windows和Linux上建置。
將程式碼庫轉換為使用C++編譯器。
在訓練時增強chart.png。
錯誤修復和與效能相關的最佳化,主要與減少訓練網路所需的時間有關。
這個程式碼庫的最後一個分支是v2分支中的版本2.1。
下一階段的開發於2024年中期開始,並在2024年10月發布。版本命令現在返回3.x“JAZZ”。
如果你需要執行這些指令中的任何一個,你總是可以檢出先前的v2分支。請告知我們,以便我們能夠調查添加回任何缺少的命令。
刪除了許多舊的和未維護的命令。
許多性能優化,無論是在訓練時還是在推理期間。
舊的C API已被修改;使用原始Darknet 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 Pre-trained Weights
為了方便起見,幾個流行的YOLO版本在MSCOCO資料集上進行了預訓練。這個資料集有80個類別,可以在文字檔cfg/coco.names中看到。
還有其他幾個更簡單的資料集和預訓練權重可用於測試Darknet/YOLO,例如LEGO Gears和Rolodex。有關詳細信息,請參閱Darknet/YOLO常見問題解答。
MSCOCO預訓練權重可以從多個不同位置下載,也可以從這個repo下載:
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
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通常用於確認一切正常。
Building
過去(2023年以前)可用的各種建置方法已合併到一個統一的解決方案中。 Darknet需要C++17或更高版本、OpenCV,並使用CMake產生必要的專案檔。
你不需要了解C++來建造、安裝或運行Darknet/YOLO,就像你不需要成為機械師才能開車一樣。
Google Colab
Google Colab說明與Linux說明相同。有幾個Jupyter筆記本展示如何執行某些任務,例如訓練新的網路。
查看colab子目錄中的筆記本,或按照下面的Linux說明操作。
Linux CMake Method
Darknet在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 -DCMAKEBUILDTYPE=Release ..
make -j4 package
sudo dpkg -i darknet-VERSION.deb
`
如果你使用的是舊版的CMake,則需要在執行上面的cmake指令之前升級CMake。在Ubuntu上升級CMake可以使用以下指令:
`bash
sudo apt-get purge cmake
sudo snap install cmake --classic
`
如果你使用bash作為你的命令外殼,你可能需要重新啟動你的外殼。如果你使用fish,它應該立即拾取新路徑。
進階用戶:
如果你想建立RPM安裝文件而不是DEB文件,請參閱CM_package.cmake中的相關行。在運行make -j4 package之前,你需要編輯這兩行:
`cmake
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
對於Centos和OpenSUSE等發行版,你需要將CM_package.cmake中的這兩行切換為:
`cmake
SET (CPACK_GENERATOR "DEB")
SET (CPACK_GENERATOR "RPM")
`
要安裝安裝包,一旦它建置完成,使用你發行版的通常套件管理器。例如,在基於Debian的系統上,例如Ubuntu:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
安裝.deb套件將複製以下檔案:
/usr/bin/darknet 是通常的Darknet可執行檔。從CLI運行darknet version以確認它是否已正確安裝。
/usr/include/darknet.h 是Darknet API,供C、C++和Python開發人員使用。
/usr/include/darknet_version.h 包含開發人員使用的版本資訊。
/usr/lib/libdarknet.so 是供C、C++和Python開發人員連結的函式庫。
/opt/darknet/cfg/... 是所有.cfg模板儲存的位置。
你現在完成了! Darknet已建置並安裝到/usr/bin/中。執行以下命令進行測試:darknet version。
如果你沒有/usr/bin/darknet,這意味著你沒有安裝它,你只是建造了它!確保你安裝了.deb或.rpm文件,如上所述。
Windows CMake Method
這些說明假設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 Installer」。
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
.vcpkg.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/[version]/。你可能需要覆蓋一些文件。
如果你稍後安裝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 darknet
mkdir buildcd build
cmake -DCMAKEBUILDTYPE=Release -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:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
如果你收到有關某些缺少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安裝包將:
建立一個名為Darknet的目錄,例如C:Program FilesDarknet。
安裝CLI應用程式、darknet.exe和其他範例應用程式。
安裝所需的第三方.dll文件,例如來自OpenCV的那些文件。
安裝必要的Darknet .dll、.lib和.h文件,以便從另一個應用程式使用darknet.dll。
安裝模板.cfg檔。
你現在完成了!一旦安裝精靈完成,Darknet將安裝到C:Program FilesDarknet。執行以下命令進行測試:C:Program FilesDarknetbindarknet.exe version。
如果你沒有C:/Program Files/darknet/bin/darknet.exe,這表示你沒有安裝它,你只是建置了它!確保你完成了上一個步驟中NSIS安裝精靈的每個面板。
Using Darknet
CLI
以下不是Darknet支援的所有命令的完整列表。
除了Darknet CLI之外,還要注意DarkHelp專案CLI,它提供了Darknet/YOLO的替代CLI。 DarkHelp CLI還具有幾個Darknet中沒有的advanced功能。你可以同時使用Darknet CLI和DarkHelp CLI,它們並不互相排斥。
對於下面顯示的大多數指令,你需要.weights檔案以及對應的.names和.cfg檔。你可以訓練自己的網路(強烈推薦!)或下載其他人已經訓練並免費在網路上提供的neural network。預訓練資料集的範例包括:
LEGO Gears(在影像中尋找物體)
Rolodex(在圖像中尋找文字)
MSCOCO(標準80類目標偵測)
可運行的命令包括:
列出一些可能運行的命令和選項:
`bash
darknet help
`
檢查版本:
`bash
darknet version
`
使用影像進行預測:
V2: darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
輸出座標:
V2: darknet detector test animals.data animals.cfg animalsbest.weights -extoutput dog.jpg
V3: darknet01inference_images animals dog.jpg
DarkHelp: DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
使用影片:
V2: darknet detector demo animals.data animals.cfg animalsbest.weights -extoutput test.mp4
V3: darknet03display_videos animals.cfg test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
從網路攝影機讀取:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -c 0
V3: darknet08display_webcam animals
將結果儲存到影片中:
V2: darknet detector demo animals.data animals.cfg animalsbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreaded animals.cfg animals.names animals_best.weights test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
JSON:
V2: darknet detector demo animals.data animals.cfg animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson animals image1.jpg
DarkHelp: DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
在特定GPU上運行:
V2: 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.8850 0.1150 0.8377 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.9087 0.0913 0.5930 0.6772 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 yellow 光 82.0390 126 38 30 1239 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.8844 0.9408 0.9115 0.0885
`
檢查準確率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
`
(另請參閱下面的訓練部分)
Training
有關Darknet/YOLO常見問題解答相關部分的快速連結:
如何設定我的文件和目錄?
我應該使用哪個設定檔?
訓練自己的網路時應該使用哪個指令?
使用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檔。
9. 確保batch=64。
10. 注意subdivisions。根據網路尺寸和你GPU上的可用內存,你可能需要增加subdivisions。要使用的最佳值為1,因此從該值開始。如果1對你不起作用,請參閱Darknet/YOLO常見問題。
11. 注意maxbatches=...。啟動時要使用的一個好值是類別的數量乘以2000。在這個範例中,我們有4種動物,因此4 * 2000 = 8000。這意味著我們將使用maxbatches=8000。
12. 注意steps=...。這應該設定為maxbatches的80%和90%。在這個範例中,由於maxbatches設定為8000,因此我們將使用steps=6400,7200。
13. 注意width=...和height=...。這些是網路尺寸。 Darknet/YOLO常見問題解答說明如何計算要使用的最佳尺寸。
14. 搜尋所有classes=...行的實例,並使用.names檔案中的類別數量修改它。在這個範例中,我們將使用classes=4。
15. 搜尋每個[yolo]部分之前[convolutional]部分中所有filters=...行的實例。要使用的值為(類別數量+ 5) 3。這意味著在這個範例中,(4 + 5) 3 = 27。因此,我們將在適當的行上使用filters=27。
開始訓練!運行以下命令:
`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
`
Other Tools and Links
要管理你的Darknet/YOLO項目,註釋圖像,驗證你的註釋,並產生使用Darknet進行訓練的必要文件,請參閱DarkMark。
有關Darknet的可靠替代CLI、使用圖像拼貼、在你的視頻中進行目標跟踪,或用於可以輕鬆用於商業應用程序的可靠C++ API,請參閱DarkHelp。
看看Darknet/YOLO常見問題是否可以幫助你解答問題。
查看Stéphane YouTube頻道上的許多教學和範例影片。
如果你有支援問題,或想與其他Darknet/YOLO用戶聊天,請加入Darknet/YOLO Discord伺服器。
Roadmap
最後更新時間:2024-10-30
已完成
在訓練期間將qsort()替換為std::sort()(其他模糊的仍然存在)
刪除check_mistakes、getchar()和system()
將Darknet轉換為使用C++編譯器(在Linux上使用g++,在Windows上使用VisualStudio)
修復Windows建置
修復Python支持
建置darknet庫
重新啟用預測上的標籤(「alphabet」代碼)
重新啟用CUDA/GPU程式碼
重新啟用CUDNN
重新啟用CUDNN half
不要硬編碼CUDA架構
更好的CUDA版本信息
重新啟用AVX
刪除舊的解決方案和Makefile
使OpenCV非可選
刪除對舊pthread函式庫的依賴
刪除STB
重寫CMakeLists.txt以使用新的CUDA檢測
刪除舊的「alphabet」程式碼,並刪除資料/標籤中的700多張圖像
建構源外
有更好的版本號輸出
與訓練相關的效能最佳化(正在進行的任務)
與推理相關的效能最佳化(正在進行的任務)
盡可能使用傳值引用
清理.hpp文件
重寫darknet.h
不要將cv::Mat轉換為void,而是將其用作適當的C++對象
修復或保持內部影像結構的使用方式一致
修復針對基於ARM的Jetson設備的構建
由於不再受NVIDIA支援(沒有C++17編譯器),原始Jetson設備不太可能被修復
新的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的支持
旋轉的邊界框,或某種“角度”支持
關鍵點/骨架
熱圖(進行中)
分割