AI/강아지 객체 분류 알고리즘

강아지 분류 기준 세우기

모딩 2020. 7. 14. 13:28
반응형

 

강아지 개체를 구분하기위해 모색, 종, 얼굴 좌표를 기준으로 데이터셋을 구성하였다.


Color Pixel 추출

색을 이용해 검색 기능을 구현하기 위해서는 데이터 셋의 R, G, B 값이 필요하다. 이를 위해 OpenCV를 활용해 각각의 이미지가 가장 큰 비중을 차지하고 있는 색의 R, G, B 값을 추출하였다.

 

- 이미지 전체 색상 클러스터링 

 

배경 색을 제외하기 위해 Grad Cam을 이용해 객체를 인식 한 뒤 객체의 컬러를 추출할 계획이었지만 대부분의 사진이 강아지 중심으로 나왔으며 실제 색을 추출해주는 코드를 돌려도 배경의 컬러 값이 많은 비중을 차지하지 않았다. 따라서 검색을 위한 서비스 구현이기 때문에 시간을 많이 차지하는 딥러닝을 제외하고 OpenCV만을 사용해도 될 것 이라는 판단을 내렸다위의 이미지는 왼쪽의 사진이 가지고 있는 색을 bar 형식으로 도출한 결과이다. 배경에 대한 색이 많은 비중을 차지하지 않았다.

 

추출된 결과를 바탕으로 이미지에서 가장 큰 비중을 차지하는 RGB 픽셀값을 matrix로 구성하여 dataset으로 구성해보았다.

 

 

하지만, 아래와 같이 색상을 기준으로 하기에는 여러가지 어려움이 있었다. 예를 들어 첫째, 사진에 컬러프레임이 섞이거나 조도의 영향으로 원본 이미지가 왜곡될 가능성이 있다. 둘째, 배경 색상이 이미지의 색보다 더 지배적인 경우 모델이 개체의 모색 대신 배경의 색으로 구별할 가능성이 있다. 

 

- 문제 (1)

- 문제 (2)

 

컬러프레임 또는 조도에 대한 해결책은 아직 생각나지 않았지만, 배경색이 더 큰 분포를 차지하는 경우에 대한 해결책은 이미지를 지역화해서 원하는 이미지의 공간에 해당하는 마스크를 씌우면 될 것이라고 생각했다. CAM을 사용해서 강아지가 있는 지역만 추출하여 학습을 진행해보면 더 나은 결과가 있을 것이라고 예상되었다. 

 

 

- 문제 (2) 에 대한 해결책

 

 

Dog breed Classification

케글에서 120가지 강아지 종의 20580개의 이미지를 사용하였고, 256*256의 사이즈로 이미지를 맞춰주어 학습을 진행하였다.  

학습 결과 아래와 같은 분포도로 강아지 종을 분류하였다. 리트리버는 비교적 뚜렷한 특징을 갖고 있어서 50% 이상의 정확도를 보였지만, 유기견의 경우 대부분 믹스종이기 때문에 같은 개체이더라도 다른 사진을 사용하면 결과값이 다르게 추출되었다.  

 

프로젝트의 목표는 유기견을 대상으로 검색 서비스를 구축하는 것을 목표로 했기 때문에, 종을 기준으로 하는 접근법은 어려움이 있었다. 또한, 이 확률값을 개체 각각의 특성값으로 구성하여 보기에는 결과값이 일정하지 않았기 때문에 한계가 있었다. 

 

Dog Face Landmark

 

강아지 얼굴에 6개의 랜드마크를 설정하고 각각의 좌표값을 토대로 개체 dataset을 구축해보았다. 먼저 이미지에서 강아지가 있는 위치를 잡은 뒤 그 공간안에서 양쪽 귀의 중앙(x0, y0) - 오른쪽 귀(x1, y1)  - 오른쪽 눈(x2, y2)  - 코(x3, y3)  - 왼쪽 눈(x4, y4)  - 왼쪽 귀(x5, y5)  의 순서대로 좌표를 찍어 list로 반환했다. 

zzo.img

 

동일한 강아지의 다른 사진으로 좌표를 생성해보았다.

zzo2.img

 

 

1. zzo.img의 랜드마크 좌표

551 176 692 246 664 477 565 696 389 207 428 442

 

2. zzo2.img의 랜드마크 좌표

130 43 146 47 145 75 133 101 114 45 112 75

 

반응형