오늘도 폭풍 실습!ㄴㄴ
HOG&SVM 필기체 숫자 인식
▪ 정중앙에 숫자를 쓰지 않을 경우?
▪ 학습 데이터 영상 정규화(Normalization)
• 학습 데이터 영상과 테스트 데이터 영상의 위치, 크기, 회전 등의 요소를 정규화 → 인식 성능 향상
▪ 숫자 영상의 무게 중심이 전체 영상 중앙이 되도록 위치 정규화
▪ 숫자 영상 위치 정규화
def norm_digit(img):
m = cv2.moments(img)
cx = m['m10'] / m['m00']
cy = m['m01'] / m['m00']
h, w = img.shape[:2]
aff = np.array([[1, 0, w/2 - cx], [0, 1, h/2 - cy]], dtype=np.float32)
dst = cv2.warpAffine(img, aff, (0, 0))
return dst
...
desc = []
for img in cells:
img = norm_digit(img)
desc.append(hog.compute(img))
...
test_image = cv2.resize(img, (20, 20), interpolation=cv2.INTER_AREA)
test_image = norm_digit(test_image)
test_desc = hog.compute(test_image)
...
k-평균 알고리즘
▪ k-평균(k-means) 알고리즘
• 주어진 데이터를 k개의 구역으로 나누는 군집화 알고리즘
▪ k: 사용자 지정 파라미터
▪ 동작 순서
1. 임의의 K개 중심을 선정
2. 모든 데이터에 대하여 가장 가까운 중심을 선택
3. 각 군집에 대해 중심을 다시 계산
4. 중심이 변경되면 2~3 과정을 반복
5. 그렇지 않으면 종료
▪ k-평균 알고리즘을 이용한 컬러 영상 분할
• 입력 영상의 각 픽셀 값을 색 공간 상의 한 점으로 표현 (e.g.) RGB 3차원 공간에서의 한 점, HS 2차원 공간에서의 한 점 • 색 공간에서 k-평균 알고리즘 수행
• 각 픽셀 값을 k개의 대표 색상으로 치환
▪ K-mean 군집화 함수
cv2.kmeans(data, K, bestLabels, criteria, attempts, flags, centers=None)
-> retval, bestLabels, centers
• data: 학습 데이터 행렬. numpy.ndarray. shape=(N, d), dtype=numpy.float32.
• K: 군집 개수
• bestLabels: 각 샘플의 군집 번호 행렬. numpy.ndarray. shape=(N, 1), dtype=np.int32.
• criteria: 종료 기준. (type, maxCount, epsilon) 튜플.
• attempts: 다른 초기 레이블을 이용해 반복 실행할 횟수.
• flags: 초기 중앙 설정 방법. cv2.KMEANS_RANDOM_CENTERS, cv2.KMEANS_PP_CENTERS, cv2.KMEANS_USE_INITIAL_LABELS 중 하나.
• centers: 군집 중심을 나타내는 행렬. np.ndarray. shape=(N, d), dtype=np.float32.
• retval: Compactness measure = σ𝑖 samples𝑖 − centerslabels𝑖 2
'etc > FastCampus 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 40 회차 (0) | 2020.11.27 |
---|---|
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 39 회차 (0) | 2020.11.26 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 37 회차 (0) | 2020.11.24 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 36 회차 (0) | 2020.11.23 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 35 회차 (0) | 2020.11.22 |