Darknet Install 비망록
개요
YOLO 모델 를 평가하고 싶었기 때문에 Darknet을 설치했다.
설치
시행 착오의 결과, 최종적으로 아래의 Darknet에 도착하여 이것을 설치한다.
htps : // 기주 b. 코 m / 아, B / 다 rk t
Darknet은 상기 이외에 다음의 2개도 시도했지만, 이 AlexeyAB의 해설이 매우 정중하고 좋았다. Q&A도 풍부.
덧붙여서, NNPACK는 Ninja의 인스톨이나 컴파일이 필요해, AWS 의 순서도 보면서 컴파일 할 수 있었다. GPU+CUDA를 설치할 수 있으면 NNPACK은 필요 없다.
요컨대, clone한 ninja 폴더내의 build.ninja 파일에 다음의 2행의 추가 편집이 필요하다.
cflags = -std=gnu99 -g -pthread -fPIC
cxxflags = -std=gnu++11 -g -pthread -fPIC
어이의 경우, 최종적으로 GPU가 없는 엣지 단말에 재교육한 YOLO를 둘 때는 OPEN VINO를 사용할 생각이므로, 역시 NNPACK는 불필요.
컴파일
먼저 복제합니다.
$ git clone https://github.com/AlexeyAB/darknet.git
home 바로 아래에 darknet 폴더가 있기 때문에 거기서 작업한다.
실제로 clone하면 darkent의 폴더에 열쇠 마크가 붙었다.
root와 home의 유저에게 권한 제한은 없다고 하지만 chmod 777해도 마크가 잡히지 않고, 기분이 나빴기 때문에 이것은 삭제(rm -r)했다.
클론이 아닌 "Download ZIP"버튼을 뽐내고, 해동하여 생긴 darknet 폴더를 home 바로 아래에 복사(cp -r)했다.
make 조건이 작성된 Makefile을 편집합니다.
$ cd darknet
$ sudo vim Makefile
Makefile에서 Enable(=1)로 설정하는 것은 GPU, CUDNN, OPENCV
GPU=1
CUDNN=1
CUDNN_HALF=0
OPENCV=1
AVX=0
OPENMP=0
LIBSO=0
ZED_CAMERA=0
또한 지금 살아 있는 "ARCH="를 코멘트 아웃하고, 환경에 맞추어 그 하행에 있는 코멘트 아웃되고 있는 "#ARCH="를 살린다.
#GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
ARCH=-gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61
덮어쓰기 저장(:wq!)하고 make한다.
원래의 "ARCH="로 make해도 그 후의 동작에 문제는 없었지만, 환경에 맞춘 "ARCH="로 변경하면 make 시간이 짧아진 것 같다.
$ sudo make
Makefile:171: recipe for target 'obj/convolutional_kernels.o' failed
make: *** [obj/convolutional_kernels.o] Error 127
회사의 환경이라고 순조롭게 make 할 수 있었지만, 집에서는 에러가 나왔다. pjreddie의 darknet에서도 같은 오류가 나온다.
시험에 GPU, CUDNN을 0으로하면 문제 없음.
Github에서 Close했다.
#NVCC=nvcc
NVCC=/usr/local/cuda/bin/nvcc
CUDA 설치가 올바르지 않았을까.
확인
여기에서는 darknet/data 폴더에 들어 있던 개의 jpg 파일로 동작 확인을 실시한다.
Yolov3 모델에서 사전에 교육이 끝난 웨이트가 필요하지만 AlexeyAB의 darknet에는 들어 있지 않았기 때문에 pjreddie의 darknet에 들어 있던 yolov3.weights를 darknet 폴더 바로 아래에 복사해 둔다.
그리고 전단에서 make한 실행 파일로 개를 검출시킨다.
$./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
CUDA-version: 10020 (10020), cuDNN: 7.6.5, GPU count: 1
OpenCV version: 3.4.8
net.optimized_memory = 0
batch = 1, time_steps = 1, train = 0
layer filters size/strd(dil) input output
0 conv 32 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BF
1 conv 64 3 x 3/ 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BF
2 conv 32 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BF
3 conv 64 3 x 3/ 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BF
4 Shortcut Layer: 1, wt = 0, wn = 0, outputs: 208 x 208 x 64 0.003 BF
/*** 中略 ***/
104 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
105 conv 255 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 255 0.353 BF
106 yolo
[yolo] params: iou loss: mse (2), iou_norm: 0.75, cls_norm: 1.00, scale_x_y: 1.00
Total BFLOPS 65.879
avg_outputs = 532444
Allocate additional workspace_size = 52.43 MB
Loading weights from yolov3.weights...
seen 64, trained: 32013 K-images (500 Kilo-batches_64)
Done! Loaded 107 layers from weights-file
data/dog.jpg: Predicted in 25.815000 milli-seconds.
bicycle: 99%
dog: 100%
truck: 94%
결과 jpg가 표시되고 predictions.jpg로 darknet 폴더에 있으면 성공
케이스
다음 번에 드디어 모델 재교육과 실시간 감지에 도전
이상
Reference
이 문제에 관하여(Darknet Install 비망록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ihmon/items/a331d63a7a5d3fa51918텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)