기계 학습과 컴퓨터 시각 (darknet 컴파일)

[성명: 판권 소유, 전재를 환영합니다. 상업용도로 사용하지 마십시오. 연락처:[email protected]]
 
한때 나는 코드를 읽는 것을 매우 좋아했지만, 코드를 컴파일하는 것에 대해 그리 흥미가 없었다.이것은 사실 본말이 전도된 방법이다.진정으로 언어나 소스 소프트웨어를 배우려면 반드시 실제 조작, 실제 번역, 실제 디버깅을 해야만 수확을 얻을 수 있다.수십 줄, 수백 줄의 코드를 보았지만 컴파일하지 않고 gdb 디버깅을 하지 않아도 얻은 지식은 항상 한계가 있다.그래서 여기서도 코드를 읽는 것을 좋아하지만 debug를 좋아하지 않는 학생들은 자신의 습관을 약간 조절할 수 있다.
 
다른 깊이 있는 학습 프레임워크에 비해darknet은 비교적 적다.그러나darknet의 구조가 비교적 뚜렷하고 제3자 구조에 의존하지 않기 때문에 여러 개의 os에서 번역에 성공할 수 있다.다음은 컴파일 작업을 시작합니다.
 
1. 코드 다운로드
git clone https://github.com/pjreddie/darknet.git

 
2, 컴파일
cd darknet
make

 
3. 현재 지원되는 플랫폼
제가 ubuntu와mac에서 다 컴파일했어요.
다만 ubuntu 위에서 컴파일을 성공적으로 하려면 Makefile을 수정해야 합니다
-LDFLAGS= -lm -pthread 
+LDFLAGS= -lm -lpthread

 
4, 다른 cpu 컴파일
4.1arm컴파일러로 컴파일
a, 현재 ubuntu에arm이 포함된 gcc, g++ 컴파일러를 확보하고 없으면 상관없습니다.
shell> sudo apt-get install gcc-arm-linux-gnueabi
shell> sudo apt-get install g++-arm-linux-gnueabi

b, makefile 수정
CC=arm-linux-gnueabi-gcc
CPP=arm-linux-gnueabi-g++

c, 남은 일은 바로 make하면 된다
 
4.2aarch64 컴파일러로 컴파일
a, 현재 ubuntu에aarch64의 gcc, g++ 컴파일러가 있는지 확인하십시오. 없으면 상관없습니다
shell> sudo apt-get install gcc-aarch64-linux-gnu
shell> sudo apt-get install g++-aarch64-linux-gnu

b, makefile 수정
CC=aarch64-linux-gnu-gcc
CPP=aarch64-linux-gnu-g++

c, 뒤에 똑같아요. 그냥 make하면 돼요.
 
5, 기타 컴파일 사항
GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0

정상적인 컴파일 이외에darknet은 5개의 기본 옵션을 지원합니다.첫 번째, 두 번째는 모두 GPU와 관련이 있기 때문에 자신의 기계에 nvidia 독립 그래픽 카드가 있으면 사용할 수 있는지 확인할 수 있다.세 번째는 오픈cv와 관련이 있습니다. 열면 로컬에 오픈cv 라이브러리가 필요합니다.예를 들어, sudo apt-get install libopencv-dev.네 번째는 가속 옵션입니다. 이전에 x86에서 사용했는데arm에 효과가 있는지 모르겠지만 컴파일하는 데 오류가 없습니다.다섯 번째는 일반적인 옵션입니다. 컴파일할 때 디버깅 정보를 추가할 수 있습니다.
 
6. 컴파일된 효과
컴파일에 성공하면, 보통 루트 디렉터리에 세 개의 파일을 생성합니다. 각각libdarknet입니다.a,libdarknet.so와darknet 실행 가능한 파일입니다.
 
7. 코드 입구점
shell> grep "main" * -R -w
examples/darknet.c:int main(int argc, char **argv)

 
8、darknet 사용
shell>$ ./darknet 

usage: ./darknet 

 
9. 모델을 다운로드하고 실행
shell>$ wget https://pjreddie.com/media/files/tiny.weights
shell>$ ./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg 
layer     filters    size              input                output
    0 conv     16  3 x 3 / 1   224 x 224 x   3   ->   224 x 224 x  16  0.043 BFLOPs
    1 max          2 x 2 / 2   224 x 224 x  16   ->   112 x 112 x  16
    2 conv     32  3 x 3 / 1   112 x 112 x  16   ->   112 x 112 x  32  0.116 BFLOPs
    3 max          2 x 2 / 2   112 x 112 x  32   ->    56 x  56 x  32
    4 conv     16  1 x 1 / 1    56 x  56 x  32   ->    56 x  56 x  16  0.003 BFLOPs
    5 conv    128  3 x 3 / 1    56 x  56 x  16   ->    56 x  56 x 128  0.116 BFLOPs
    6 conv     16  1 x 1 / 1    56 x  56 x 128   ->    56 x  56 x  16  0.013 BFLOPs
    7 conv    128  3 x 3 / 1    56 x  56 x  16   ->    56 x  56 x 128  0.116 BFLOPs
    8 max          2 x 2 / 2    56 x  56 x 128   ->    28 x  28 x 128
    9 conv     32  1 x 1 / 1    28 x  28 x 128   ->    28 x  28 x  32  0.006 BFLOPs
   10 conv    256  3 x 3 / 1    28 x  28 x  32   ->    28 x  28 x 256  0.116 BFLOPs
   11 conv     32  1 x 1 / 1    28 x  28 x 256   ->    28 x  28 x  32  0.013 BFLOPs
   12 conv    256  3 x 3 / 1    28 x  28 x  32   ->    28 x  28 x 256  0.116 BFLOPs
   13 max          2 x 2 / 2    28 x  28 x 256   ->    14 x  14 x 256
   14 conv     64  1 x 1 / 1    14 x  14 x 256   ->    14 x  14 x  64  0.006 BFLOPs
   15 conv    512  3 x 3 / 1    14 x  14 x  64   ->    14 x  14 x 512  0.116 BFLOPs
   16 conv     64  1 x 1 / 1    14 x  14 x 512   ->    14 x  14 x  64  0.013 BFLOPs
   17 conv    512  3 x 3 / 1    14 x  14 x  64   ->    14 x  14 x 512  0.116 BFLOPs
   18 conv    128  1 x 1 / 1    14 x  14 x 512   ->    14 x  14 x 128  0.026 BFLOPs
   19 conv   1000  1 x 1 / 1    14 x  14 x 128   ->    14 x  14 x1000  0.050 BFLOPs
   20 avg                       14 x  14 x1000   ->  1000
   21 softmax                                        1000
Loading weights from tiny.weights...Done!
data/dog.jpg: Predicted in 0.181403 seconds.
14.51%: malamute
 6.09%: Newfoundland
 5.59%: dogsled
 4.55%: standard schnauzer
 4.05%: Eskimo dog

좋은 웹페이지 즐겨찾기