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 설치가 필요하다

설치하였으면 실행 후 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 명령어를 입력하면 된다.
여기까지 해도 편집 창이 안뜨는 사람은 방화벽 설정으로 들어가서 '게스트 또는 공용네트워크' 방화벽을 꺼주고 다시 해보자.

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 |
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 설치가 필요하다

설치하였으면 실행 후 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 명령어를 입력하면 된다.
여기까지 해도 편집 창이 안뜨는 사람은 방화벽 설정으로 들어가서 '게스트 또는 공용네트워크' 방화벽을 꺼주고 다시 해보자.

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 |