Data.gov 주요 저장소
이는 Data.gov 플랫폼의 주요 저장소입니다. 주로 팀 작업을 추적하는 데 사용되지만 Datagov 전체 코드(GitHub 작업 템플릿, 송신 등)를 수용하는 데도 사용됩니다.
cloud.gov 환경에 대한 문서를 찾고 있다면 애플리케이션 저장소를 참조하세요.
GitHub 작업 및 템플릿
이 저장소의 템플릿을 사용하도록 여러 GitHub Action이 리팩터링되었습니다. 여기에서 이러한 템플릿과 인벤토리 및 카탈로그에서 이를 호출하는 예를 찾을 수 있습니다.
다크넷 개체 탐지 프레임워크 및 YOLO
Darknet은 C, C++ 및 CUDA로 구축된 오픈 소스 신경망 프레임워크입니다.
YOLO(You Only Look Once)는 Darknet 프레임워크 내에서 작동하는 최첨단 실시간 개체 탐지 시스템입니다.
Hank.ai가 Darknet/YOLO 커뮤니티를 어떻게 지원하는지 읽어보세요.
Darknet/YOLO 웹사이트를 찾아보세요.
다크넷/YOLO FAQ를 살펴보세요.
Darknet/YOLO Discord 서버에 가입하세요.
서류
1. YOLOv7 논문 (논문 링크)
2. Scaled-YOLOv4 논문 (논문 링크)
3. YOLOv4 논문(논문 링크)
4. YOLOv3 논문(논문 링크)
일반 정보
Darknet/YOLO 프레임워크는 다른 프레임워크 및 YOLO 버전보다 계속해서 더 빠르고 정확합니다. 완전히 무료이며 오픈 소스이므로 라이센스 제한이나 비용 없이 Darknet/YOLO를 프로젝트 및 제품에 통합할 수 있습니다.
2024년 10월에 출시된 Darknet V3("Jazz")는 NVIDIA RTX 3090 GPU를 사용하여 LEGO 데이터 세트 비디오를 최대 1000FPS로 처리할 수 있습니다. 이는 각 비디오 프레임이 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: 2013년부터 2017년까지 Joseph Redmon이 만든 원본 Darknet 도구입니다.
버전 1.x: 2017년부터 2021년까지 Alexey Bochkovskiy가 관리하는 인기 있는 Darknet 저장소입니다.
버전 2.x("OAK"): Hank.ai가 후원하고 2023년부터 Stéphane Charette가 유지 관리하는 Darknet 저장소입니다. 이 버전에는 버전 명령이 도입되었습니다.
버전 2.1: v2 분기에서 사용할 수 있는 버전 2 코드베이스의 마지막 분기입니다.
버전 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 데이터 세트에서 사전 훈련되었습니다. 이 데이터 세트에는 cfg/coco.names 텍스트 파일에 나열된 80개의 클래스가 포함되어 있습니다.
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-전체
예제 명령:
`
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 방법
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을 복제합니다.
`배쉬
sudo apt-get 설치 빌드 필수 git libopencv-dev cmake
mkdir ~/srccd ~/src
자식 클론 https://github.com/hank-ai/darknetcd darknet
mkdir 빌드
CD 빌드
`
8. CMake를 구성합니다.
`배쉬
cmake -DCMAKEBUILDTYPE=릴리스 ..
`
9. 다크넷 구축:
`배쉬
-j4 패키지 만들기
`
10. 다크넷 설치:
`배쉬
sudo dpkg -i darknet-VERSION.deb
`
11. 테스트 설치:
`배쉬
다크넷 버전
`
추가 참고사항:
이전 버전의 CMake를 사용하는 경우 cmake 명령을 실행하기 전에 업그레이드하세요.
`배쉬
sudo apt-get purge cmake
sudo 스냅 설치 cmake --classic
`
Bash를 사용하는 경우 셸을 다시 시작하세요. 그렇지 않으면 fish가 자동으로 경로를 업데이트해야 합니다.
DEB 파일 대신 RPM 설치 파일을 빌드하려면 CM_package.cmake 파일을 수정하세요.
설치 패키지가 빌드되면 배포용 패키지 관리자를 사용하여 설치합니다(예: Debian 기반 시스템의 경우 sudo dpkg -i darknet-2.0.1-Linux.deb).
Windows CMake 메서드
1. 필요한 도구를 설치합니다:
`배쉬
Winget 설치 Git.Git
Winget 설치 Kitware.CMake
Winget 설치 nsis.nsis
Winget 설치 Microsoft.VisualStudio.2022.Community
`
2. Visual Studio 설치 수정:
- "Visual Studio 설치 프로그램"을 엽니다.
- "수정"을 클릭하세요.
- "C++를 사용한 데스크톱 개발"을 선택합니다.
- 오른쪽 하단의 '수정'을 클릭한 후 '예'를 클릭하세요.
3. VS 2022용 개발자 명령 프롬프트 열기: PowerShell을 사용하지 마세요.
4. Microsoft VCPKG를 설치합니다.
`배쉬
cd c:mkdir c:srccd c:src
자식 클론 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 Computing Toolkit/CUDA/[version]/에 복사합니다. 일부 파일을 덮어써야 할 수도 있습니다.
12. Darknet을 복제하고 빌드합니다.
`배쉬
CD C:src
자식 클론 https://github.com/hank-ai/darknet.gitcd darknet
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 릴리스
`
13. CUDA DLL 복사(선택 사항): CUDA 또는 cuDNN DLL(예: cublas64_12.dll) 누락에 대한 오류가 발생하는 경우 CUDA DLL을 Darknet.exe 출력 디렉터리에 수동으로 복사합니다.
`배쉬
"C:프로그램 파일NVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease 복사
`
(버전 번호를 사용 중인 버전 번호로 바꿔야 합니다.)
14. msbuild.exe 명령을 다시 실행하여 NSIS 설치 패키지를 생성합니다.
`배쉬
msbuild.exe /property:Platform=x64;구성=PACKAGE.vcxproj 릴리스
`
15. 테스트 설치:
`배쉬
C:srcDarknetbuildsrc-cliReleasedarknet.exe 버전
`
16. NSIS 설치 마법사를 실행합니다. 이렇게 하면 CLI 애플리케이션, 필수 DLL, 라이브러리, 포함 파일 및 템플릿 구성 파일이 설치됩니다.
추가 참고사항:
cmake 명령은 Visual Studio 솔루션 파일(Darknet.sln)을 생성합니다. msbuild.exe 대신 Visual Studio GUI를 사용하여 프로젝트를 빌드할 수 있습니다.
NSIS 설치 패키지(예: darknet-VERSION.exe)는 빌드 디렉터리에서 찾을 수 있습니다.
다크넷 사용
CLI
다음은 모든 Darknet 명령의 전체 목록이 아닙니다.
darknet help: 도움말 정보를 표시합니다.
다크넷 버전: 다크넷 버전을 확인하세요.
예측 명령:
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 ...
`
mAP@IoU=75:
`배쉬
다크넷 탐지기 맵 Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
`
앵커 다시 계산:
DarkMark(권장): DarkMark를 사용하여 100번의 연속 계산을 실행하고 최상의 앵커를 선택합니다.
다크넷:
`배쉬
다크넷 탐지기 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/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).
6. DarkMark 또는 유사한 소프트웨어를 사용하여 이미지에 주석을 달고 해당 .txt 주석 파일을 생성합니다.
7. Animalstrain.txt 및 Animalsvalid.txt 파일을 생성하여 훈련 및 검증용 이미지를 각각 한 줄에 하나씩 나열합니다.
8. 구성 파일을 수정합니다.
- 배치=64로 설정합니다.
- 필요에 따라 세분화를 조정합니다.
- max_batches=8000(또는 2000 x 클래스 수)으로 설정합니다.
- 단계를 6400,7200(max_batch의 80% 및 90%)으로 설정합니다.
- 너비와 높이를 네트워크 크기에 맞게 설정하세요.
- .names 파일의 클래스 수로 클래스를 업데이트합니다.
- [yolo] 섹션 앞의 각 [convolutional] 섹션에서 필터를 업데이트합니다: (클래스 수 + 5) * 3.
9. 훈련 시작:
`배쉬
CD ~/nn/동물/
다크넷 탐지기 -map -dont_show 기차 동물.데이터 동물.cfg
`
추가 교육 팁:
더 자세한 교육 정보를 보려면 --verbose 매개변수를 사용하세요.
`배쉬
다크넷 탐지기 -map -dont_show --verbose 기차 동물.데이터 동물.cfg
`
기타 도구 및 링크
DarkMark: Darknet/YOLO 프로젝트를 관리하고, 이미지에 주석을 달고, 주석을 확인하고, 교육 파일을 생성합니다.
DarkHelp: Darknet에 대한 강력한 대체 CLI, 이미지 타일링, 객체 추적 및 상용 애플리케이션을 위한 C++ API를 지원합니다.
Darknet/YOLO FAQ: 일반적인 질문에 대한 답변을 제공하는 종합 리소스입니다.
Stéphane의 YouTube 채널: Darknet/YOLO에 대한 튜토리얼 및 예제 비디오.
Darknet/YOLO Discord 서버: 지원 및 토론을 위한 커뮤니티 포럼입니다.
로드맵
완료된 작업:
효율성 향상을 위해 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를 다시 작성했습니다.
오래된 알파벳 코드를 제거하고 불필요한 이미지를 삭제했습니다.
소스 외부 빌드를 활성화했습니다.
버전 번호 출력이 개선되었습니다.
훈련 및 추론 성능이 최적화되었습니다.
해당되는 경우 참조별 전달을 구현했습니다.
.hpp 파일을 정리했습니다.
darknet.h를 다시 작성했습니다.
void*로 캐스팅하는 대신 cv::Mat를 적절한 C++ 객체로 사용했습니다.
내부 이미지 구조 사용의 불일치가 수정되었습니다.
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가 아닌 GPU에 대한 지원을 살펴보세요.
회전된 경계 상자 또는 "각도" 지원을 구현합니다.
키포인트/골격, 히트맵 및 분할 지원을 추가합니다.