Data.gov 主儲存庫
這是 Data.gov 平台的主儲存庫。它主要用於追蹤團隊的工作,但也用於儲存 datagov 範圍內的程式碼(GitHub Actions 範本、出口等)。
如果您正在尋找 cloud.gov 環境的文檔,請參閱應用程式儲存庫。
GitHub 操作和模板
多個 GitHub Actions 已被重構以使用此儲存庫中的範本。您可以在此處找到這些模板以及在庫存和目錄中調用它們的範例。
暗網目標偵測框架與 YOLO
Darknet 是一個使用 C、C++ 和 CUDA 建構的開源神經網路框架。
YOLO(You Only Look Once)是一種在 Darknet 框架內運行的尖端即時物體偵測系統。
了解 Hank.ai 如何支持 Darknet/YOLO 社群。
探索 Darknet/YOLO 網站。
探索暗網/YOLO 常見問題。
加入 Darknet/YOLO Discord 伺服器。
文件
1. YOLOv7論文(論文連結)
2. Scaled-YOLOv4 論文(論文連結)
3.YOLOv4論文(論文連結)
4. YOLOv3論文(論文連結)
一般資訊
Darknet/YOLO 框架仍然比其他框架和 YOLO 版本更快、更準確。它是完全免費且開源的,可讓您將 Darknet/YOLO 合併到您的專案和產品中,而無需任何授權限製或費用。
Darknet V3(「Jazz」)於 2024 年 10 月發布,可使用 NVIDIA RTX 3090 GPU 以高達 1000 FPS 的速度處理樂高資料集影片。這意味著每個視訊畫面的處理時間不到 1 毫秒。
加入 Darknet/YOLO Discord 伺服器尋求協助和討論:https://discord.gg/zSq8rtW
Darknet/YOLO 的 CPU 版本可在各種裝置上運行,包括 Raspberry Pi、雲端和 Colab 伺服器、桌上型電腦、筆記型電腦和高階訓練設備。 GPU 版本需要支援 CUDA 的 NVIDIA GPU。
眾所周知,Darknet/YOLO 可在 Linux、Windows 和 Mac 上運作。下面提供了建置說明。
暗網版本
版本 0.x:由 Joseph Redmon 在 2013 年至 2017 年期間創建的原始暗網工具。
版本 1.x:2017-2021 年由 Alexey Bochkovskiy 維護的熱門暗網儲存庫。
版本 2.x(「OAK」):由 Hank.ai 贊助並由 Stéphane Charette 維護的暗網儲存庫,從 2023 年開始。
版本 2.1:版本 2 程式碼庫的最後一個分支,可在 v2 分支中使用。
版本 3.x(「JAZZ」):最新開發階段於 2024 年 10 月發布。
3.x 版本中的主要變化:
1.刪除了許多舊的和未維護的命令。
2. 訓練和推理的表現顯著優化。
3.修改遺留C API;使用原始 Darknet API 的應用程式可能需要進行細微調整。
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 文字檔案中列出。
其他更簡單的資料集和預訓練權重,例如 LEGO Gears 和 Rolodex,可用於測試 Darknet/YOLO。有關詳細信息,請參閱 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
命令範例:
`
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 yolov4-tiny.weights video1.avi
`
請記住,我們鼓勵您訓練自己的人脈。 MSCOCO 主要用於確認一切正常運作。
大樓
2023 年之前可用的建置方法已合併為一個統一的解決方案。 Darknet 需要 C++17 或更高版本、OpenCV,並使用 CMake 產生專案檔。
您不需要了解 C++ 來建造、安裝或運行 Darknet/YOLO,就像您不需要成為機械師來駕駛汽車一樣。
Google合作實驗室
Google Colab 指令與 Linux 指令相同。 colab 子目錄中提供了幾個示範訓練新網路等任務的 Jupyter 筆記本。您也可以按照下面的 Linux 說明進行操作。
Linux CMake方法
1. 選用:如果您有現代 NVIDIA GPU,請安裝 CUDA 或 CUDA+cuDNN。 Darknet 將利用您的 GPU 進行更快的影像和視訊處理。
2. 從 Darknet 建置目錄中刪除 CMakeCache.txt 文件,以強制 CMake 重新尋找所有必要的文件。
3. 重建暗網。
4. 安裝 CUDA(選購):造訪 https://developer.nvidia.com/cuda-downloads 下載並安裝 CUDA。
5. 安裝cuDNN(選購):造訪https://developer.nvidia.com/rdp/cudnn-download 或https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn- package -manager-installation-overview 下載並安裝 cuDNN。
6. 驗證 CUDA 安裝:確保您可以執行 nvcc 和 nvidia-smi。您可能需要修改 PATH 變數。
7.安裝依賴項並克隆Darknet:
`bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git 克隆 https://github.com/hank-ai/darknetcd darknet
mkdir 構建
光碟建構
`
8.配置CMake:
`bash
cmake -DCMAKEBUILDTYPE=發布 ..
`
9. 建構暗網:
`bash
製作-j4包
`
10.安裝暗網:
`bash
sudo dpkg -i darknet-VERSION.deb
`
11、測試安裝:
`bash
暗網版本
`
附加說明:
如果您使用的是舊版的 CMake,請在執行 cmake 指令之前升級它:
`bash
sudo apt-get purge cmake
sudo snap install cmake --經典
`
如果使用 bash,請重新啟動 shell,否則 Fish 會自動更新路徑。
若要建置 RPM 安裝檔案而不是 DEB 文件,請修改 CM_package.cmake 檔案。
建置安裝套件後,使用您的發行版的套件管理器來安裝它(例如,在基於 Debian 的系統上使用 sudo dpkg -i darknet-2.0.1-Linux.deb)。
Windows CMake方法
1.安裝必要的工具:
`bash
winget 安裝 Git.Git
winget 安裝 Kitware.CMake
winget安裝nsis.nsis
winget安裝Microsoft.VisualStudio.2022.社區
`
2.修改Visual Studio安裝:
- 開啟「Visual Studio 安裝程式」。
- 按一下「修改」。
- 選擇「使用 C++ 進行桌面開發」。
- 點擊右下角的“修改”,然後按一下“是”。
3. 開啟 VS 2022 的開發人員命令提示字元:不要使用 PowerShell。
4.安裝微軟VCPKG:
`bash
cd c:mkdir c:srccd c:src
git 克隆 https://github.com/microsoft/vcpkgcd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe 集成
安裝.vcpkg.exe 整合 powershell.vcpkg.exe 安裝 opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
5. 選用:安裝 CUDA 或 CUDA+cuDNN(如 Linux 說明所示)。
6. 刪除 CMakeCache.txt(如 Linux 說明所示)。
7. 重新建置 Darknet(如 Linux 說明中所示)。
8. 安裝 CUDA(選購):造訪 https://developer.nvidia.com/cuda-downloads 下載並安裝 CUDA。
9. 安裝cuDNN(選購):造訪https://developer.nvidia.com/rdp/cudnn-download 或https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download- windows下載並安裝 cuDNN。
10. 驗證 CUDA 安裝:確保可以執行 nvcc.exe。您可能需要修改 PATH 變數。
11. 解壓縮並複製 cuDNN 檔案:下載後,解壓縮並將 bin、include 和 lib 目錄複製到 C:/Program Files/NVIDIA GPU Compute Toolkit/CUDA/[version]/。您可能需要覆蓋一些文件。
12.克隆暗網並建構:
`bash
cd c:src
git 克隆 https://github.com/hank-ai/darknet.gitcd darknet
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
`
13. 複製 CUDA DLL(可選):如果遇到缺少 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的錯誤,請手動將 CUDA DLL 複製到 Darknet.exe 輸出目錄:
`bash
複製“C:Program FilesNVIDIA GPU計算工具包CUDAv12.2bin * .dll”src-cliRelease
`
(請確保將版本號替換為您正在使用的版本號。)
14.重新運行msbuild.exe指令產生NSIS安裝包:
`bash
msbuild.exe /property:平台=x64;設定=發布 PACKAGE.vcxproj
`
15、測試安裝:
`bash
C:srcDarknetbuildsrc-cliReleasedarknet.exe 版本
`
16. 執行 NSIS 安裝精靈:這將安裝 CLI 應用程式、所需的 DLL、程式庫、包含檔案和範本設定檔。
附加說明:
cmake 指令產生 Visual Studio 解決方案檔案 (Darknet.sln)。您可以使用 Visual Studio GUI 來產生項目,而不是使用 msbuild.exe。
NSIS安裝包(例如darknet-VERSION.exe)可以在build目錄中找到。
使用暗網
命令列介面
以下並不是所有暗網指令的詳盡清單。
暗網幫助:顯示幫助資訊。
暗網版本:查看暗網版本。
預測命令:
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 ...
`
映射@IoU=75:
`bash
暗網探測器地圖animals.dataanimals.cfganimalsbest.weights-iothresh 0.75
`
重新計算錨點:
DarkMark(建議):使用 DarkMark 運行 100 次連續計算並選擇最佳錨點。
暗網:
`bash
暗網探測器 calcanchors Animals.data -numof_clusters 6 -寬度 320 -高度 256
`
訓練新網路:
使用 DarkMark(推薦):使用 DarkMark 建立訓練所需的所有檔案。
手動設定:
1. 為您的專案建立一個新資料夾(例如~/nn/animals/)。
2. 將設定檔作為範本(例如cfg/yolov4-tiny.cfg)複製到該資料夾中。
3. 使用類別名稱建立一個 Animals.names 文字文件,每行一個。
4. 建立一個 Animals.data 文字文件,格式如下:
`
班級 = 4
火車 = /home/使用者名稱/nn/animals/animals_train.txt
有效 = /home/使用者名稱/nn/animals/animals_valid.txt
名稱 = /home/使用者名稱/nn/animals/animals.names
備份= /home/用戶名/nn/animals
`
5. 為圖像和註解建立一個資料夾(例如~/nn/animals/dataset)。
6. 使用 DarkMark 或類似軟體對影像進行註釋並產生相應的 .txt 註釋檔案。
7. 建立animalstrain.txt 和animalsvalid.txt 文件,分別列出用於訓練和驗證的影像,每行一個。
8、修改設定檔:
- 設定批次=64。
- 依需要調整細分。
- 設定 max_batches=8000(或 2000 x 類別數)。
- 設定steps=6400,7200(max_batches的80%和90%)。
- 將寬度和高度設定為您的網路尺寸。
- 使用 .names 檔案中的類別數量更新類別。
- 更新 [yolo] 部分之前每個 [卷積] 部分中的過濾器:(numberofclasses + 5) * 3。
9. 開始訓練:
`bash
cd ~/nn/動物/
暗網探測器-map-dont_show火車animals.dataanimals.cfg
`
其他培訓提示:
使用 --verbose 參數以取得更詳細的訓練資訊:
`bash
暗網探測器-map-dont_show--verbose火車animals.dataanimals.cfg
`
其他工具和鏈接
DarkMark:管理 Darknet/YOLO 專案、註釋影像、驗證註解並產生訓練檔案。
DarkHelp:Darknet 的強大替代 CLI,支援影像平鋪、物件追蹤以及用於商業應用程式的 C++ API。
Darknet/YOLO 常見問題:常見問題的綜合資源。
Stéphane 的 YouTube 頻道:Darknet/YOLO 上的教學和範例影片。
Darknet/YOLO Discord 伺服器:用於支援和討論的社群論壇。
路線圖
已完成的任務:
將 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 函式庫的依賴。
刪除了 STB 依賴性。
重寫 CMakeLists.txt 以使用新的 CUDA 檢測。
刪除了舊的字母代碼並刪除了不必要的圖像。
啟用外源建置。
改進了版本號輸出。
優化訓練和推理表現。
在適用的情況下實施了引用傳遞。
清理了 .hpp 檔案。
重寫了darknet.h。
使用 cv::Mat 作為正確的 C++ 對象,而不是轉換為 void*。
修復了內部影像結構使用不一致的問題。
修正了基於 ARM 的 Jetson 裝置的建置問題(不支援的舊型號除外)。
修復了版本 3 中的 Python API。
短期目標:
將 printf() 替換為 std::cout。
研究對舊版 Zed 相機的支援。
改進和標準化命令列解析。
中期目標:
刪除所有 char* 程式碼並替換為 std::string。
消除編譯器警告並確保一致的程式碼風格。
在自訂 C 映像結構上增強 cv::Mat 的使用。
用 std::vector 或 std::list 取代舊的清單功能。
修復對 1 通道灰階影像的支援。
增加對 N 通道影像的支援(例如,具有附加深度或熱通道)。
正在進行的程式碼清理。
長期目標:
解決所有 GPU 上的 CUDA/CUDNN 問題。
重寫CUDA+cuDNN程式碼。
探索對非 NVIDIA GPU 的支援。
實現旋轉邊界框或“角度”支援。
新增關鍵點/骨架、熱圖和分段支援。