일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SQL
- 데이터베이스
- 상속
- 정보처리기사실기
- html/css
- 중학1-1
- 디버깅
- 혼공머신
- 정보처리기사필기
- JDBC
- rnn
- 중학수학
- 개발일기
- JSP/Servlet
- 자바
- 딥러닝
- 데이터분석
- CSS
- 티스토리챌린지
- 자바스크립트
- 머신러닝
- 자바스크립트심화
- 컴퓨터구조
- 오블완
- 컴퓨터비전
- JSP
- 자바 실습
- c언어
- 파이썬
- 연습문제
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
지역 특징 8 - 연습문제 풀기 4 : 문제 7~8번 본문
남은 두 문제도 마저 풀어보려고 한다. 8번 문제는 조금 어려워보이지만 한번 도전해볼 것이다.
연습문제 풀기 네번째
문제 7번
알고리즘 5-2에서는 임계값에 따라 FP를 줄이려면 임계값 t, d, e, 각각을 늘려야 하는지 줄여야 하는지 쓰고 그 이유를 설명하시오.
알고리즘 5-2
알고리즘 5-2는 매칭된 점 쌍의 집합을 입력으로 받아 최적의 호모그래피 행렬을 추정하기 위해 RANSAC(Random Sample Consensus) 알고리즘을 적용하는 과정이다. 호모그래피 행렬은 두 이미지 간의 대응점 쌍을 통해 변환 관계를 나타내며, 이 알고리즘을 사용하면 외란점(outlier)을 걸러내어 최적의 변환 행렬을 구할 수 있다.
알고리즘 설명
- 변수 초기화 (h=[]):
- 최적의 호모그래피 행렬을 저장할 리스트 h를 빈 리스트로 초기화한다.
- 반복문 시작 (for j=1 to m):
- 주어진 m 횟수만큼 반복하며 최적의 호모그래피 행렬을 찾기 위해 RANSAC 과정을 수행한다.
- 임의의 4쌍 점 선택 및 호모그래피 행렬 추정:
- 매칭된 점 쌍 중에서 임의로 4개의 점 쌍을 선택하여, 이 점들을 기반으로 호모그래피 행렬 HH를 추정한다.
- inlier 집합 초기화:
- 선택한 네 점 쌍은 기본적으로 inlier 집합에 포함시킨다.
5-6. 다른 점 쌍에 대해 오차 계산 및 inlier에 추가:
- 선택한 4개의 점을 제외한 나머지 점 쌍에 대해, 추정된 호모그래피 행렬 HH을 적용해 오차 pp를 계산한다.
- 이 오차가 임계값 tt보다 작으면 해당 점 쌍을 inlier 집합에 추가한다.
- inlier 수 검사:
- 현재 inlier 집합에 포함된 점 쌍의 수가 임계값 dd 이상일 경우, inlier가 충분하다고 판단한다.
- inlier 집합으로 호모그래피 행렬 재추정:
- inlier 집합에 포함된 점들을 기반으로 다시 호모그래피 행렬 HH를 추정한다.
- 오차 검사 후 최적의 행렬 업데이트:
- 새로 추정된 HH의 오차가 이전에 저장된 행렬의 오차보다 작다면, 최적의 행렬로 갱신한다.
- 최적의 호모그래피 행렬 선택:
- 모든 반복이 끝난 후, 최종적으로 가장 좋은 품질의 호모그래피 행렬을 H^\hat{H}로 선택한다.
요약
이 알고리즘은 RANSAC을 사용하여 최적의 호모그래피 행렬을 추정하며, 외란점(outlier)을 걸러내어 일치하는 점 쌍만을 사용해 안정적인 변환 행렬을 계산하도록 한다.
문제 풀기
알고리즘 5-2에서 False Positive(FP)를 줄이기 위해 임계값 , , 각각을 어떻게 조정해야 하는지 설명한다.
- 임계값 t (오차 임계값)
- 줄여야 한다.
- 이유 : t는 오차 허용 범위를 나타내므로, 이를 줄이면 더 작은 오차를 가지는 점만 inlier로 간주하게 된다. 이는 실제로 변환에 맞지 않는 외란점(outlier)이 inlier로 잘못 포함되는 것을 방지하여 FP를 줄이는 데 도움이 된다.
- 임계값 d (필요한 최소 inlier 개수)
- 늘려야 한다.
- 이유 : 는 호모그래피 행렬을 유효하게 판단하는 데 필요한 inlier의 최소 개수이다. d를 늘리면 더 많은 inlier가 포함된 경우에만 행렬을 유효한 것으로 간주하게 되어, 외란점이 포함된 잘못된 호모그래피 행렬이 선택되는 가능성을 줄일 수 있다.
- 임계값 ee (오차 평균)
- 줄여야 한다.
- 이유 : 는 호모그래피 행렬 H의 품질을 평가하는 데 사용되는 평균 오차 임계값이다. 를 줄이면 오차가 작은, 즉 변환 정확도가 높은 행렬만 선택되기 때문에 외란점을 포함한 잘못된 행렬이 선택되는 가능성이 줄어들어 FP를 감소시킬 수 있다.
요약
- 임계값 : 줄여야 한다 (작은 오차만 허용)
- 임계값 d : 늘려야 한다 (더 많은 inlier 필요)
- 임계값 : 줄여야 한다 (평균 오차가 낮은 행렬만 허용)
이렇게 조정하면 외란점이 포함된 잘못된 호모그래피 행렬이 선택될 가능성이 줄어들어, FP를 감소시킬 수 있다.
문제 8번
아래 제시한 모델 영상과 장면 영상을 참고하여 프로그램 5-4를 간판 인식 또는 교통 표지판 인식할 수 있도록 수정하시오.
위의 프로그램은 두 이미지 간의 SIFT 기반 특징점을 찾아 매칭하고, RANSAC을 사용하여 호모그래피 행렬을 추정한 후 모델 영상의 위치를 장면 영상에서 찾는 코드이다.
이 프로그램은 두 개의 입력 이미지(모델 영상과 장면 영상)를 사용하여 모델 영상에서 찾은 특징점을 장면 영상에서 찾도록 설계된 것이다.
따라서 새로운 장면 영상 이미지에서 간판이나 표지판이 있는 위치를 탐지하려면, 원래 코드에서 사용하는 'mot_color70.jpg'와 'mot_color83.jpg' 대신 모델 이미지(간판이나 표지판 이미지)와 장면 이미지(간판이나 표지판이 포함된 전체 이미지)를 입력으로 준비해야 한다.
코드 오류가 떠서 몇 가지를 수정했다. 이전의 버스 이미지에서 모델과 장면 이미지로만 교체했더니 문제가 발생한 거였다.
- Cropping Issue : img1 = cv.imread('logo.png')[190:350, 440:560] 라인에서 모델 이미지에 대해 크롭을 하고 있다. 그러나 logo.png 이미지에서는 특정 영역을 크롭하지 말고, 전체 이미지를 사용해 보자.
- 특정 변수가 None인지 확인 필요 : 이미지가 정상적으로 불러와졌는지 확인해보자. cv.imread()가 파일 경로를 제대로 읽지 못한 경우 None을 반환할 수 있다.
- 호모그래피 계산을 위한 충분한 매칭점 : 호모그래피를 계산할 때 충분한 매칭 포인트가 필요하다. 좋은 매칭 포인트가 충분하지 않을 경우 호모그래피가 계산되지 않아 오류가 발생할 수 있다.
하지만 여전히 문제가 발생했다.
임계값도 조정하고 여러 코드를 수정했지만 잘 되지 않았다. 이미지는 이걸 사용했다.
학습을 마치고
비록 8번 문제는 어려워서 풀지 못했지만 그래도 오늘 아침과 오후에 연습문제를 풀면서 정말 많은 것들을 배울 수 있었다. 이번 단원에서는 3문제를 해결하지 못했다. 하지만 잘 풀었던 문제도 생각해보면 진짜로 제대로 아는 건 아니었다.
아쉬움이 남지만 5장 학습은 여기서 마치기로 했다.
'인공지능 > 컴퓨터 비전' 카테고리의 다른 글
비전 에이전트 2 - [비전 에이전트 1] 오림 (0) | 2024.11.12 |
---|---|
비전 에이전트 1 - 지능 에이전트로서 비전 에이전트와 PyQt를 이용한 사용자 인터페이스 (0) | 2024.11.11 |
지역 특징 7 - 연습문제 풀기 3 : 문제 6번 (1) | 2024.11.11 |
지역 특징 6 - 연습문제 풀기 2 : 문제 3~5번 (0) | 2024.11.11 |
지역 특징 5 - 연습문제 풀기 1 : 문제 1~2번 (0) | 2024.11.11 |