• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

YOLO 강의 질문

20.06.25 20:48 작성 조회수 325

0

YOLO 강의 중에 궁금한점 두가지 있습니다.

1.  net = cv2.dnn.readNet("yolo/yolov3.weights", "yolo/yolov3.cfg")

      layer_names = net.getLayerNames()

      output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]

    위의 코드에서 getLayerNames() 함수와 getUnconnectedOutLayers() 함수의 기능이 강의에서 언급이 적어서 잘 이해가 가질않습니다. 이 두개의 함수의 기능이 뭔가요?

2. 강의에서처럼 dlib이랑 face_recognition 다 설치했는데 쥬피터노트북에서 import하니 "no module named dlib" , "no module named face_recognition" 이라고 나옵니다. 분명히 설치했는데 왜 import가 안되나요?

3. YOLO Video 강의에서 저도 코드를 따라 써서 실행해보니 제 컴퓨터는 선생님 강의에서보다 조금 더 영상 재생 속도가 빠르긴 하던데 그래도 많이 느립니다. 이렇게 느리면 강의에서 말씀하신것처럼 아이디어를내서  "주차장cctv를 이용해서 주차돼있는 차량수 를 알아내 빈 주차공간 개수를 확인" 하는 프로그램을 만들어도 주차흐름이 빠른 주차장에서는 영상재생속도가 빨라야 빈공간을 빨리 찾을텐데 이렇게 재생속도가 느리니 YOLO를 잘 활용이 될 수 있을까하는 의문이 드는데요.이런경우 영상 재생속도를 해결하는 방법이 있나요?

답변 3

·

답변을 작성해보세요.

0

안녕하세요?

라즈베리파이 강의는 기본적으로 라즈베리파이를 활용하는 내용과 라즈베리파이 같은 저사양에서도 돌아가는 프로그램을 만드는 내용이 주제입니다.

그래서 라즈베리파이도 최신 4버전이 아니고 3버전을 기준으로 실습을 진행합니다. 그러므로 최신버전이 아니더라도 저가의 라즈베리파이 3B모델을 주변에서 구하시거나 구매하시기를 추천합니다.

이 강의를 듣고나면 PC에서 프로그래밍하는 것이 얼마나 여유로운 지를 다시 느끼게 됩니다.^^

감사합니다.

0

choi님의 프로필

choi

질문자

2020.06.26

답변감사합니다.

답변해주신 강의인 [라즈베리파이]IoT 강의는 라즈베리파이를 따로 구매하여야만 하나요?, 제가 사용하는 데스크탑컴퓨터론 바로 강의듣고 실습할 수 없나요?

0

안녕하세요?

열심히 공부하시는 모습이 좋습니다.

1. 이 단원에서는 그냥 YOLO를 사용하므로 getLayerNames() 함수와 getUnconnectedOutLayers() 함수는 이론적인 배경설명이 길어질 것 같아서 간단히 넘어갔습니다. 이 내용은 YOLO를 이용하여 원하는 모델을 학습하는 내용을 배우는 후속 편 '[OpenCV]...불량사과를 찾아라'편에서 자세히 다루고 있습니다. 간략히 설명드리면 YOLO를 포함한 CNN모델은 여러 개의 Layer를 가지고 있습니다. CNN에 관한 내용은 제 '텐서플로' 또는 '케라스' 강의나 다른 유사 자료를 참조하시면 됩니다. YOLO도 여러 개의 Layer를 사용하는데 그 중 Output을 위해서 사용되는 Layers는 3개일 겁니다. 어떤 내용인지 확인해보시려면 layer_names,  output_layers를 출력해 보시면 됩니다. 우리는 결과값이 들어있는 Layers만 선별해서 사용하는 내용입니다.

2. dlib이랑 face_recognition 을 가상환경에 설치하셨는지 확인 바랍니다. 보통 주피터노트북은 가상환경 밖에서 실행되므로 그러면 새로 설치해 줘야합니다. 가상환경은 완전히 독립된 공간이라고 보시면 됩니다. 확인해 보시고 알려주세요.

3. YOLO face recognition 예제를 실행하면 동일한 하드웨어 환경에서 느리게 것입니다.

그래서 과정 마지막에 '얼굴 인식(Face recognition) 프로그램 최적화'라는 단원에서 해결방법을 가지 제시합니다.

A. 가장 기본적인 방법은 하드웨어의 성능을 높이는 것입니다. GPU TPU 사용하면 좋겠지요

B. 그러나 적은 비용으로 좋은 결과를 얻기 위해서 실무에서는 실시간으로 보여주지 않고 처리하면서 새로운 동영상으로 저장하는 방식을 많이 사용합니다.  '얼굴 인식(Face recognition) 프로그램 최적화'단원에서 방법을 설명하고 있습니다.

C. YOLO tiny hog 같이 정확도는 떨어지나 속도가 빠른 대안을 쓰기도 합니다. 역시 '얼굴 인식(Face recognition) 프로그램 최적화'단원을 참조하세요

D. 기본적으로 동영상이 느린 것은 1초에 30프레임 정도 정지 이미지를 연속해서 실행하여 부하를 주는 것인데 프로그램에서 예를 들어 5프레임 단위로 실행하여 부하를 줄이는 방법을 사용하기도 합니다.

Computer Vision에서 성능을 최적화하는 방법은 다음 강의인 '[라즈베리파이]IoT 머신러닝, 딥러닝 Computer Vision 실전 프로젝트'에서 다루고 있으니 참조하시는 것도 추천합니다.

감사합니다.