[ubuntu+python] YOLOv3으로 물체(객체) 검출하기 2020.01.15 02:36:57
반응형

지난 번엔 얼굴 검출, 성별 검출에 대한 글을 작성했었습니다. 오늘은 물체 검출에 대한 파이썬 코드를 소개해드리도록 하겠습니다. 물체 검출을 객체 검출로 부르기도 합니다. 

 

오늘 예제 코드를 구현하시기 위해서는 opencv-python과 cvlib 라이브러리가 필요합니다. 라이브러리 설치 방법은 운영체제별로 인터넷에 잘 나와있습니다. 추천 검색어는 install opencv-python ubuntu, install opencv-python window10 등입니다. 여러분의 검색능력을 보여주세요.^^

 

라이브러리를 설치하셨다면 이제 다음 코드를 복사붙여넣기 하시고 한번 실행해보신 다음에 코드의 흐름을 살펴보시면 되겠습니다. 항상 처음부터 모든 것을 다 이해하실 필요는 없습니다. 큰 흐름 파악에서 점차 디테일로 나아가시는 것이 좋습니다. 코드가 아주 간결하죠? 

 

# import libraries
import cv2
import cvlib as cv
from cvlib.object_detection import draw_bbox

image_path = 'test1.JPG' # 여기에는 테스트할 이미지의 경로 및 이름을 넣어주시면 됩니다. 
im = cv2.imread(image_path) # 이미지 읽기


# object detection (물체 검출)
bbox, label, conf = cv.detect_common_objects(im)

print(bbox, label, conf)

im = draw_bbox(im, bbox, label, conf) 


cv2.imwrite('result.jpg', im) # 이미지 쓰기

 

cvlib의 detect_common_objects 함수는 COCODATASET에서 훈련된 YOLOv3 모델을 제공합니다. 80 종류의 물체를 검출해낼 수 있습니다. YOLO 시리즈는 물체 검출 분야에 있어서는 아주 유명한 알고리즘입니다. 이 알고리즘에 대해서도 기회가 되는대로 포스팅하도록 하겠습니다. 

 

그러면 이제 몇 개의 이미지를 가지고 테스트 한 결과를 보여드리겠습니다. 

 

주 피사체인 사람과 자전거를 잘 검출했죠? 

 

이미지 내 수많은 사람들을 거의 다 검출해냈습니다.

 

휴대폰과 책을 잘 검출해냈습니다. 펜이 검출되지 않은 것은 아쉽긴 하지만요.ㅎㅎ 

 

다음 시간에는 실시간으로 웹캠을 통해 촬영되는 영상에서 물체를 검출하는 코드에 대해서 다루도록 하겠습니다. 질문 및 지적은 항상 환영입니다. 댓글로 남겨주세요!

