본문 바로가기
Team Project/핸들랭(handlang)

프로젝트 실습기록 및 데이터수집

by 지누: 2020. 1. 16.

1. 우분투에서 yolo v3 실행

 

[전체코드]

sudo apt-get install g++
sudo apt-get install cmake

sudo apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev libv4l-dev v4l-utils libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libqt4-dev mesa-utils libgl1-mesa-dri libqt4-opengl-dev libatlas-base-dev gfortran libeigen3-dev python2.7-dev python3-dev python-numpy python3-numpy

mkdir opencv
cd opencv
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.2.0.zip
unzip opencv_contrib.zip

cd opencv-3.2.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -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 ENABLE_NEON=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules -D WITH_V4L=ON -D WITH_FFMPEG=ON -D WITH_XINE=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D PYTHON_INCLUDE_DIR=/usr/include/python2.7 -D PYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python2.7 -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so ../

make -j4
sudo make install


pkg-config --modversion opencv
pkg-config --libs --cflags opencv

git clone https://github.com/pjreddie/darknet
cd darknet
make
vim Makefile
# OPENCV=1 ## 1로 바꿔주기! GPU 사용시 GPU=1로 수정
make

wget https://pjreddie.com/media/files/yolo.weights

이미지파일 실행
./darknet detect cfg/yolov2.cfg yolo.weights data/dog.jpg

동영상파일 예제 실행하기
./darknet detector demo cfg/coco.data cfg/yolov2.cfg yolo.weights <video file>

Webcam으로 실행
./darknet detector demo cfg/coco.data cfg/yolov2.cfg yolo.weights

[동영상파일 실행]

👉 실행은 되지만 엄청 느리다.. GPU를 사용안해서 그런듯🥺 

 

--------------------

[Error] Failed to load module "canberra-gtk-module"

👉 해결방안: sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

 

🚨근데 또 에러 발생

[Error]

E: /var/lib/dpkg/lock-frontend 잠금 파일을 얻을 수 없습니다 - open (11: 자원이 일시적으로 사용 불가능함)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

👉 해결방안:

$ sudo killall apt apt-get # 이거 했는데 실행중인게 없다고 뜬다면 아래 3줄 실행

$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock*

$ sudo dpkg --configure -a

$ sudo apt update # 완료!

 

 

---------------------------

GPU 사용을 안해서 그런지 너무 느려서 이후 GCP를 통해 GPU 할당 받은 후 다시 실습했다.

gui 연결이 안돼서 영상분석에는 결국 실패했지만 과정은 남기는게 좋을 것 같아 기록했다.

 

2. GCP로 NVDIA K80 GPU 할당받고, 우분투 가상환경에서 OpenCV 설치 후 Yolo v3 실행

 

❗️NVDIA K80 사용하기위해서는 사용할 수 있는 위치를 먼저 확인

🔗 https://cloud.google.com/compute/docs/gpus/#gpus-list

GCP 👉 IAM 및 관리자 👉 할당량 페이지에 들어가서

측정항목에서 선택 해제 후 NVIDIA K80 GPUs 만 다시 선택

한도가 1로 되어있는 것을 확인할 수 있다.

🚨 무조건 GPU(all regions) 의 한도도 체크해야 한다.

체크 안하면.. 나중에 아래와 같은 오류가 뜬다.

[Error] Quota 'GPUS_ALL_REGIONS' exceeded. Limit: 0.0 globally.

한도가 제대로 적용이 안되나 해서 일반 NVIDIA K80 GPUs asia-northeast1 한도량 수정을 1로 신청했는데 다음과 같은 답변이 왔다.

1) 일단, 내가 신청한 NVIDIA K80 GPU 는 asia-northeast1에서는 지원 안한다.

2) 하지만 이미 할당량은 1로 되어있으니까 이거는 신청안해도 된다.

3) 근데, 내 GPU all regions 할당량은 0으로 되어 있으니까 이거 다시 할당량 수정해서 신청해 주세여..

 

다시 신청 했고 하루 지나서 사용할 수 있다는 답변을 받았다.

GCP 👉 햄버거아이콘  👉 Compute Engine  👉 VM 인스턴스

아래와 같이 설정하고 만들기

❗️ GPU 유형 더보기 버튼이 활성화 되어 있지 않았다면 지역(리전)이랑 영역 확인

만들고 Compute Engine 👉 VM 인스턴스 들어가서 연결 SSH 클릭하면

Welcome to Ubuntu

터미널에 nvcc -V 명령어를 입력했을 때 다음과 같은 정보가 뜬다면 GPU 할당받기 성공

----------------------

gui 문제로 다른 방법을 찾았고, 결국 colab으로 돌렸다.

코드(깃허브) 링크🔗https://github.com/Turtlefromocean/DSC-EWHA-HANDLANG/blob/master/Practice/YOLO%20V3/Yolo_v3.ipynb

 

👉yolo v3 분석 결과물 (현대자동차 광고)

 

 

3. 데이터 수집

[스킵한 데이터셋]

🟤Sign Language MNIST (https://www.kaggle.com/datamunge/sign-language-mnist)

(실습기록)

링크🔗 https://github.com/alvinwan/sign-language-translator

하지만 이 데이터셋의 경우 csv 파일로 제공되어 있다.

darkflow는 jpg형식의 이미지가 필요한 걸로 알고 있어 jpg 형식으로 변환하려고 시도해봤다.

인터넷에 csv to jpg라고 검색하면 온라인 컨버터 사이트가 많이 뜨는데 용량이 커서 그런지 변환에 계속 실패했다.

따라서 csv 파일을 1000줄씩 끊어서 파일 한개당 약 3.5mb짜리로 분할 후 다시 변환해보았지만

실패했다. 😇

 

동일한 데이터셋으로 진행한 다른 프로젝트를 보니 아래와 같은 식으로 변환된 프로젝트만 존재했다.

우리팀이 원하는 자료는 이런식의 컬러 데이타였는데 어떻게 변환할지 몰라 일단 스킵하고 다른 데이터셋을 찾았다.

*참고

[darkflow png extension] https://github.com/thtrieu/darkflow/commit/80f5798d7dcce94969577b585cd26aa0f0c74602

 

[이후 찾은 데이터셋]

🟢ASL Alphabet (jpg) (https://www.kaggle.com/grassknoted/asl-alphabet#A100.jpg)

알파벳 당 3000개씩 있으며, jpg 형식이다

 

그리고 숫자 수화 데이터셋

🟢Sign-language-digit (https://github.com/ardamavi/Sign-Language-Digits-Dataset)

숫자 당 205개 내외씩 있으며, jpg 형식이다.

 

계속 찾아볼 예정

댓글