Jetson Xavier agx에 Yolov3,4를 작동시키는데 웹캠 기본 화질 설정이 2304X1536으로 너무 높아 FPS가 1도 안 나오는 문제가 발생했습니다.
인터넷에 찾아본 결과 darknet/src/image_opencv.cpp 파일을 수정해줘야 한다고 합니다.
우선 기존에 설치한 darknet 폴더를 지워줍니다. (rm -rf 명령어를 사용하거나 그냥 폴더 클릭해서 delete)
그리고 darknet을 새로 설치합니다..
sudo apt-get update
sudo apt-get upgrade
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
git clone https://github.com/AlexeyAB/darknet
cd darknet
wget https://pjreddie.com/media/files/yolov3.weights
wget https://pjreddie.com/media/files/yolov3-tiny.weights
sudo vi Makefile
그럼 Makefile이 켜지는데 s를 눌러 수정 가능하게 바꾼 다음에
GPU = 0
CUDNN = 0
OPENCV = 0
을
GPU = 1
CUDNN = 1
OPENCV = 1
로 바꿔줍니다. (yolov4를 사용한다면 CUDNN_HALF와 LIBSO도 1로 바꿔줍니다.)
그 다음 esc를 누르고, :wq!를 입력해서 다시 터미널로 돌아옵니다.
이제 파일을 수정해줍시다.
cd src
code image_opencv.cpp
저는 visual studio가 설치돼 있어서 code로 실행했습니다.
visual studio가 없으신 분은
gedit image_opencv.cpp
로 파일을 여시면 됩니다.
파일을 열고 609번째 줄에 가보면
cap = new cv::VideoCapture(index)
//cap->set(CV_CAP_PROP_FRAME_WIDTH, 1280)
//cap->set(CV_CAP_PROP_FRAME_HEIGHT, 960)
이런 내용이 있을 겁니다. 이거를
cap = new cv::VideoCapture(index)
cap->set(cv::CAP_PROP_FRAME_WIDTH, 640)
cap->set(cv::CAP_PROP_FRAME_HEIGHT, 360)
이런 식으로 주석을 없애서 활성화시키고, CV_를 cv::으로 바꿔줍니다.
뒤에 640, 360 숫자는 사용자가 원하는 크기로 바꾸면 됩니다. (카메라가 지원해주는 크기를 확인하고 골라야 합니다.)
지원하는 카메라 해상도 확인하는 방법
sudo apt install v4l-utils
v4l2-ctl -d /dev/video0 --list-formats-ext
파일을 저장한 뒤 닫고,
cd
cd darknet
make
를 하면 준비 완료입니다.
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 0
웹캠을 켜서 확인해봅니다.
정상적으로 잘 수정했다면 Video stream : 640 X 360 과 같은 문구가 나오고 객체 인식이 시작됩니다.
화질을 또 바꾸고 싶다고 하시면 아까 수정한 문구에서 크기만 바꾸고 make만 새로 하시면 됩니다!
Yolov4를 사용하고 싶으신 분은
https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT
위 사이트에서 yolov4.weight을 다운받아 darknet 폴더로 옮긴 뒤
./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0
명령문에서 v3를 v4로 바꿔주기만 하면 됩니다.
원래 v4가 v3보다 fps가 약 10%정도 더 잘 나온다고 하는데, 저는 오히려 fps가 떨어졌고 아직 원인은 찾지 못 했습니다.
위 내용은 다음 사이트를 참고해서 작성했습니다.
https://ultrakid.tistory.com/11
https://webnautes.tistory.com/1482
https://stackoverflow.com/questions/62233584/change-video-stream-resolution-in-yolov4-demo
'정나우 > Jetson' 카테고리의 다른 글
[yolov4] Bounding box 중심점 출력하기 (0) | 2022.03.28 |
---|---|
[Yolov4] 영상인식 커스텀 학습법 (0) | 2022.03.20 |
Jetson xavier agx VScode 설치 및 실행 방법 (0) | 2021.10.12 |
Jetson Xavier agx 부팅 오류 (2) | 2021.10.06 |
Jetson Xavier agx 초기화 하는 법 (6) | 2021.09.27 |
댓글