다크넷 개체 탐지 프레임워크 및 YOLO
다운코드小编 업데이트된 공개 BitTorrent 추적기 목록
기울기
이 목록은 매일 자동으로 업데이트됩니다. 마지막 업데이트 2024/10/31:
DNS 문제가 있습니까? 이 목록에는 동일한 추적기가 포함되어 있지만 도메인 대신 IP 주소가 포함되어 있습니다.
메모
기여하다
연락하다
ngosang [@] 핫메일 [.es]
타사 도구
타사 온라인 도구
예:
Apache-2.0 라이센스
목차
다크넷 개체 탐지 프레임워크 및 YOLO
서류
일반 정보
다크넷 버전
MSCOCO 사전 훈련된 가중치
건물
구글 코랩
리눅스 CMake 방법
Windows CMake 메서드
다크넷 사용
CLI
훈련
기타 도구 및 링크
로드맵
단기 목표
중기 목표
장기 목표
다크넷 개체 탐지 프레임워크 및 YOLO
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 데이터 세트 비디오를 효율적으로 실행할 수 있습니다. 이는 Darknet/YOLO가 1밀리초 이내에 각 비디오 프레임을 처리(읽기, 크기 조정 및 처리)할 수 있음을 의미합니다.
도움이 필요하거나 Darknet/YOLO에 대해 토론하고 싶다면 Darknet/YOLO Discord 서버에 가입하세요: https://discord.gg/zSq8rtW
Darknet/YOLO의 CPU 버전은 Raspberry Pi, 클라우드 및 Colab 서버, 데스크톱, 노트북, 고급 훈련 장비를 포함한 다양한 장치에서 실행됩니다. GPU 버전에는 CUDA 지원 NVIDIA GPU가 필요합니다.
Darknet/YOLO는 Linux, Windows, Mac과 호환되는 것으로 알려져 있습니다. 자세한 내용은 아래 조립 설명서를 참조하세요.
다크넷 버전
2013년부터 2017년 사이에 Joseph Redmon이 개발한 원래 Darknet 도구에는 버전 번호가 부족했습니다. 우리는 이 버전을 0.x로 간주합니다.
2017년부터 2021년까지 Alexey Bochkovskiy가 유지 관리한 후속 인기 Darknet 저장소에도 버전 번호가 없었습니다. 우리는 이 버전을 1.x로 간주합니다.
Hank.ai가 후원하고 2023년부터 Stéphane Charette가 유지 관리하는 Darknet 저장소는 버전 명령을 포함하는 최초의 저장소입니다. 2023년부터 2024년 후반까지 버전 2.x "OAK"를 반환했습니다.
주요 목표는 코드베이스에 익숙해지면서 기존 기능의 중단을 최소화하는 것이었습니다.
주요 변경 사항:
통합 빌드: Windows 및 Linux 모두에 대해 CMake를 사용하여 일관된 단일 방법을 설정하기 위해 빌드 단계를 다시 작성했습니다.
C++ 마이그레이션: C++ 컴파일러를 활용하도록 코드베이스를 변환했습니다.
향상된 차트: 훈련 중 Chart.png 시각화가 개선되었습니다.
버그 수정 및 최적화: 주로 훈련 시간 단축에 초점을 맞춘 수많은 버그를 해결하고 성능 최적화를 구현했습니다.
이 코드베이스의 마지막 분기는 v2 분기에 있는 버전 2.1입니다.
다음 개발 단계는 2024년 중반에 시작되어 2024년 10월 버전 3.x "JAZZ"의 출시로 정점에 달했습니다.
Darknet V3("Jazz") 주요 개선 사항:
성능: 훈련과 추론 모두에서 상당한 성능 최적화가 이루어졌습니다.
API 변경 사항: 레거시 C API를 수정했습니다. 원래 Darknet API를 활용하는 애플리케이션에는 약간의 조정이 필요합니다. 참조: https://darknetcv.ai/api/api.html
새로운 API: 새로운 Darknet V3 C 및 C++ API 도입: https://darknetcv.ai/api/api.html
업데이트된 예: src-examples 디렉터리에 새로운 애플리케이션과 샘플 코드가 추가되었습니다: https://darknetcv.ai/api/files.html
특정 명령을 실행해야 하는 경우 언제든지 이전 v2 분기로 되돌릴 수 있습니다. 누락된 명령이 있는 경우 이를 다시 통합할 수 있도록 알려 주시기 바랍니다.
Darknet V3("Jazz") 키 제거:
오래된 명령: 오래되고 유지 관리되지 않는 많은 명령을 제거했습니다.
MSCOCO 사전 훈련된 가중치
편의를 위해 YOLO의 여러 인기 버전이 MSCOCO 데이터세트에 대해 사전 훈련되었습니다. 이 데이터세트는 80개의 클래스를 포함하며, 이는 텍스트 파일 cfg/coco.names에서 찾을 수 있습니다.
MSCOCO 외에도 LEGO Gears 및 Rolodex와 같은 Darknet/YOLO 테스트를 위해 다양한 기타 간단한 데이터 세트와 사전 훈련된 가중치를 사용할 수 있습니다. 자세한 내용은 Darknet/YOLO FAQ를 확인하세요.
MSCOCO 사전 훈련된 가중치는 다음 저장소를 포함한 여러 소스에서 다운로드할 수 있습니다.
YOLOv2, 2016년 11월:
YOLOv2-작은
YOLOv2-전체
YOLOv3, 2018년 5월:
YOLOv3-작은
YOLOv3-전체
YOLOv4, 2020년 5월:
YOLOv4-작은
YOLOv4-전체
YOLOv7, 2022년 8월:
YOLOv7-작은
YOLOv7-전체
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 빌드 튜토리얼
선택 사항: 최신 NVIDIA GPU를 보유하고 있는 경우 이 시점에 CUDA 또는 CUDA+cuDNN을 설치하십시오. 설치된 경우 Darknet은 GPU를 활용하여 이미지(및 비디오) 처리를 가속화합니다.
CMake가 필요한 모든 파일을 다시 검색하도록 하려면 Darknet 빌드 디렉터리에서 CMakeCache.txt 파일을 삭제해야 합니다.
다크넷을 재구축하는 것을 잊지 마세요.
Darknet은 그것들 없이도 작동할 수 있지만, 맞춤형 네트워크를 훈련시키려면 CUDA 또는 CUDA+cuDNN이 필요합니다.
1. CUDA 설치: https://developer.nvidia.com/cuda-downloads를 방문하여 CUDA를 다운로드하고 설치하세요.
2. cuDNN 설치: https://developer.nvidia.com/rdp/cudnn-download 또는 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-를 방문하세요. cuDNN을 다운로드하고 설치하려면 설치 개요를 참조하세요.
CUDA를 설치한 후 nvcc 및 nvidia-smi를 실행할 수 있는지 확인하세요. PATH 변수를 수정해야 할 수도 있습니다.
나중에 CUDA 또는 CUDA+cuDNN을 설치하거나 최신 NVIDIA 소프트웨어 버전으로 업그레이드하는 경우:
CMake 업그레이드: CMake 버전이 오래된 경우 다음 명령을 사용하여 업그레이드하세요.
`배쉬
sudo apt-get purge cmake
sudo 스냅 설치 cmake --classic
`
셸 다시 시작: bash를 명령 셸로 사용하는 경우 셸을 다시 시작하세요. 물고기를 사용하는 경우 경로가 자동으로 업데이트되어야 합니다.
다크넷 구축:
`배쉬
sudo apt-get 설치 빌드 필수 git libopencv-dev cmake
mkdir ~/srccd ~/src
자식 클론 https://github.com/hank-ai/darknetcd darknet
mkdir 빌드cd 빌드
cmake -DCMAKEBUILDTYPE=릴리스 ..
-j4를 만드세요
패키지
sudo dpkg -i darknet-VERSION.deb
`
고급 사용자:
RPM 설치: DEB 파일 대신 RPM 설치 파일을 생성하려면 CM_package.cmake에서 해당 라인을 수정하세요. make -j4 패키지를 실행하기 전에 다음 줄을 편집하십시오.
`cmake
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
CentOS 및 OpenSUSE와 같은 배포판의 경우 행을 다음과 같이 조정합니다.
`cmake
설정(CPACK_GENERATOR "DEB")
설정(CPACK_GENERATOR "RPM")
`
설치 패키지: 배포판의 패키지 관리자를 사용하여 빌드가 완료된 후 패키지를 설치합니다. Debian 기반 시스템(예: Ubuntu)의 경우:
`배쉬
sudo dpkg -i darknet-2.0.1-Linux.deb
`
.deb 패키지를 설치하면 다음 파일이 복사됩니다.
/usr/bin/darknet: 표준 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 템플릿을 저장합니다.
축하해요! Darknet은 /usr/bin/에 구축 및 설치되었습니다. 다크넷 버전을 실행하여 확인하세요.
/usr/bin/darknet이 없으면 Darknet을 설치하지 않고 구축만 한 것입니다. 위에서 설명한 대로 .deb 또는 .rpm 파일을 설치했는지 확인하세요.
Windows CMake 메서드
이 지침에서는 Windows 11 22H2를 새로 설치한다고 가정합니다.
1. 필수 구성 요소 설치: 표준 cmd.exe 명령 프롬프트를 열고 다음 명령을 실행합니다.
`배쉬
Winget 설치 Git.Git
Winget 설치 Kitware.CMake
Winget 설치 nsis.nsis
Winget 설치 Microsoft.VisualStudio.2022.Community
`
2. Visual Studio 수정: C++ 애플리케이션을 지원하도록 Visual Studio를 구성합니다.
"Windows 시작" 메뉴를 클릭하고 "Visual Studio 설치 프로그램"을 실행합니다.
"수정"을 선택하십시오.
"C++를 사용한 데스크톱 개발"을 선택합니다.
오른쪽 하단에 있는 "수정"을 클릭한 후 "예"를 클릭하세요.
3. 개발자 명령 프롬프트: 설치가 완료된 후 "Windows 시작" 메뉴를 클릭하고 "VS 2022용 개발자 명령 프롬프트"를 선택합니다. 문제가 발생할 수 있으므로 이 단계에서는 PowerShell을 사용하지 마세요!
고급 사용자:
개발자 명령 프롬프트를 사용하는 대신 일반 명령 프롬프트를 선택하거나 SSH를 통해 연결하고 "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"를 수동으로 실행할 수 있습니다.
4. Microsoft VCPKG 설치: 개발자 명령 프롬프트(PowerShell 아님)에서 다음 명령을 실행하여 OpenCV를 빌드하는 데 사용할 Microsoft VCPKG를 설치합니다.
`배쉬
질병통제예방센터:
mkdir c:src
CD 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
`
완료하는 데 상당한 시간이 걸릴 수 있으므로 마지막 단계에서는 인내심을 가지십시오. 여기에는 수많은 구성 요소를 다운로드하고 구축하는 작업이 포함됩니다.
고급 사용자:
OpenCV를 빌드할 때 포함할 수 있는 선택적 모듈이 많이 있습니다. 전체 목록을 보려면 .vcpkg.exe 검색 opencv를 실행하세요.
선택 사항: 최신 NVIDIA GPU가 있는 경우 이 시점에서 CUDA 또는 CUDA+cuDNN을 설치할 수 있습니다. 설치된 경우 Darknet은 GPU를 사용하여 이미지(및 비디오) 처리 속도를 높입니다.
CMake가 필요한 모든 파일을 다시 찾도록 하려면 Darknet 빌드 디렉터리에서 CMakeCache.txt 파일을 삭제해야 합니다.
Darknet을 다시 구축하는 것을 잊지 마십시오.
Darknet은 그것 없이 실행될 수 있지만 사용자 정의 네트워크를 교육하려면 CUDA 또는 CUDA+cuDNN이 필요합니다.
CUDA를 다운로드하고 설치하려면 https://developer.nvidia.com/cuda-downloads를 방문하세요.
cuDNN을 다운로드하고 설치하려면 https://developer.nvidia.com/rdp/cudnn-download 또는 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows를 방문하세요.
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를 다시 설치해야 합니다.
5. Darknet 복제 및 구축: 이전 단계가 성공적으로 완료되면 Darknet을 복제하고 구축합니다. 이 단계에서는 CMake가 OpenCV 및 기타 종속성을 찾을 수 있도록 VCPKG 위치를 지정합니다.
`배쉬
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) 누락에 대한 오류가 발생하는 경우 CUDA .dll 파일을 darknet.exe와 동일한 출력 디렉터리에 수동으로 복사하세요. 예를 들어:
`배쉬
"C:프로그램 파일NVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease 복사
`
(이것은 예시입니다. 실행 중인 버전을 확인하고 설치에 적합한 명령을 사용하십시오.)
파일을 복사한 후 마지막 msbuild.exe 명령을 다시 실행하여 NSIS 설치 패키지를 생성합니다.
`배쉬
msbuild.exe /property:Platform=x64;구성=PACKAGE.vcxproj 릴리스
`
고급 사용자:
cmake 명령의 출력은 표준 Visual Studio 솔루션 파일(Darknet.sln)입니다. 프로젝트 빌드에 msbuild.exe 대신 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 파일을 설치합니다.
이제 끝났습니다! 설치 마법사가 완료되면 Darknet이 C:Program FilesDarknet에 설치됩니다. C:Program FilesDarknetbindarknet.exe 버전을 실행하여 테스트하세요.
C:/Program Files/darknet/bin/darknet.exe가 누락된 경우 Darknet은 빌드만 되고 설치되지는 않습니다. 이전 단계에서 NSIS 설치 마법사의 각 패널을 완료했는지 확인하세요.
다크넷 사용
CLI
다음은 Darknet에서 지원하는 모든 명령의 포괄적인 목록이 아닙니다.
Darknet CLI 외에도 Darknet/YOLO에 대한 대체 CLI를 제공하는 DarkHelp 프로젝트 CLI를 기억하세요. DarkHelp CLI에는 Darknet에서 직접 액세스할 수 없는 다양한 고급 기능이 포함되어 있습니다. Darknet CLI와 DarkHelp CLI를 동시에 활용할 수 있습니다. 그들은 상호 배타적이지 않습니다.
아래 대부분의 명령에는 해당 .names 및 .cfg 파일과 함께 .weights 파일이 필요합니다. 자신만의 네트워크를 훈련시키거나(강력히 권장됩니다!) 누군가가 온라인에서 무료로 제공한 사전 훈련된 신경망을 다운로드할 수 있습니다. 일부 사전 훈련된 데이터 세트에는 다음이 포함됩니다.
LEGO Gears(이미지의 객체 감지)
Rolodex(이미지의 텍스트 감지)
MSCOCO(표준 80등급 객체 감지)
실행할 명령:
가능한 명령 및 옵션 목록:
`배쉬
다크넷 도움말
`
버전을 확인하세요:
`배쉬
다크넷 버전
`
이미지를 사용한 예측:
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
`
출력 좌표:
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
`
비디오 작업:
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
`
웹캠에서 읽기:
V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`배쉬
darknet08display_webcam 동물
`
결과를 비디오에 저장:
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
`
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
`
특정 GPU에서 실행:
V2:
`배쉬
다크넷 탐지기 데모 Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
신경망 정확도 확인:
`배쉬
다크넷 탐지기 지도 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
`
앵커 재계산: 앵커 재계산은 DarkMark에서 가장 잘 수행됩니다. DarkMark는 연속 100회 실행되고 계산된 모든 옵션에서 최상의 앵커를 선택하기 때문입니다. 그러나 이전 Darknet 방법을 사용하려는 경우:
`배쉬
다크넷 탐지기 calcanchors Animals.data -numof_clusters 6 -너비 320 -높이 256
`
새로운 네트워크 훈련:
`배쉬
CD ~/nn/동물/
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
(자세한 내용은 아래 교육 섹션을 참조하세요.)
훈련
Darknet/YOLO FAQ의 관련 섹션에 대한 빠른 링크:
파일 및 디렉터리 설정: 파일과 디렉터리를 어떻게 설정해야 합니까?
구성 파일: 어떤 구성 파일을 사용해야 합니까?
훈련 명령: 자체 네트워크를 훈련할 때 어떤 명령을 사용해야 합니까?
주석을 달고 훈련하는 가장 간단한 방법은 DarkMark를 사용하는 것입니다. 필요한 모든 Darknet 파일을 생성하는 프로세스를 단순화합니다. 새로운 신경망을 훈련하려면 DarkMark를 사용하는 것이 좋습니다.
사용자 정의 네트워크 훈련을 위해 파일을 수동으로 설정하려는 경우:
1. 폴더 생성: 파일을 저장할 새 폴더를 생성합니다. 이 예에서는 동물을 감지하는 신경망을 만듭니다. 따라서 다음 디렉토리가 생성됩니다: ~/nn/animals/.
2. 구성 파일 복사: 템플릿으로 사용하려는 다크넷 구성 파일을 복사합니다. 예를 들어 cfg/yolov4-tiny.cfg를 참조하세요. 생성된 폴더에 넣어주세요. 이 예에서는 이제 ~/nn/animals/animals.cfg가 있습니다.
3. Animals.names 생성: 구성 파일과 동일한 폴더에 Animals.names라는 텍스트 파일을 생성합니다. 이제 이 예에는 ~/nn/animals/animals.names가 있습니다.
4. Animals.names 편집: 텍스트 편집기를 사용하여 Animals.names 파일을 편집합니다. 사용하려는 클래스를 나열하십시오. 각 클래스는 빈 줄이나 주석 없이 별도의 줄을 차지해야 합니다. 이 예에서 .names 파일에는 다음 네 줄이 포함됩니다.
`
개
고양이
새
말
`
5. 동물.데이터 생성: 동일한 폴더에 동물.데이터 텍스트 파일을 생성합니다. 이 예의 경우 .data 파일에는 다음이 포함됩니다.
`
수업 = 4
기차 = /home/username/nn/animals/animals_train.txt
유효한 = /home/username/nn/animals/animals_valid.txt
이름 = /home/username/nn/animals/animals.names
백업 = /home/사용자 이름/nn/동물
`
6. 데이터세트 폴더: 이미지와 주석을 저장할 폴더를 만듭니다. 예를 들어 ~/nn/animals/dataset일 수 있습니다. 각 이미지에는 주석을 설명하는 해당 .txt 파일이 필요합니다. .txt 주석 파일의 형식은 매우 구체적입니다. 각 주석에는 정확한 좌표가 필요하므로 이러한 파일을 수동으로 생성할 수 없습니다. DarkMark 또는 유사한 소프트웨어를 활용하여 이미지에 주석을 추가하세요. YOLO 주석 형식은 Darknet/YOLO FAQ에 설명되어 있습니다.
7. "train" 및 "valid" 파일: .data 파일에 언급된 "train" 및 "valid" 텍스트 파일을 만듭니다. 이 두 파일은 Darknet이 mAP%를 계산할 때 교육 및 검증에 사용할 모든 이미지를 개별적으로 나열해야 합니다. 한 줄에 하나의 이미지를 포함합니다. 경로와 파일 이름은 상대적이거나 절대적일 수 있습니다.
8. .cfg 파일 수정: 텍스트 편집기를 사용하여 .cfg 파일을 수정합니다.
배치=64인지 확인하세요.
세분화를 관찰하십시오. 네트워크 규모와 GPU 메모리 용량에 따라 세분화를 늘려야 할 수도 있습니다. 이상적인 값은 1이므로 그것부터 시작하세요. 1이 효과가 없다면 Darknet/YOLO FAQ를 참조하세요.
maxbatches=.....에 주의하세요. 좋은 시작 값은 클래스 수의 2000배입니다. 이 예에는 4마리의 동물이 있으므로 4 * 2000 = 8000, 즉 maxbatches=8000을 의미합니다.
참고 단계=..... 이를 최대 배치의 80% 및 90%로 설정합니다. 이 예에서는 maxbatch를 8000으로 설정하고 steps=6400,7200을 사용합니다.
너비=... 및 높이=..... 이는 네트워크 치수입니다. Darknet/YOLO FAQ에서는 최적의 크기를 결정하는 방법을 설명합니다.
모든 클래스 클래스=... 줄을 검색하고 .names 파일의 클래스 수로 수정합니다. 이 예에서는 클래스=4를 사용합니다.
각 [yolo] 섹션 앞의 [convolutional] 섹션에서 행 filter=...의 모든 항목을 검색합니다. 값은 (numberofclasses + 5) 3이어야 합니다. 이 예에서는 (4 + 5) 3 = 27입니다. 따라서 해당 행에 filter=27을 사용하십시오.
9. 훈련 시작: 다음 명령을 실행합니다.
`배쉬
CD ~/nn/동물/
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
인내심을 가지십시오. 가장 좋은 가중치는 Animals_best.weights로 저장됩니다. 훈련 진행 상황은 Chart.png 파일을 통해 모니터링할 수 있습니다. 새로운 네트워크를 훈련할 때 유용할 수 있는 추가 매개변수는 Darknet/YOLO FAQ를 참조하세요.
더 많은 교육 세부정보를 보려면 --verbose 매개변수를 추가하세요. 예를 들어:
`배쉬
다크넷 탐지기 -map -dont_show --verbose 기차 동물.데이터 동물.cfg
`
기타 도구 및 링크
Darknet/YOLO 프로젝트를 관리하고, 이미지에 주석을 달고, 주석을 확인하고, Darknet 교육에 필요한 파일을 생성하려면 DarkMark를 참조하세요.
Darknet에 대한 강력한 대안 CLI, 이미지 타일링, 비디오의 개체 추적 또는 상업용 애플리케이션을 위한 강력한 C++ API를 활용하려면 DarkHelp를 살펴보세요.
Darknet/YOLO FAQ가 귀하의 질문을 해결할 수 있는지 확인하세요.
Stéphane의 YouTube 채널에서 다양한 튜토리얼과 예제 비디오를 확인하세요.
지원 문의가 있거나 다른 Darknet/YOLO 사용자와 교류하고 싶다면 Darknet/YOLO Discord 서버에 가입하세요.
로드맵
최종 업데이트 날짜: 2024년 10월 30일:
완전한:
1. 훈련 중에 qsort()를 std::sort()로 대체했습니다(일부 모호한 인스턴스가 남아 있음).
2. check_mistakes, getchar() 및 system()을 제거했습니다.
3. C++ 컴파일러(Linux의 경우 g++, Windows의 경우 VisualStudio)를 사용하도록 Darknet을 변환했습니다.
4. Windows 빌드를 수정했습니다.
5. Python 지원이 수정되었습니다.
6. 다크넷 라이브러리를 구축했습니다.
7. 예측에 대한 레이블("알파벳" 코드)을 다시 활성화합니다.
8. CUDA/GPU 코드를 다시 활성화했습니다.
9. CUDNN을 다시 활성화합니다.
10. CUDNN 절반을 다시 활성화했습니다.
11. CUDA 아키텍처의 하드 코딩을 피했습니다.
12. 향상된 CUDA 버전 정보.
13. AVX를 다시 활성화했습니다.
14. 이전 솔루션과 Makefile을 제거했습니다.
15. OpenCV를 필수로 만들었습니다.
16. 이전 pthread 라이브러리에 대한 종속성을 제거했습니다.
17. STB를 제거했습니다.
18. 새로운 CUDA 감지 기능을 통합하기 위해 CMakeLists.txt를 다시 작성했습니다.
19. 오래된 "알파벳" 코드를 제거하고 데이터/라벨에서 700개 이상의 이미지를 삭제했습니다.
20. 소스 외부에 구축되었습니다.
21. 향상된 버전 번호 출력.
22. 교육과 관련된 성능 최적화를 구현했습니다(진행 중인 작업).
23. 추론과 관련된 성능 최적화를 구현했습니다(진행 중인 작업).
24. 가능하면 참조별 전달을 사용합니다.
25. .hpp 파일을 정리했습니다.
26. darknet.h를 다시 작성했습니다.
27. cv::Mat를 void*로 캐스팅하는 것을 피하고 이를 적절한 C++ 객체로 사용했습니다.
28. 내부 이미지 구조가 활용되는 방식의 일관성이 수정되거나 보장되었습니다.
29. ARM 기반 Jetson 장치에 대한 빌드가 수정되었습니다.
30. 원래 Jetson 장치는 NVIDIA가 더 이상 지원하지 않기 때문에(C++17 컴파일러 없음) 수정될 가능성이 없습니다.
31. 새로운 Jetson Orin 장치가 작동합니다.
32. V3의 Python API를 수정했습니다.
단기 목표:
1. printf()를 std::cout(진행 중)으로 바꾸십시오.
2. 이전 zed 카메라 지원을 다시 살펴보세요.
3. 명령줄 구문 분석 일관성을 개선하고 강화합니다(진행 중).
중기 목표:
1. 모든 char* 코드를 제거하고 std::string으로 대체합니다.
2. 숨겨진 경고를 제거하고 컴파일러 경고를 정리합니다(진행 중).
3. C의 사용자 정의 이미지 구조 대신 cv::Mat를 더 잘 활용합니다(진행 중).
4. 이전 목록 기능을 std::벡터 또는 std::list로 대체합니다.
5. 1채널 회색조 이미지 지원을 수정했습니다.
6. N > 3인 N 채널 이미지에 대한 지원을 추가합니다(예: 추가 깊이 또는 열 채널이 있는 이미지).
7. 지속적인 코드 정리(진행 중).
장기 목표:
1. 모든 GPU에서 CUDA/CUDNN 문제를 해결합니다.
2. CUDA+cuDNN 코드를 다시 작성합니다.
3. NVIDIA GPU가 아닌 GPU에 대한 지원 추가를 조사합니다.
4. 회전된 경계 상자 또는 일부 형태의 "각도" 지원을 도입합니다.
5. 키포인트/골격을 통합합니다.
6. 히트맵 통합(진행 중)
7. 세분화를 구현하십시오.