반응형
  • cv 우분투 환경에서 해야하나요?
  • wooJU GPU 환경에서만 실행이 가능한건가요?
  • 영상 소스를 바꿔서 한번 해보세요 항공, 우주 쪽에서는 합성개구레이더(Synthetic Aperture Radar, SAR)를 사용하여 영상을 획득하고 있습니다. SAR 영상을 입력을 받고 물체 인식 되도록 하는것도 재밌을것 같다는 생각이 듭니다.

    관심있으시면 아래 논문 찾아서 읽어보세요 ㅎㅎ
    OpenSARShip DB를 이용한 선박식별 성능 분석 pdf > 구글링하면 다운가능
    합성곱 인공 신경망을 적용한 SAR 영상 표적 인식 알고리즘 > DBpia.co.kr (카톡하시면 아디비번드림)

    수고욤
  • 영상 소스를 바꿔서 한번 해보세요 많이 바쁘신가봐요 연구도 안하시고..
    항상 좋은글들 잘 보고 있습니다.

    연구를 하든 안하든 게으름을 피우든 뭘하든 응원하겠습니다.
    장미꽃길만 걸으시면서 가시 많이 밟으시길 기원합니다.
  • 답글이 없네요 왜 윗댓글에 답글 안달아줘요? 차별해요? 차별을 금지하라!
    CV님 댓글에는 7분만에 답글 달아줘서 저분이 놀라실 정도로 빨리 달아주더니..
    윗님 글에는 세월아 네월아 다섯월아 여섯월아 일곱월아 여덟월아 아홉월아 열월아 하시네
    그렇게 계속 훌륭하게 블로그 운영하시길 바랍니다.
  • travis 이전에 cvlib 을 통해 얼굴 검출은 잘 하였는데 왜 이번 게시글은 그대로 따라해도
    plot 이 나오지 않고 콘솔창에
    [] [] [] 만 나올까요?? 해결이 안되네요;;
    • BlogIcon 비스카이비전 여러 물체들을 한번 시도해보세요, 사진 내에 훈련되지 않은 물체들만 있어서 그럴 수도 있을 것 같네요^^;
    • BlogIcon travis 헉 댓글이 엄청 빠르네요.
      근데 그러기엔 사람두 안되고 자전거도 인식 못하는데, 이게 추가로 뭐 설치를 해야한다거나 하는게 있나요? gender 게시글을 따라할때는 run 돌리니까 뭐 쭉 다운받던데, 객체 감지코드의 경우에는 그런게 없어서요.
      패키지는 다 다운 받은 상태입니다
    • BlogIcon 비스카이비전 결과 이미지로 저장된 것 확인해보셨나요?? 위 코드는 검출 결과 이미지를 새로 하나 저장하게 해놓은 것이라서요 ㅎㅎ
    • BlogIcon travis 네네 이미지 저장된것 확인 했었습니다. 인식 안되구 원본 그대로 저장되네요. 구글 검색을 해보니 yolov3.cfg , yolov3.weights 파일에 문제가 있을것이니 삭제하라는 문구가 있네요
      C:\Users\USER_NAME\.cvlib\object_detection\yolo\yolov3

      해당경로에 있다는데 저의 경우에는 .cvlib 폴더가 없단 말이죠. 좀더 검색해 봐야 겠습니다
    • BlogIcon 비스카이비전 혹시 모르니 가상환경 하나 다시 만들고 cvlib 다시 설치하고 해보세요 ㅎㅎ
    • BlogIcon travis 해결되었습니다.
      저의 경우에는
      C:\Users\USER_NAME\AppData\Roaming\SPB_Data\.cvlib\object_detection\yolo\yolov3
      에 있는 cfg, weights 파일들을 모두 삭제한후 다시 코드를 돌리니 문제가 해결되었습니다. 아마 처음 코드를 돌릴때 github에서 훈련 데이터들을 다운로드받는데 그 오래걸리는 시간을 기다리지 않고 중간에 정지를 해서 그런것 같습니다 ㅎㅎ
    • BlogIcon 비스카이비전 해결되셨다니 다행입니다 ㅎㅎ
  • 김판수 웹캠이나 YOLO 객채 검출시 어떤 특정 물체 검출시 알람이 울게 한다든지 할려면 어떻게?
    예) 자동차 검출시 소리가 나게 할려면, 예시 코드 부탁합니다. 아니면 구현 힌트라도 ~ ^^
    kps3029@gmail.com 부탁해요
    • BlogIcon 비스카이비전 특정 클래스 검출시에 특정 소리가 나게 해주시면 될 것 같습니다..ㅎㅎ 뭐 딕셔너리에 {클래스1: 소리 파일1, 클래스2: 소리 파일2, ... 이런 식으로 만들어 놓고 재생시키면 되지 않을까요??
  • 삼우 선박이 지나가는 걸 인식해서 이것이 선박이다 라고 인식하게 하고 싶은데 인식이 아예 안되거나 선박 창문만 인식이 되는데 혹시 어떻게 하는지 아시는가요 ㅜㅜ
    • BlogIcon 꼬장스카이비전 안타깝게도 따로 학습시켜야 하는 것 같습니다.

      https://bit.ly/2Tf3PqN

      여기 링크 들어가서 결과물 웹페이지 하나씩 들어가보시면 어떻게 학습시키는지 나올거에요.
  • BlogIcon 김재원 저희가 이번에 Object ditection 주제로 R&D 및 사업화 후 특허까지 생각하고 있습니다. 그런데 제가 알기론 YOLO 라이선스가 연구개발만을 위해서 개발된거라 사업화나 특허로는 사용하지 못하느 걸로 알고 있는데, 알고 계신지 궁금합니다!!
    • BlogIcon 비스카이비전  YOLO LICENSE
      Version 2, July 29 2016

      THIS SOFTWARE LICENSE IS PROVIDED "ALL CAPS" SO THAT YOU KNOW IT IS SUPER
      SERIOUS AND YOU DON'T MESS AROUND WITH COPYRIGHT LAW BECAUSE YOU WILL GET IN
      TROUBLE HERE ARE SOME OTHER BUZZWORDS COMMONLY IN THESE THINGS WARRANTIES
      LIABILITY CONTRACT TORT LIABLE CLAIMS RESTRICTION MERCHANTABILITY. NOW HERE'S
      THE REAL LICENSE:

      0. Darknet is public domain.
      1. Do whatever you want with it.
      2. Stop emailing me about it!

      이렇게 써있는 걸로 봐서는 마음껏 사용해도 되는 것 같은데 한번 확인해보세요^^

      https://github.com/pjreddie/darknet/blob/master/LICENSE
secret
-
+