다크넷 개체 탐지 프레임워크 및 YOLO
!darknet 및 hank.ai 로고
Darknet은 C, C++ 및 CUDA로 작성된 오픈 소스 신경망 프레임워크입니다.
YOLO(You Only Look Once)는 Darknet 프레임워크 내에서 실행되는 최첨단 실시간 개체 감지 시스템입니다.
Hank.ai가 Darknet/YOLO 커뮤니티를 어떻게 돕는지 읽어보세요: https://hank.ai/
Darknet V3 "Jazz" 발표: https://darknetcv.ai/
Darknet/YOLO FAQ를 읽어보세요: https://darknetcv.ai/faq/
Darknet/YOLO Discord 서버에 가입하세요: https://discord.gg/zSq8rtW
서류
1. YOLOv7 논문: https://arxiv.org/abs/2207.02670
2. Paper Scaled-YOLOv4: https://arxiv.org/abs/2103.05293
3. YOLOv4 논문: https://arxiv.org/abs/2004.10934
4. YOLOv3 논문: https://pjreddie.com/media/files/papers/YOLOv3.pdf
일반 정보
Darknet/YOLO 프레임워크는 다른 프레임워크 및 YOLO 버전보다 계속해서 더 빠르고 정확합니다.
이 프레임워크는 완전 무료이며 오픈 소스입니다. 라이선스나 수수료 없이 상업용 프로젝트를 포함하여 Darknet/YOLO를 기존 프로젝트 및 제품에 통합할 수 있습니다.
2024년 10월에 출시된 Darknet V3("Jazz")는 NVIDIA RTX 3090 GPU를 사용할 때 최대 1000FPS에서 LEGO 데이터 세트 비디오를 정확하게 실행할 수 있습니다. 이는 Darknet/YOLO가 1밀리초 이내에 각 비디오 프레임을 읽고, 크기를 조정하고, 처리한다는 것을 의미합니다.
Darknet/YOLO의 CPU 버전은 Raspberry Pi, 클라우드 및 Colab 서버, 데스크톱, 노트북, 고급 훈련 장비와 같은 간단한 장치에서 실행될 수 있습니다. Darknet/YOLO의 GPU 버전에는 NVIDIA의 CUDA 지원 GPU가 필요합니다.
Darknet/YOLO는 Linux, Windows 및 Mac에서 작동하는 것으로 알려져 있습니다. 아래의 조립 지침을 참조하세요.
다크넷 버전
1. 버전 0.x: Joseph Redmon이 2013~2017년에 작성한 원본 Darknet 도구입니다.
2. 버전 1.x: Alexey Bochkovskiy가 2017년부터 2021년까지 유지 관리하는 다음 인기 Darknet 저장소입니다.
3. 버전 2.x "OAK": Hank.ai가 후원하고 2023년부터 Stéphane Charette가 관리하는 Darknet 저장소입니다. 버전 명령이 포함된 최초의 저장소입니다. 이 버전에서는 다음과 같은 변경 사항이 적용되었습니다.
- Windows와 Linux 모두에서 통합 CMake 접근 방식을 위한 빌드 단계를 다시 작성했습니다.
- C++ 컴파일러를 사용하도록 코드베이스를 변환했습니다.
- 훈련 중 Chart.png 생성이 향상되었습니다.
- 훈련 시간과 관련된 버그 수정 및 성능 최적화.
4. 버전 2.1: v2 브랜치에 있는 2.x 코드베이스의 마지막 브랜치입니다.
5. 버전 3.x "JAZZ": 다음 개발 단계는 2024년 10월에 출시됩니다.
- 오래되고 유지 관리되지 않는 많은 명령을 제거했습니다.
- 훈련 및 추론을 위한 성능 최적화를 구현했습니다.
- 레거시 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
해당 버전의 명령 중 하나를 실행해야 하는 경우 언제든지 이전 v2 분기를 체크아웃할 수 있습니다. 누락된 명령이 있는 경우 알려주시면 해당 명령을 다시 추가하는 방법을 조사해 보겠습니다.
MSCOCO 사전 훈련된 가중치
YOLO의 여러 인기 버전은 MSCOCO 데이터 세트의 편의를 위해 사전 훈련되었습니다. 이 데이터 세트에는 80개의 클래스가 있으며 이는 텍스트 파일 cfg/coco.names에서 볼 수 있습니다.
LEGO Gears 및 Rolodex와 같이 Darknet/YOLO 테스트에 사용할 수 있는 몇 가지 더 간단한 데이터 세트와 사전 훈련된 가중치가 있습니다. 자세한 내용은 Darknet/YOLO FAQ를 참조하세요.
MSCOCO 사전 훈련된 가중치는 다음 저장소를 포함하여 여러 위치에서 다운로드할 수 있습니다.
YOLOv2(2016년 11월):
yolov2-tiny.weights
yolov2-full.weights
YOLOv3(2018년 5월):
yolov3-tiny.weights
yolov3-full.weights
YOLOv4(2020년 5월):
yolov4-tiny.weights
yolov4-full.weights
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는 주로 모든 것이 올바르게 작동하는지 확인하는 데 사용됩니다.
건물
과거(2023년 이전)에 사용 가능한 다양한 빌드 방법이 단일 통합 솔루션으로 병합되었습니다. Darknet에는 C++17 이상, OpenCV가 필요하며 CMake를 사용하여 필요한 프로젝트 파일을 생성합니다.
Darknet/YOLO를 구축, 설치, 실행하기 위해 C++를 알 필요는 없습니다. 마치 자동차를 운전하기 위해 정비공이 될 필요는 없습니다.
구글 코랩
Google Colab 지침은 Linux 지침과 동일합니다. 새로운 네트워크 훈련과 같은 다양한 작업을 수행하는 방법을 보여주는 여러 Jupyter 노트북을 사용할 수 있습니다.
colab 하위 디렉터리에서 노트북을 확인하거나 아래 Linux 지침을 따르세요.
리눅스 CMake 방법
Linux용 Darknet 빌드 튜토리얼
1. 선택 사항: 최신 NVIDIA GPU가 있는 경우 이 시점에서 CUDA 또는 CUDA+cuDNN을 설치할 수 있습니다. 설치된 경우 Darknet은 GPU를 사용하여 이미지(및 비디오) 처리 속도를 높입니다.
2. 필요한 패키지를 설치합니다:
`배쉬
sudo apt-get 설치 빌드 필수 git libopencv-dev cmake
`
3. Darknet 저장소를 복제합니다:
`배쉬
mkdir ~/srccd ~/src
자식 클론 https://github.com/hank-ai/darknet
`
4. 빌드 디렉터리 생성:
`배쉬
CD 다크넷
mkdir 빌드
CD 빌드
`
5. CMake 프로젝트 파일 생성:
`배쉬
cmake -DCMAKEBUILDTYPE=릴리스 ..
`
중요: CMake가 필요한 모든 파일을 다시 찾도록 하려면 Darknet 빌드 디렉터리에서 CMakeCache.txt 파일을 삭제해야 합니다.
6. 다크넷 구축:
`배쉬
-j4 패키지 만들기
`
7. 다크넷 패키지 설치:
`배쉬
sudo dpkg -i darknet-VERSION.deb
`
CUDA 및 cuDNN 설치(선택 사항)
Darknet은 CUDA 없이 실행될 수 있지만 사용자 정의 네트워크를 교육하려면 CUDA 또는 CUDA+cuDNN이 필요합니다.
1. CUDA를 설치합니다:
- CUDA를 다운로드하고 설치하려면 https://developer.nvidia.com/cuda-downloads를 방문하세요.
- 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-installation-overview를 방문하여 cuDNN을 다운로드하고 설치하세요.
CUDA 또는 cuDNN 업그레이드
나중에 CUDA 또는 CUDA+cuDNN을 설치하거나 최신 버전의 NVIDIA 소프트웨어로 업그레이드하는 경우:
1. 다크넷 재구축:
- Darknet 빌드 디렉터리에서 CMakeCache.txt 파일을 삭제하세요.
- cmake를 실행하고 명령을 다시 만드세요.
고급 사용자
DEB 파일 대신 RPM 설치 파일을 빌드하려면 make -j4 package를 실행하기 전에 CM_package.cmake에서 관련 줄을 편집하세요.
`cmake
# SET (CPACK_GENERATOR "DEB")
설정(CPACK_GENERATOR "RPM")
`
빌드가 완료된 후 설치 패키지를 설치하려면 배포용 일반 패키지 관리자를 사용하십시오. 예를 들어 Ubuntu와 같은 Debian 기반 시스템에서는 다음과 같습니다.
`배쉬
sudo dpkg -i darknet-2.0.1-Linux.deb
`
설치 테스트
설치 후에는 다음 파일이 있어야 합니다.
/usr/bin/darknet: 다크넷 실행 파일. CLI에서 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 템플릿이 저장되는 곳입니다.
다음 명령을 실행하여 설치를 테스트하십시오.
`배쉬
다크넷 버전
`
Windows CMake 메서드
Windows용 Darknet 빌드 튜토리얼
1. 필수 소프트웨어 설치:
- 일반 cmd.exe 명령 프롬프트 창을 열고 다음 명령을 실행합니다.
`배쉬
Winget은 Git.Git을 설치합니다.
Winget 설치 Kitware.CMake
Winget 설치 nsis.nsis
Winget 설치 Microsoft.VisualStudio.2022.Community
`
2. Visual Studio 설치 수정:
- "Windows 시작" 메뉴를 클릭하고 "Visual Studio 설치 프로그램"을 실행합니다.
- '수정'을 클릭하세요.
- "C++를 사용한 데스크톱 개발"을 선택합니다.
- 오른쪽 하단에 있는 '수정'을 클릭한 다음 '예'를 클릭하세요.
3. Microsoft VCPKG를 설치합니다.
- 모든 것이 다운로드되어 설치되면 "Windows 시작" 메뉴를 다시 클릭하고 "VS 2022용 개발자 명령 프롬프트"를 선택합니다. 이 단계에서는 PowerShell을 사용하지 마세요!
- 다음 명령을 실행합니다.
`배쉬
질병통제예방센터:
mkdir c:src
CD C:src
자식 클론 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
`
중요: 이 마지막 단계에서는 실행하는 데 시간이 오래 걸릴 수 있으므로 인내심을 가지세요. 많은 것을 다운로드하고 빌드해야 합니다.
4. 선택 사항: CUDA 및 cuDNN 설치
- 최신 NVIDIA GPU를 사용하는 경우 이 시점에서 CUDA 또는 CUDA+cuDNN을 설치할 수 있습니다. 설치된 경우 Darknet은 GPU를 사용하여 이미지(및 비디오) 처리 속도를 높입니다.
- CMake가 필요한 모든 파일을 다시 찾도록 하려면 Darknet 빌드 디렉터리에서 CMakeCache.txt 파일을 삭제해야 합니다.
- 다크넷을 다시 구축하는 것을 잊지 마세요.
5. CUDA를 설치합니다:
- CUDA를 다운로드하고 설치하려면 https://developer.nvidia.com/cuda-downloads를 방문하세요.
- nvcc.exe 및 nvidia-smi.exe를 실행할 수 있는지 확인하세요. PATH 변수를 수정해야 할 수도 있습니다.
6. cuDNN을 설치합니다:
- cuDNN을 다운로드하고 설치하려면 https://developer.nvidia.com/rdp/cudnn-download 또는 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows를 방문하세요.
- cuDNN을 다운로드한 후 bin, include 및 lib 디렉터리의 압축을 풀고 C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/에 복사합니다. 일부 파일을 덮어써야 할 수도 있습니다.
7. Darknet 저장소를 복제하고 빌드합니다.
`배쉬
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 릴리스
`
8. CUDA DLL 복사(선택 사항):
- cublas64_12.dll과 같은 일부 누락된 CUDA 또는 cuDNN DLL에 대한 오류가 발생하는 경우 CUDA .dll 파일을 darknet.exe와 동일한 출력 디렉터리에 수동으로 복사하세요. 예를 들어:
`배쉬
"C:프로그램 파일NVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease 복사
`
9. msbuild.exe를 다시 실행하여 NSIS 설치 패키지를 생성합니다.
`배쉬
msbuild.exe /property:Platform=x64;구성=PACKAGE.vcxproj 릴리스
`
고급 사용자
개발자 명령 프롬프트를 실행하는 대신 일반 명령 프롬프트 또는 SSH를 장치에 사용하고 Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat를 수동으로 실행할 수 있습니다.
OpenCV를 빌드할 때 다른 많은 선택적 모듈을 추가할 수 있습니다. 전체 목록을 보려면 .vcpkg.exe search opencv를 실행하세요.
cmake 명령의 출력은 일반 Visual Studio 솔루션 파일인 Darknet.sln입니다. Visual Studio GUI를 정기적으로 사용하는 소프트웨어 개발자라면 명령줄을 무시하고 Visual Studio에서 Darknet 프로젝트를 로드할 수 있습니다.
설치 테스트
이제 C:srcDarknetbuildsrc-cliReleasedarknet.exe 파일이 있어야 합니다. 다음 명령을 실행하여 설치를 테스트하십시오.
`배쉬
C:srcDarknetbuildsrc-cliReleasedarknet.exe 버전
`
Darknet, 라이브러리, 포함 파일 및 필요한 DLL을 올바르게 설치하려면 마지막 단계에서 빌드된 NSIS 설치 마법사를 실행하세요. 빌드 디렉터리에 있는 darknet-VERSION.exe 파일을 참조하세요. 예를 들어:
`배쉬
darknet-2.0.31-win64.exe
`
NSIS 설치 패키지를 설치하면 다음이 수행됩니다.
C:Program FilesDarknet과 같은 Darknet이라는 디렉터리를 만듭니다.
CLI 애플리케이션, darknet.exe 및 기타 샘플 앱을 설치합니다.
OpenCV의 파일과 같은 필수 타사 .dll 파일을 설치합니다.
다른 응용 프로그램에서 darknet.dll을 사용하려면 필요한 Darknet .dll, .lib 및 .h 파일을 설치하세요.
템플릿 .cfg 파일을 설치합니다.
NSIS 마법사를 실행한 후 다음 명령을 실행하여 설치를 테스트합니다.
`배쉬
C:프로그램 파일Darknetbindarknet.exe 버전
`
다크넷 사용
CLI
다음은 Darknet에서 지원하는 모든 명령의 전체 목록이 아닙니다.
Darknet CLI 외에도 Darknet/YOLO에 대한 대체 CLI를 제공하는 DarkHelp 프로젝트 CLI에 유의하세요. DarkHelp CLI에는 Darknet에서 직접 사용할 수 없는 몇 가지 고급 기능도 있습니다. Darknet CLI와 DarkHelp CLI를 함께 사용할 수 있습니다. 그들은 상호 배타적이지 않습니다.
아래 표시된 대부분의 명령에는 해당 .names 및 .cfg 파일과 함께 .weights 파일이 필요합니다. 자신만의 네트워크를 훈련시키거나(강력히 권장됩니다!) 누군가가 이미 훈련시켜 인터넷에서 무료로 제공한 신경망을 다운로드할 수 있습니다. 사전 훈련된 데이터 세트의 예는 다음과 같습니다.
LEGO Gears(이미지에서 개체 찾기)
Rolodex(이미지에서 텍스트 찾기)
MSCOCO(표준 80등급 객체 감지)
실행할 명령
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
`
11. 정확도 확인 mAP@IoU=75:
`배쉬
다크넷 탐지기 맵 Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
`
12. 앵커 재계산:
- DarkMark: DarkMark에서 앵커를 다시 계산하는 것이 가장 좋습니다. 100번 연속으로 실행되고 계산된 모든 앵커 중에서 가장 좋은 앵커를 선택하기 때문입니다.
- 다크넷: 다크넷에서 기존 방식을 사용하려는 경우:
`배쉬
다크넷 탐지기 calcanchors Animals.data -numof_clusters 6 -너비 320 -높이 256
`
13. 새로운 네트워크 훈련:
`배쉬
CD ~/nn/동물/
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
훈련
Darknet/YOLO FAQ의 관련 섹션에 대한 빠른 링크
1. 파일과 디렉터리를 어떻게 설정해야 합니까?
2. 어떤 구성 파일을 사용해야 합니까?
3. 자체 네트워크를 훈련할 때 어떤 명령을 사용해야 합니까?
주석 및 교육을 위해 DarkMark 사용(권장)
주석을 달고 훈련하는 가장 간단한 방법은 필요한 모든 Darknet 파일을 생성하는 DarkMark를 사용하는 것입니다. 이는 새로운 신경망을 훈련하는 데 적극 권장됩니다.
사용자 정의 네트워크를 훈련시키기 위해 파일을 수동으로 설정하기
수동 설정을 선호하는 경우 다음 단계를 따르세요.
1. 새 폴더를 생성합니다:
- 교육 파일을 저장할 새 폴더를 만듭니다. 예를 들어 ~/nn/animals/를 생성하여 동물 감지를 위한 네트워크를 훈련할 수 있습니다.
2. 구성 파일 템플릿 복사:
- cfg/에서 Darknet 구성 파일 중 하나를 템플릿으로 복사합니다. 예를 들어 cfg/yolov4-tiny.cfg를 사용할 수 있습니다. 생성한 폴더에 넣어주세요. 이제 ~/nn/animals/animals.cfg가 있어야 합니다.
3. Animals.names 파일을 만듭니다.
- 구성 파일과 동일한 폴더에 Animals.names라는 텍스트 파일을 만듭니다.
4. Animals.names 파일을 편집합니다.
- 검색하려는 클래스를 빈 줄이나 설명 없이 한 줄에 하나씩 나열합니다. 예를 들어:
`
개
고양이
새
말
`
5. Animals.data 파일을 만듭니다.
- 같은 폴더에 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
백업=/홈/사용자 이름/nn/동물
`
6. 데이터세트 폴더를 생성합니다:
- 이미지와 주석을 저장할 폴더를 만듭니다. 예를 들어 ~/nn/animals/dataset를 생성할 수 있습니다.
7. 이미지에 주석 달기:
- 각 이미지에는 주석이 포함된 해당 .txt 파일이 필요합니다. 이러한 .txt 파일의 형식은 구체적이며 주석에 대한 정확한 좌표가 필요합니다. DarkMark 또는 유사한 소프트웨어를 사용하여 이미지에 주석을 추가하십시오.
8. Animalstrain.txt 및 Animalsvalid.txt를 생성합니다.
- 이 텍스트 파일에는 각각 학습 및 검증에 사용되는 이미지가 나열되어 있습니다. 각 이미지는 상대 경로나 절대 경로를 사용하여 별도의 줄에 있어야 합니다.
9. 구성 파일을 수정합니다.
- 텍스트 편집기로 Animals.cfg를 열고 다음과 같이 수정합니다.
- 배치=64: 이 값이 설정되어 있는지 확인하세요.
- 세분화: 사용하기에 가장 좋은 값은 1입니다. GPU 메모리 및 네트워크 크기에 따라 이 값을 늘려야 할 수도 있습니다.
- maxbatches: 이 값을 합리적인 값(일반적으로 클래스 수의 2000배)으로 설정합니다. 이 예에서는 maxbatches=8000(4개 클래스 * 2000)을 사용합니다.
- 단계: 이를 최대 배치의 80% 및 90%로 설정합니다. 이 예에서는 steps=6400,7200(maxbatches=8000이므로)을 사용합니다.
- 너비 및 높이: 원하는 네트워크 크기로 설정합니다. 최적의 크기를 선택하는 방법에 대한 지침은 Darknet/YOLO FAQ를 참조하세요.
- 클래스: 이 줄의 모든 인스턴스를 검색하고 .names 파일의 클래스 수와 일치하도록 수정합니다(이 예에서는 클래스=4).
- 필터: 각 [yolo] 섹션 앞의 [convolutional] 섹션에서 이 줄의 모든 인스턴스를 검색합니다. 사용할 값은 (클래스 수 + 5) 3입니다. 이 예에서는 필터=27(4 + 5 3)을 사용합니다.
10. 훈련 시작:
`배쉬
CD ~/nn/동물/
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
11. 교육 진행 상황 모니터링:
- 인내심을 가지세요! 가장 좋은 가중치는 Animals_best.weights로 저장됩니다.
- Chart.png 파일을 확인하여 학습 진행 상황을 모니터링할 수 있습니다.
- 훈련 중에 사용할 수 있는 추가 매개변수는 Darknet/YOLO FAQ를 참조하세요.
12. 훈련 출력에 자세한 정보 추가:
`배쉬
다크넷 탐지기 -map -dont_show --verbose 기차 동물.데이터 동물.cfg
`
기타 도구 및 링크
DarkMark: Darknet/YOLO 프로젝트를 관리하고, 이미지에 주석을 달고, 주석을 확인하고, Darknet 교육을 위한 파일을 생성합니다.
DarkHelp: 이미지 타일링, 비디오의 객체 추적 및 상용 애플리케이션에서 사용할 수 있는 강력한 C++ API를 사용하는 Darknet에 대한 강력한 대안 CLI입니다.
다크넷/YOLO FAQ: https://darknetcv.ai/faq/
스테판의 YouTube 채널: https://www.youtube.com/channel/UCYQ2k0L3X0c56l9gE2r1RQ
다크넷/YOLO 디스코드 서버: https://discord.gg/zSq8rtW
로드맵
최종 업데이트 날짜: 2024년 10월 30일:
완전한
훈련 중에 사용되는 std::sort()를 qsort()로 교체했습니다(일부 모호한 것이 남아 있음).
check_mistakes, getchar() 및 system()을 제거했습니다.
C++ 컴파일러(Linux의 경우 g++, Windows의 경우 VisualStudio)를 사용하도록 Darknet을 변환했습니다.
Windows 빌드를 수정했습니다.
Python 지원이 수정되었습니다.
다크넷 라이브러리를 구축했습니다.
예측에 대한 라벨('알파벳' 코드)을 다시 활성화했습니다.
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 장치는 더 이상 NVIDIA(C++17 컴파일러 없음)에서 지원되지 않으므로 수정될 가능성이 없습니다.
- 새로운 Jetson Orin 장치가 작동합니다.
V3의 Python API를 수정했습니다.
Python에 대한 지원이 향상되었습니다. (이 문제를 도와주고 싶은 Python 개발자가 있나요?)
단기 목표
printf()를 std::cout으로 교체합니다(진행 중).
오래된 ZED 카메라 지원을 살펴보세요.
일관된 명령줄 구문 분석을 개선하고 만듭니다(진행 중).
중기 목표
모든 char* 코드를 제거하고 std::string으로 바꿉니다.
경고를 숨기지 말고 컴파일러 경고를 정리하세요(진행 중).
C의 사용자 정의 이미지 구조 대신 cv::Mat 사용을 개선합니다(진행 중).
이전 목록 기능을 std::Vector 또는 std::list로 대체합니다.
1채널 그레이스케일 이미지에 대한 지원을 수정했습니다.
N > 3인 N 채널 이미지(예: 추가 깊이 또는 열 채널이 있는 이미지)에 대한 지원을 추가합니다.
지속적인 코드 정리(진행 중)
장기 목표
모든 GPU의 CUDA/CUDNN 문제를 해결합니다.
CUDA+cuDNN 코드를 다시 작성하세요.
NVIDIA 이외의 GPU에 대한 지원을 추가해 보세요.
회전된 경계 상자 또는 일종의 "각도" 지원.
키포인트/골격.
히트맵(진행 중)
분할.