yolo 개발환경
- ubuntu 18.0.4 Lts
- CPU
- Xserver
0. OPENCV 설치
// 기존 opencv 삭제
sudo apt-get remove libopencv*
sudo apt-get autoremove
sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
// 아무것도 안뜨면 정상
// 업그레이드
sudo apt-get update
sudo apt-get upgrade
// 개발자 도구 및 각종 라이브러리 설치
sudo apt-get install build-essential cmake unzip pkg-config //for compiling
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev //for image
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev v4l-utils libxvidcore-dev libx264-dev libxine2-dev
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev //for video
sudo apt-get install libgtk-3-dev //for GUI
sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
sudo apt-get install libatlas-base-dev gfortran libeigen3-dev //for optimizing
sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy //for python
// opencv 설치
sudo mkdir opencv //for making folder
sudo cd opencv
sudo wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.0.zip
sudo wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip
sudo unzip opencv.zip
sudo unzip opencv_contrib.zip
// 빌드 및 컴파일
cd opencv-3.4.0
sudo mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \ // 이 문장을 입력하면 > 와 함께 cmake 입력창이 뜬다.
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D PYTHON2_INCLUDE_DIR=/usr/include/python2.7 \
-D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/ \
-D PYTHON2_PACKAGES_PATH=/usr/lib/python2.7/dist-packages \
-D PYTHON2_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.6m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/ \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
../
// 컴파일
sudo make -j8 (숫자는 ubuntu 코어의 수, cat /proc/cpuinfo | grep processor 명령어로 확인)
// 마무리
sudo make install
sudo ldconfig
sudo pkg-config --modversion opencv
마지막에 3.4.0이라는 결과가 출력되면 완벽.
1. github에서 소스코드 가져오기
~$ git clone https://github.com/AlexeyAB/darknet
cd darkent
2. 설정
vi Makefile
를 하면, GPU=0 CUDNN=0 OPENCV=0 OPENMP=0 DEBUG=0 를 확인할 수 있다.
cpu만을 사용하는 환경이라면, OPENCV = 1로 설정해주고, GPU를 사용하는 환경이라면 GPU=1,CUDNN=1,OPENCV=1로 설정해준다.
make
(error 127이 뜬다면,
sudo apt-get install build-essential)
그 다음 make로 컴파일
3. 기존 가중치 다운로드
sudo wget https://pjreddie.com/media/files/yolov3.weights
(files/~~ 여기 ~~부분은 본인이 원하는 가중치 파일을 다운로드 하면 된다. 무엇이 있는지는
깃허브에서 확인해보자)
4. 테스트
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
(실행은 darknet 디렉토리에서 해야한다.)
만약 테스트할 때, 아래와 같은 문구가 뜬다면 윈도우 때문이므로 Xserver 설치가 필요하다
![](https://blog.kakaocdn.net/dn/c5pxMC/btrNb4uPvFU/HKhqO8Kv9l2JuGcYJJO5vk/img.png)
설치하였으면 실행 후 next -> next -> disable access control 체크 후, 우분투로 돌아와서
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
export LIBGL_ALWAYS_INDIRECT=1
명령어 입력
그리고 연결될 때마다 해당 명령어가 적용되도록 홈에 위치한 .bashrc 파일에도 추가
sudo vi ~/.bashrc
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
export LIBGL_ALWAYS_INDIRECT=1
bashrc 파일을 빠져나와서 gedit 명령어를 입력하면 된다.
여기까지 해도 편집 창이 안뜨는 사람은 방화벽 설정으로 들어가서 '게스트 또는 공용네트워크' 방화벽을 꺼주고 다시 해보자.
![](https://blog.kakaocdn.net/dn/ZGXsC/btrNeIDRnrg/6EkrWzZjXIdC0C93K5LcB0/img.png)
5. 이제부터는 custom data 적용해보자
(필자는 아나콘다의 labelimg툴을 이용하여 라벨링을 진행했고, pascal/voc format의 annotations을얻었다.)
사실 데이터 format이 COCO, VOC, UDACITY Object Detection, KITTI 2D Object Detection 중 하나이기만 하면 상관없다.( yolo 포맷이면 제일 좋고..)
cd ~
git clone https://github.com/ssaru/convert2Yolo
cd convert2Yolo
pip3 install -r requirements.txt (pip3가 안된다면 install)
$ python3 example.py
--datasets VOC [coco,voc,kiiti,udacity 중 본인이 가지고 있는 데이터 셋 선택]
--img_path <사진이 있는 폴더의 path>
--label <annotations이 있는 폴더의 path>
--convert_output_path <yolo형식(txt파일)으로 변환된 것이 저장될 위치>
--img_type ".jpg" [가지고 있는 사진의 타입]
--manipast_path ./ [변환된 파일들의 리스트를 manipast.txt 로 저장할 폴더, 냅둬도 상관없다]
--cls_list_file <class 이름들이 담긴 name파일 경로>
본인은 아래와 같은 코드를 사용했다.
python3 example.py
--datasets VOC
--img_path ~/geo/Images
--label ~/geo/annotations
--convert_output_path ~/darknet/custom_data/Images
--img_type ".jpg"
--manifest_path ~/darknet/custom_data/train.txt
--cls_list_file ~/darknet/custom_data/custom.names
실행하면, 변환이 완료될 것이다.
!! 만약, voc parsing number object 0(zero) 같은 에러가 뜬다면,
Format.py 파일에 들어가서
if len(objects) == 0:
return False, "number object zero"
위 코드를 아래처럼 바꿔주자
if len(objects) == 0:
#return False, "number object zero"
print("WARNING: no objects in file: {}".format(filename))
이제 custom data 세팅 및 기본 설정은 완료했다.
다음 포스팅에서는 custom data로 학습을 위해 Yolo 모델 설정을 알아보자
'AI' 카테고리의 다른 글
Neural Networks and Multi-Layer Perceptron 개념 간단 정리 (0) | 2022.09.28 |
---|---|
딥러닝 기본 용어 설명 (0) | 2022.09.28 |
Yolo v3 custom data 하나부터 열까지2(Windows) (0) | 2022.09.27 |
인공지능 역사 (0) | 2022.07.12 |
인공지능 소개 (0) | 2022.07.12 |