YOLOv5 질문드립니다 (바운딩박스 캡처 가능한가요?)
안녕하세요 인공지능 공부중인 학생입니다.
원래 직접 모델을 만들어서 분류문제를 해결하다가
YOLO라는 모델을 알게되었고, YOLOv5가 현재 사물인식에 엄청난 성능을 보인다고해서
직접 데이터셋을 만들고 학습까지 진행해보았습니다.
이제 input 사진을 넣어서 제가 원하는 물체에 바운딩박스를 치는것 까지는 됐는데
제가 필요한 기능은 그 물체만 따로 캡처해서 이미지로 저장하는 것 입니다. (바운딩박스영역 캡처)
그렇기 위해서 그 바운딩 박스의 좌표를 알아야 할 것 같은데 구글링해도 자료가 부족해서 찾기힘드네요
YOLO 능력자분들 혹시 바운딩 박스의 좌표를 알아내거나 인식한 물체를 캡처할 수 있는 방법이 있을까요??
안녕하세요.
말씀하신 Task는 주로 딥러닝 분야에서 객체 검출(Object Detection)이라고 하는 분야입니다.
이미 아시고 계시겠지만 해당 Task의 목적은 어떤 객체(사물, Class)가 이미지/영상 내에서 어느 부분에 위치하는가(Localization)을 의미합니다.
즉 YOLO에서는 이미지를 입력하고 여기에 어떠한 객체가 어느 위치에 존재하는지 (바운딩 박스 정보)를 Label로 활용하여 모델을 학습시키고, 마찬가지로 추론 시에도 이미지를 입력하게 되면, 출력으로 이미지내 객체의 위치를 의미하는 bounding box 정보(x, y, w, h)를 출력하게 됩니다.
해당부분을 캡처하시기 위해서는
모델의 출력으로 나오는 4가지 값(클래스정보-객체 정보 포함 5가지 값 중) 이미지내 좌표에 해당하는 x,y, w, h 정보를 토대로
원본 이미지에서 해당부분을 빈배열로 복사하여 저장하시면 될 것 같습니다.
사용하고 계신 모델의 코드를 보아야 직접적인 설명을 드릴 수 있을 것 같으나,
힌트를 드리자면
1. 해당 모델의 출력정보를 print 해볼것
(한 이미지에 여러 객체가 존재 할 경우 각각의 객체들에 대한 좌표 정보들이 2차원 행렬 형태로 출력 될 것입니다.)2. 해당 모델의 출력정보를 OpenCV/PIL을 이용해서 box로 그려 볼 것
3. OpenCV/PIL을 활용하여 ROI(Region of Interest) 영역을 캡처, 혹은 복사하는 방법을 알아 볼 것
4. 알고리즘
while:
박스의 정보 =yolo 아웃풋
for 박스 in 박스 여러개(한 이미지에 여러개의 객체가 존재 할 가능성):
이미지 내에서 해당 영역 복사 = 힌트 3번에서 ROI 영역으로 해당 영역을 복사하는 방법
복사된 이미지를 저장하기
위와같은 방법으로 접근하시면 좋을 것 같습니다.