inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

OpenCV를 이용한 SSD Inference 실습 - 01

object detection 거리 감지를 위한 질문 (YOLO V5)

해결된 질문

3690

sungho kang

작성한 질문수 16

1

안녕하세요. 철민 강사님께 늘 좋은 강의 내용에 감사하면서 오늘도 질문을 드립니다.
object detection 에서 물체 간의 거리 감지를 위한 질문 (YOLO V5)을 드리려고 합니다. 강의에서 배운 내용을 바탕으로 입력 영상으로 실시간 객체간의 거리를 측정하는 기능을 개발하고 있는데 아래와 같이 중장비와 사람간의 바운딩 박스의 가운데 좌표를 읽어 거리를 측정하고 있는데 근본적이 오류가 있었습니다.

 

오류

2.jpg

python 머신러닝 딥러닝 keras tensorflow 컴퓨터-비전

답변 1

0

권 철민

안녕하십니까,

오, 대단한걸 하고 계시는 군요.

근데, 올려 주신 글과 이미지만 봐서는 뭐가 문제인지 정확히 모르겠습니다. 이미지의 거리 표시 m 글자가 잘 보이지 않습니다. 2m, 2.7m, 3.8m가 어디를 나타내고 왜 문제인지 좀 더 자세히 기술해 주시겠습니까?

감사합니다.

1

sungho kang

저 그림은 휠로더 중간에서 거리를 계산한 좌표입니다.

  • https://github.com/MehmetOKUYAR/Yolo-Object-Detection-and-Distance-Measurement-with-Zed-camera
    위 GitHub 프로젝트를 참조해서 객체간 거리를 탐지하는데 문제는 아래와 같습니다.

  • 사진 에서 바운딩 박스의 하단에 좌표를 잡아서 객체간 거리를 탐지하려고 하는데
    이 거리가 바운딩 박스의 하단의 기준으로 하기 때문에 1번 사람 2번 사람 3번 사람의 거리가 가치가 많이 납니다. 즉 3번 사람은 실제거리가 3미터인데 4미터로 나오는 오류가 있는것이죠


    그림.1 현재 문제 (1번과 0번을 거리를 기준으로 했을때 2번 3번이 0번과 실제거리와 차이가 남)

image

그림.2 아래 그림과 같이 1 2 3번의 객체의 위치마다 좌표의 기준점을 다르게 줄 수 있는 방법이 있는지 질문있습니다.

image

1

권 철민

제 생각엔 객체별로 기준점을 다르게 주어도 정확한 거리 계산은 어려울 수 있겠지만,

요청하신대로 객체별로 기준점을 다르게 주려면,,

개별 오브젝트별로 거리 계산의 기준의 되는 오브젝트의 기준 좌표를 구하는 함수를 하나 만드셔야 할 것 같습니다.

예를 들어 아래 함수는 개별 오브젝트(예를 들어 사람)의 좌표, 그리고 기준 오브젝트(여기서는 휠로더)의 좌표를 dictionary 형태 [x1, y1, x2, y2]로 입력 받습니다. x1, y1은 좌상단 좌표, x2, y2는 우하단 좌표입니다.

def get_referenced_coordinate(개별 오브젝트 dict, 기준 오브젝트 dict)

만약 개별 오브젝트 x1 좌표가 기준 오브젝트 x1 좌표 보다 작다면 기준 좌표를 x의 경우는 기준 오브젝트의 x1좌표로, y좌표의 경우 (y1 + y2)/2 로 정해서 반환합니다. 여기서 x나 y 좌표는 좀더 보정할 필요는 있습니다.

만약 개별 오브젝트 x2 좌표가 기준 오브젝트 x2 좌표 보다 크다면 기준 좌표를 x의 경우는 기준 오브젝트 x2로 잡고, y좌표의 경우는 (y1 + y2)/2 로 정해서 반환합니다.

마찬가지로 개별 오브젝트 y1 좌표가 기준 오브텍트 y1좌표보다 크거나, 또는 개별 오브텍트 y2 좌표가 기준 오브텍트 y2 좌표 보다 클경우 위의 로직과 유사하게 좌표를 정하면 될 것 같습니다.

직접 코드를 작성하시다 보면 보다 다양한 방법으로 보정을 적용해서 수행하실 수 있으실 것 같습니다.

다만 객체간의 거리 계산은 instance segmentation이 보다 더 적절할 것으로 생각됩니다. 개별 오브젝트의 세그먼트 정보를 기반으로 가로/세로 중심점과 기준 오브젝트 세그먼트의 가로/세로 중심점간의 거리 차이를 구하면 좋을 것 같습니다. GPU 연산이 어느정도나 많이 더 소모되는지 모르겠습니다만, Semantic segmentation 대비 instance segmentation이 GPU 연산이 어려워질정도로 더 많은 연산이 필요하지는 않다는게 제 개인적인 의견입니다.

 

 

강의 환경설정 질문

0

43

2

Custom Dataset에서의 polygon 정보 관련

0

86

3

cvat.ai 보안 수준이 궁금합니다

0

81

2

캐클 nucleus 챌린지 runpod 실습 코드 에러 질문드립니다.

0

98

3

추론 결과의 Precision(또는 mAP) 평가 방법

0

86

2

mmdetection mask rcnn inferenct 실습 시 runpod 템플릿 관해서 질문드립니다.

0

61

2

runpod에서 google drive 연결 시 오류 발생

0

110

2

로드맵 선택

0

68

1

mmcv

0

60

2

Anchor box의 Positive 처리 위치

0

63

2

해당 강의 runpod 적용 후 에러 제보드립니다

0

87

2

run pod credit 관련 제보

0

101

2

mmdetection 2.x과 3.x 호환 관련 표기

0

79

2

mm_faster_rcnn_train_kitti.ipynb 실행 오류

0

101

3

질문 드립니다.

0

83

3

mm_faster_rcnn_train_coco_bccd 실행 오류 질문드립니다.

0

81

1

강사님께 수정을 제안드리고 싶은 것이 있습니다.

0

96

1

google automl efficientdet 다운로드 및 설치 오류

0

76

1

이상 탐지에 사용할 비전 기술 조언 부탁드립니다.

0

104

2

OpenCV 관련 질문드립니다.

0

74

2

mmcv 설치관련해서 문의드려요

0

335

3

강의 구성 관련해서 질문이 있습니다

1

139

2

모델 변환 성능 질문드립니다.

0

123

1

NMS 로직 문의 드려요

0

116

2