본문 바로가기
정나우/Jetson

[Jetson Xavier agx] YOLO 실시간 객체 인식 시 웹캠 화질 낮추는 방법

by 정_나우 2021. 12. 16.

Jetson Xavier agx에 Yolov3,4를 작동시키는데 웹캠 기본 화질 설정이 2304X1536으로 너무 높아 FPS가 1도 안 나오는 문제가 발생했습니다.

 

인식은 잘 되지만 FPS가 매우 낮다.

 

인터넷에 찾아본 결과 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 과 같은 문구가 나오고 객체 인식이 시작됩니다.

FPS가 15로 훨씬 잘 나오게 됩니다.

 

화질을 또 바꾸고 싶다고 하시면 아까 수정한 문구에서 크기만 바꾸고 make만 새로 하시면 됩니다!

 

Yolov4를 사용하고 싶으신 분은

https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT 

 

yolov4.weights

 

drive.google.com

위 사이트에서 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

 

[YOLO] Jetson nano 에 YOLO 설치 및 실시간 객체 인식 예제 구동

현재 Jetson nano에 깔려있는 CUDA 10.0 , JetPack 4.3 , OpenCV 3.4 버전을 기준으로 작성하였습니다. YOLO ? YOLO(You Only Look Once)는 이미지 내의 bounding box와 class probability를 single regression p..

ultrakid.tistory.com

https://webnautes.tistory.com/1482

 

Ubuntu에서 darknet을 사용하여 Yolo v4 커스텀 학습하는 방법

Ubuntu에서 darknet을 사용하여 Yolo v4 커스텀 학습하는 방법을 다루고 있습니다. 2021. 05. 16 최초작성 2021. 05. 28  darknet 설치후 Yolo v4 테스트 0. CUDA 및 OpenCV를 먼저 설치해야 합니다. Ubuntu 20.0..

webnautes.tistory.com

https://stackoverflow.com/questions/62233584/change-video-stream-resolution-in-yolov4-demo

 

Change video stream resolution in YoloV4 demo

Here's what shows when loading the live stream demo for Yolov4: Webcam index: 2 [ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video

stackoverflow.com

 

댓글