다크넷 개체 탐지 프레임워크 및 YOLO
!Darknet 및 Hank.ai 로고
Darknet은 C, C++ 및 CUDA로 작성된 오픈 소스 신경망 프레임워크입니다. YOLO(You Only Look Once)는 Darknet 프레임워크 내에서 실행되는 최첨단 실시간 개체 감지 시스템입니다.
Hank.ai가 Darknet/YOLO 커뮤니티를 어떻게 지원하는지 알아보세요.
공식 Darknet/YOLO 웹사이트를 살펴보세요.
포괄적인 Darknet/YOLO FAQ를 참조하세요.
활발한 Darknet/YOLO Discord 서버에 참여하세요
서류
1. YOLOv7 논문
2. 확장된 YOLOv4 용지
3. YOLOv4 논문
4. YOLOv3 논문
일반 정보
Darknet/YOLO 프레임워크는 지속적으로 성능의 경계를 넓혀 다른 프레임워크 및 YOLO 버전을 능가하는 속도와 정확성을 지속적으로 제공합니다. 이 프레임워크는 완전히 무료이며 오픈 소스이므로 라이선스나 비용 없이 Darknet/YOLO를 상업용 애플리케이션을 포함한 기존 프로젝트 및 제품에 원활하게 통합할 수 있습니다.
2024년 10월에 출시된 Darknet V3("Jazz")는 NVIDIA RTX 3090 GPU를 사용하여 최대 1000FPS에서 LEGO 데이터 세트 비디오를 정확하게 처리할 수 있는 놀라운 성능을 달성합니다. 이는 크기 조정 및 처리를 포함하여 각 비디오 프레임을 단 1밀리초 이내에 처리하는 Darknet/YOLO로 해석됩니다.
https://discord.gg/zSq8rtW에서 활발한 Darknet/YOLO Discord 서버에 참여하여 도움과 토론을 즐기고 동료 사용자와 소통하세요.
Darknet/YOLO의 CPU 버전은 Raspberry Pi, 클라우드 및 Colab 서버, 데스크톱, 노트북, 고급 훈련 장비를 포함한 다양한 장치에서 실행될 수 있습니다. Darknet/YOLO의 GPU 버전에는 NVIDIA의 CUDA 지원 GPU가 필요합니다.
Darknet/YOLO는 Linux, Windows 및 Mac에서 원활하게 작동하는 것으로 알려져 있습니다. 자세한 지침은 아래의 건물 섹션을 참조하세요.
다크넷 버전
1. 버전 0.x: 2013년부터 2017년까지 Joseph Redmon이 개발한 원본 Darknet 도구를 말하며 버전 번호가 없습니다.
2. 버전 1.x: 여기에는 공식 버전 번호 없이 Alexey Bochkovskiy가 2017년부터 2021년까지 유지관리한 인기 있는 Darknet 저장소가 포함됩니다.
3. 버전 2.x "OAK": 이 버전은 2023년에 출시되었으며 Hank.ai가 후원하고 Stéphane Charette가 유지 관리합니다. Darknet 저장소에 버전 명령이 통합된 것은 이번이 처음입니다.
- 목표는 코드베이스에 익숙해지면서 기존 기능의 중단을 최소화하는 것이었습니다.
- 주요 변경 사항은 다음과 같습니다.
- Windows 및 Linux용 통합 CMake 빌드 시스템
- C++ 컴파일러로 코드베이스 변환
- 훈련 중 향상된 Chart.png
- 특히 훈련 시간 단축을 위한 버그 수정 및 성능 최적화
- 이 코드베이스의 마지막 분기는 v2 분기의 버전 2.1이었습니다.
4. 버전 3.x "JAZZ": 이 개발 단계는 2024년 중반에 시작되어 2024년 10월에 시작되었습니다. 이제 버전 명령이 3.x를 반환합니다.
- 이번 버전의 변경 사항은 다음과 같습니다.
- 오래되고 지원되지 않는 여러 명령을 제거합니다.
- 훈련과 추론 모두에 대한 포괄적인 성능 최적화.
- 기존 Darknet API를 활용하는 애플리케이션에 대한 약간의 조정이 필요한 레거시 C API 수정. Darknet V3 C 및 C++ API에 대한 업데이트된 문서는 https://darknetcv.ai/api/api.html에서 찾을 수 있습니다.
- https://darknetcv.ai/api/files.html에서 액세스할 수 있는 src-examples 디렉터리에 새로운 애플리케이션과 샘플 코드를 소개합니다.
참고: 호환성을 위해 특정 명령을 실행해야 하는 경우 언제든지 이전 v2 분기에 액세스할 수 있습니다. 누락된 명령이 있는 경우 당사에 연락해 주시면 해당 명령의 재통합을 조사하겠습니다.
MSCOCO 사전 훈련된 가중치
편의를 위해 몇몇 인기 있는 YOLO 버전이 MSCOCO 데이터 세트에 대해 사전 훈련되었습니다. 이 데이터 세트에는 cfg/coco.names 텍스트 파일에서 볼 수 있는 80개의 클래스가 포함되어 있습니다.
MSCOCO 외에도 LEGO Gears 및 Rolodex와 같이 Darknet/YOLO 테스트를 위해 사전 훈련된 다른 가중치와 더 간단한 데이터 세트를 찾을 수 있습니다. 자세한 내용은 Darknet/YOLO FAQ에서 확인할 수 있습니다.
MSCOCO 사전 훈련된 가중치는 이 저장소를 포함하여 다양한 위치에서 액세스할 수 있습니다.
1. YOLOv2(2016년 11월)
- yolov2-tiny.weights
- yolov2-full.weights
2. YOLOv3(2018년 5월)
- yolov3-tiny.weights
- yolov3-full.weights
3. YOLOv4(2020년 5월)
- yolov4-tiny.weights
- yolov4-full.weights
4. YOLOv7(2022년 8월)
- yolov7-tiny.weights
- yolov7-full.weights
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는 주로 Darknet/YOLO의 올바른 작동을 확인하는 데 사용됩니다.
건물
과거(2023년 이전)에 사용된 다양한 빌드 방법이 통합 솔루션으로 간소화되었습니다. Darknet에는 C++17 이상, OpenCV가 필요하며 프로젝트 파일 생성을 위해 CMake를 활용합니다.
Darknet/YOLO를 구축, 설치 및 실행하는 데에는 C++ 지식이 필요하지 않습니다. 정비공이 아니더라도 자동차를 운전하는 것과 비슷합니다.
참고: 빌드 단계가 더 복잡하거나 이 추가 정보와 일치하지 않는 이전 튜토리얼을 참조하는 경우 주의해서 진행하세요. 아래에 설명된 새로운 빌드 지침은 2023년 8월에 도입되었습니다.
Darknet/YOLO 개체 감지 프레임워크의 내부 작동에 대한 통찰력을 얻으려면 소프트웨어 개발자가 https://darknetcv.ai/를 방문하는 것이 좋습니다.
구글 코랩
Google Colab 지침은 Linux 지침과 동일합니다. 새로운 네트워크 훈련과 같은 특정 작업을 수행하는 방법을 보여주는 여러 Jupyter 노트북을 사용할 수 있습니다.
colab 하위 디렉터리에서 노트북을 탐색하거나 아래 제공된 Linux 지침을 따르세요.
리눅스 CMake 방법
Linux용 Darknet 빌드 튜토리얼
1. 종속성 설치:
`배쉬
sudo apt-get 설치 빌드 필수 git libopencv-dev cmake
`
2. 다크넷 저장소 복제:
`배쉬
mkdir ~/srccd ~/src
자식 클론 https://github.com/hank-ai/darknet
CD 다크넷
`
3. 빌드 디렉터리 생성:
`배쉬
mkdir 빌드cd 빌드
`
4. CMake를 사용하여 구성:
`배쉬
cmake -DCMAKEBUILDTYPE=릴리스 ..
`
5. 다크넷 구축:
`배쉬
-j4를 만드세요
`
6. 패키지 및 설치:
`배쉬
패키지
sudo dpkg -i darknet-VERSION.deb
`
선택 사항: CUDA 및 cuDNN 설치
가속화된 이미지 및 비디오 처리를 위해 선택적으로 CUDA 또는 CUDA+cuDNN을 설치할 수 있습니다. Darknet은 가능한 경우 GPU를 활용합니다.
1. CUDA를 설치합니다:
- https://developer.nvidia.com/cuda-downloads에서 CUDA를 다운로드하여 설치합니다.
- nvcc 및 nvidia-smi를 실행할 수 있는지 확인하세요. PATH 변수를 수정해야 할 수도 있습니다.
2. cuDNN을 설치합니다:
- https://developer.nvidia.com/rdp/cudnn-download 또는 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-에서 cuDNN을 다운로드하여 설치합니다. 설치 개요.
초기 설정 후 CUDA 또는 CUDA+cuDNN을 설치하거나 NVIDIA 소프트웨어를 업그레이드하는 경우:
1. CMakeCache.txt 삭제:
- Darknet 빌드 디렉터리에서 CMakeCache.txt 파일을 제거하여 CMake가 모든 종속성을 다시 검색하도록 합니다.
2. 다크넷 재구축:
- cmake를 반복하고 위의 단계를 수행합니다.
참고: 이 지침에서는 Ubuntu 22.04를 가정하지만 다른 배포판에도 적용할 수 있습니다.
고급 사용자:
DEB 파일 대신 RPM 설치 파일을 생성하려면 CM_package.cmake에서 관련 줄을 수정하세요. make -j4 패키지를 실행하기 전에 다음 두 줄을 업데이트하세요.
`cmake
설정(CPACK_GENERATOR "DEB")
설정(CPACK_GENERATOR "RPM")
`
Centos 및 OpenSUSE와 같은 배포판의 경우 라인을 다음과 같이 조정합니다.
`cmake
설정(CPACK_GENERATOR "DEB")
설정(CPACK_GENERATOR "RPM")
`
빌드 후 배포판의 패키지 관리자를 사용하여 패키지를 설치하십시오. 예를 들어 Debian 기반 시스템에서는 다음과 같습니다.
`배쉬
sudo dpkg -i darknet-2.0.1-Linux.deb
`
설치 결과:
/usr/bin/darknet: 표준 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 설치가 성공적으로 완료되었는지 확인하려면 터미널에서 darknet 버전을 실행하세요.
Windows CMake 메서드
Windows 빌드 지침(Windows 11 22H2 가정)
1. 종속성 설치:
`배쉬
Winget은 Git.Git을 설치합니다.
Winget 설치 Kitware.CMake
Winget 설치 nsis.nsis
Winget 설치 Microsoft.VisualStudio.2022.Community
`
2. Visual Studio 설치 수정:
- "Windows 시작" 메뉴를 열고 "Visual Studio 설치 프로그램"을 실행합니다.
- "수정"을 클릭하세요.
- "C++를 사용한 데스크톱 개발"을 선택합니다.
- 오른쪽 하단의 '수정'을 클릭한 후 '예'를 클릭하세요.
3. 개발자 명령 프롬프트를 엽니다.
- "Windows 시작" 메뉴를 열고 "VS 2022용 개발자 명령 프롬프트"를 선택합니다. 이 단계에서는 PowerShell을 사용하지 마세요.
4. Microsoft VCPKG를 설치합니다.
`배쉬
질병통제예방센터:
mkdir c:srccd c:src
자식 클론 https://github.com/microsoft/vcpkg
CD vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe 통합 설치
.vcpkg.exe 통합 powershell.vcpkg.exe install opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
5. 선택 사항: CUDA 및 cuDNN 설치:
- GPU 가속을 위해 CUDA 또는 CUDA+cuDNN을 설치합니다.
- Linux 지침과 동일한 단계를 따르십시오.
6. 다크넷 복제 및 구축:
`배쉬
CD C:src
자식 클론 https://github.com/hank-ai/darknet.git
CD 다크넷
mkdir 빌드
CD 빌드
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:Platform=x64;구성=PACKAGE.vcxproj 릴리스
`
CUDA 또는 cuDNN DLL(예: cublas64_12.dll) 누락에 대한 오류가 발생하는 경우:
1. CUDA DLL 복사:
- CUDA .dll 파일을 Darknet.exe와 동일한 출력 디렉터리에 수동으로 복사합니다. 예를 들어:
`배쉬
"C:프로그램 파일NVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease 복사
`
2. msbuild.exe를 다시 실행합니다.
- 마지막 msbuild.exe 명령을 다시 실행하여 NSIS 설치 패키지를 생성합니다.
고급 사용자:
개발자 명령 프롬프트 대신 일반 명령 프롬프트 또는 SSH를 사용하고 "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"를 실행할 수 있습니다.
cmake 명령은 Visual Studio 솔루션 파일(Darknet.sln)을 생성합니다. Visual Studio GUI 사용을 선호하는 경우 명령줄 도구를 사용하는 대신 프로젝트를 로드하세요.
확인: C:srcDarknetbuildsrc-cliReleasedarknet.exe 버전을 실행하여 설치를 확인하세요.
NSIS 마법사를 사용하여 설치:
빌드 디렉터리(예: darknet-VERSION.exe)에 있는 NSIS 설치 마법사를 실행하세요. 이는 다음을 수행합니다.
- Darknet 디렉터리(예: C:Program FilesDarknet)를 만듭니다.
- CLI 애플리케이션, darknet.exe 및 기타 샘플 앱을 설치합니다.
- 필요한 타사 .dll 파일(예: OpenCV에서)을 설치합니다.
- 다른 응용 프로그램에서 사용할 수 있도록 Darknet .dll, .lib 및 .h 파일을 설치합니다.
- 템플릿 .cfg 파일을 설치합니다.
확인: 설치 후 C:Program FilesDarknetbindarknet.exe 버전을 실행하여 Darknet이 준비되었는지 확인하세요.
다크넷 사용
CLI
다음은 Darknet에서 지원하는 명령의 일부 목록입니다.
Darknet CLI 외에도 Darknet에서 직접 사용할 수 없는 고급 기능을 갖춘 대체 CLI를 제공하는 DarkHelp 프로젝트 CLI를 고려해보세요. 두 CLI를 함께 사용할 수 있습니다.
대부분의 명령에는 해당 .names 및 .cfg 파일과 함께 .weights 파일이 필요합니다. 자신만의 네트워크를 훈련시키거나(강력히 권장됨) 온라인에서 무료로 제공되는 사전 훈련된 네트워크를 다운로드할 수 있습니다. 예는 다음과 같습니다:
LEGO Gears(이미지의 물체 감지)
Rolodex(이미지의 텍스트 감지)
MSCOCO(표준 80등급 객체 감지)
일반적인 다크넷 CLI 명령:
1. 도움 받기:
`배쉬
다크넷 도움말
`
2. 버전 확인:
`배쉬
다크넷 버전
`
3. 이미지 예측:
- V2:
`배쉬
다크넷 감지기 테스트 cars.data cars.cfg cars_best.weights image1.jpg
`
- V3:
`배쉬
darknet02displayannotatedimages cars.cfg image1.jpg
`
- 다크도움말:
`배쉬
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
4. 출력 좌표:
- V2:
`배쉬
다크넷 탐지기 테스트 Animals.data Animals.cfg Animalsbest.weights -extoutput dog.jpg
`
- V3:
`배쉬
darknet01inference_images 동물 개.jpg
`
- 다크도움말:
`배쉬
DarkHelp --json Animals.cfg Animals.names Animals_best.weights dog.jpg
`
5. 비디오 처리:
- V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
`
- V3:
`배쉬
darknet03display_videos 동물.cfg 테스트.mp4
`
- 다크도움말:
`배쉬
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
6. 웹캠 입력:
- V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animals_best.weights -c 0
`
- V3:
`배쉬
darknet08display_webcam 동물
`
7. 비디오 결과 저장:
- V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
`
- V3:
`배쉬
darknet05프로세스비디오멀티스레드 동물.cfg 동물.이름 동물_최고.가중치 테스트.mp4
`
- 다크도움말:
`배쉬
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
8. JSON 출력:
- V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
- V3:
`배쉬
darknet06imagestojson 동물 image1.jpg
`
- 다크도움말:
`배쉬
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
`
9. GPU 선택:
- V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. 네트워크 정확도 평가:
- 맵 계산:
`배쉬
다크넷 탐지기 지도 Driving.data Driving.cfg Driving_best.weights ...
`
- 자세한 정확도 정보:
`배쉬
ID 이름 AvgPrecision TP FN FP TN 정확도 ErrorRate 정밀도 재현율 특이성 FalsePosRate -- ---- ------------ ------ ------ ------ - ----- -------- --------- --------- ------ ----------- -- ---------- 0대 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821 오토바이 1대 80.4499 2936 513 569 5393 0.8850 0.1150 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 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855 4대 다수 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610 5개 녹색등 86.8118 1969 239 510 4116 0.8904 0.1096 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 3449 217 451 4643 0.9237 0.0763 0.8844 0.9408 0.9115 0.0885
`
- mAP@IoU=75를 계산합니다.
`배쉬
다크넷 감지기 맵 Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
`
- 앵커 계산:
`배쉬
다크넷 탐지기 calcanchors Animals.data -numof_clusters 6 -너비 320 -높이 256
`
11. 새로운 네트워크 훈련:
`배쉬
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
훈련
Darknet/YOLO FAQ에 대한 필수 링크:
파일 및 디렉터리 설정
올바른 구성 파일 선택
사용자 정의 네트워크 명령 훈련
원활한 주석 및 교육을 위해 DarkMark는 필요한 모든 Darknet 파일을 자동으로 생성하여 프로세스를 단순화합니다. 새로운 신경망을 훈련하려면 DarkMark를 사용하는 것이 좋습니다.
수동 훈련 설정:
1. 프로젝트 디렉토리를 생성합니다:
- 예를 들어 동물 감지를 위해 ~/nn/animals/라는 디렉터리를 만듭니다.
2. 구성 파일 복사:
- 적절한 Darknet 구성 파일을 템플릿(예: cfg/yolov4-tiny.cfg)으로 프로젝트 디렉터리에 복사합니다. 그러면 ~/nn/animals/animals.cfg가 생성됩니다.
3. Animals.names 파일을 생성합니다:
- 동일한 디렉터리에 Animals.names라는 텍스트 파일을 만듭니다.
- 빈 줄이나 설명 없이 원하는 수업을 한 줄에 하나씩 나열하세요. 예를 들어:
`
개
고양이
새
말
`
4. Animals.data 파일을 생성합니다:
- Animals.data라는 텍스트 파일을 만듭니다. 내용은 다음과 같아야 합니다.
`
수업 = 4
기차 = /home/username/nn/animals/animals_train.txt
유효한 = /home/username/nn/animals/animals_valid.txt
이름 = /home/username/nn/animals/animals.names
백업 = /home/사용자 이름/nn/동물
`
5. 데이터세트 디렉터리 생성:
- 이미지와 주석을 저장할 디렉터리(예: ~/nn/animals/dataset)를 만듭니다. 각 이미지에는 주석을 정의하는 해당 .txt 파일이 필요합니다. 형식은 구체적이며 수동으로 만들 수 없습니다. 이미지에 주석을 추가하려면 DarkMark 또는 유사한 소프트웨어를 사용하십시오. YOLO 주석 형식은 Darknet/YOLO FAQ에 설명되어 있습니다.
6. 훈련 및 검증 파일 생성:
- .data 파일에 언급된 Animalstrain.txt 및 Animalsvalid.txt 파일을 생성합니다. 이러한 파일에는 훈련 및 검증을 위한 모든 이미지가 한 줄에 하나씩 나열됩니다. 경로는 상대 경로이거나 절대 경로일 수 있습니다.
7. .cfg 파일 구성:
- 텍스트 편집기로 .cfg 파일을 엽니다.
- 배치=64인지 확인하세요.
- 네트워크 크기 및 GPU 메모리를 기반으로 세분화를 조정합니다. 세분화=1로 시작합니다. 대체 값은 Darknet/YOLO FAQ를 참조하세요.
- max_batches를 2000 * 클래스 수로 설정합니다(예: 4개 클래스의 경우 8000).
- 단계를 최대 배치의 80% 및 90%로 설정합니다(예: 최대 배치=8000의 경우 6400,7200).
- Darknet/YOLO FAQ의 지침을 사용하여 너비와 높이(네트워크 크기)를 구성합니다.
- 클래스=...를 .names 파일의 클래스 수로 바꾸십시오(예: 클래스=4).
- 각 [yolo] 섹션 앞의 [convolutional] 섹션에서 필터=...를 수정합니다. (클래스 수 + 5) * 3 공식을 사용합니다(예: 클래스 4개의 경우 필터=27).
8. 훈련 시작:
- 프로젝트 디렉터리로 이동합니다.
`배쉬
CD ~/nn/동물/
`
- 훈련 명령을 실행하십시오:
`배쉬
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
9. 진행 상황 모니터링:
- 가장 좋은 가중치는 Animals_best.weights로 저장됩니다.
- Chart.png 파일을 확인하여 훈련 진행 상황을 추적하세요.
- 추가 훈련 매개변수는 Darknet/YOLO FAQ를 참조하세요.
10. 장황한 훈련:
- 학습 중 더 자세한 출력을 보려면 --verbose 매개변수를 포함하세요.
`배쉬
다크넷 탐지기 -map -dont_show --verbose 기차 동물.데이터 동물.cfg
`
기타 도구 및 링크
DarkMark: Darknet/YOLO 프로젝트 관리, 이미지 주석 달기, 주석 확인 및 교육 파일 생성용.
DarkHelp: Darknet을 위한 강력한 대체 CLI, 이미지 타일링, 비디오 개체 추적 및 상업용 애플리케이션을 위한 포괄적인 C++ API를 제공합니다.
Darknet/YOLO FAQ: 귀하의 질문에 답변할 수 있는 귀중한 리소스입니다.
Stéphane의 YouTube 채널: 수많은 튜토리얼과 예제 비디오.
Darknet/YOLO Discord Server: 지원과 토론을 위해 커뮤니티에 참여하세요.
로드맵
최종 업데이트 날짜: 2024-10-30
완전한:
훈련 중에 qsort()를 std::sort()로 대체했습니다(나머지 몇 가지 경우 제외).
check_mistakes, getchar() 및 system()을 제거했습니다.
C++ 컴파일러(Linux의 경우 g++, Windows의 경우 VisualStudio)를 사용하도록 Darknet을 변환했습니다.
Windows 빌드를 수정했습니다.
Python 지원이 활성화되었습니다.
Darknet 라이브러리를 구축했습니다.
예측 라벨을 다시 활성화했습니다('알파벳' 코드 사용).
CUDA/GPU 코드를 다시 활성화했습니다.
CUDNN 및 CUDNN 절반을 다시 활성화했습니다.
하드 코딩된 CUDA 아키텍처를 제거했습니다.
CUDA 버전 정보가 개선되었습니다.
AVX를 다시 활성화했습니다.
이전 솔루션과 Makefile을 제거했습니다.
OpenCV를 선택 사항이 아닌 것으로 만들었습니다.
이전 pthread 라이브러리에 대한 종속성을 제거했습니다.
STB를 제거했습니다.
새로운 CUDA 감지를 위해 CMakeLists.txt를 다시 작성했습니다.
오래된 "알파벳" 코드를 제거하고 데이터/라벨에서 700개 이상의 이미지를 삭제했습니다.
소스 외부 빌드를 활성화했습니다.
버전 번호 출력이 개선되었습니다.
훈련 중 성능 최적화를 구현했습니다(진행 중).
추론 중 성능 최적화를 구현했습니다(진행 중).
가능한 경우 참조에 의한 전달을 사용합니다.
.hpp 파일을 정리했습니다.
darknet.h를 다시 작성했습니다.
cv::Mat를 void*로 캐스팅하는 것을 피하고 이를 적절한 C++ 개체로 사용했습니다.
내부 이미지 구조의 일관되지 않은 사용이 수정되었습니다.
ARM 기반 Jetson 장치의 빌드 문제가 수정되었습니다(지원되지 않는 원래 Jetson 모델 제외).
Jetson Orin 장치가 작동합니다.
V3의 Python API를 수정했습니다.
향상된 Python 지원(기여할 Python 개발자 찾기)
단기 목표:
printf()를 std::cout(진행 중)으로 바꾸세요.
기존 Zed 카메라에 대한 지원을 다시 살펴보세요.
명령줄 구문 분석의 일관성을 개선하고 보장합니다(진행 중).
중기 목표:
모든 char* 코드를 제거하고 std::string으로 대체합니다.
경고 숨기기를 해제하고 컴파일러 경고를 해결합니다(진행 중).
사용자 정의 C 이미지 구조 대신 cv::Mat 사용을 최적화합니다(진행 중).
이전 목록 기능을 std::Vector 또는 std::list로 대체합니다.
1채널 회색조 이미지에 대한 지원을 수정했습니다.
N 채널 이미지에 대한 지원을 추가합니다(N > 3).
지속적인 코드 정리를 계속합니다(진행 중).
장기 목표:
모든 GPU에서 CUDA/CUDNN 문제를 해결합니다.
CUDA+cuDNN 코드를 다시 작성하세요.
NVIDIA GPU가 아닌 GPU에 대한 지원을 살펴보세요.
회전된 경계 상자 또는 "각도" 지원을 구현합니다.
키포인트/골격을 추가합니다.
히트맵 구현(진행 중)
세분화 기능을 소개합니다.