본문 바로가기

컴퓨터/Backend

[졸업 프로젝트]_2. 알고리즘 설계와 구현(1차 알고리즘)

알고리즘 설계는 크게 1차와 2차로 나누어 설계, 구현하였는데,

1차 알고리즘은 강아지의 품종별 평균 무게와 체고값을 이용하여 품종을 가려내는 알고리즘으로 

우선적으로, 품종별 강아지의 무게와 체고값을 분류하여 정리하는 작업이 필요했다.

 

따라서, 세계애견연맹(FCI)의 견종 표준을 참고하여 우리가 사용할 64종 강아지의 무게와 체고값을 분류하여 데이터베이스를 생성하였다. 다뤄야하는 데이터의 크기가 크지 않았기 때문에 엑셀파일에 각각 수컷 품종별 데이터와, 암컷 품종별 데이터를 정리한 후 DB Browser for SQLite를 이용하여 바로 데이터베이스를 생성하였다.

(학교 수업에서는 SQLite를 다뤘었고 이때는 최대한 배운 것을 많이 활용하고자 하는 생각이었기 때문에 SQLite를 다룰 수 있는 DB Browser를 사용하였다.)

 

 

ex) DB 생성 예

DB는 무게값과 체고값의 범위에 따라 해당 품종을 추출해내야 하기 때문에 Breed를 기본키로 하고 위와 같은 칼럼을 가지는 암컷 품종 테이블과 수컷 품종 테이블을 생성하였다.

 

DB 생성 이후에는 python을 이용하여 DB와 연결한 후 

무게와 체고 값을 입력하여 DB에서 해당 품종을 가져오기 위한 테스트를 진행하였다.

 

초기 DB연동 시에는 단순히 DB쿼리 값을 조회하는 부분을 테스트하였고, 이후 Flask를 이용한 서버 작업을 하며, 조금씩 수정하였다.

 

사용자로부터 유기견의 무게와 체고값을 입력받아 우선적으로 범위에 해당하는 품종을 가려내는 알고리즘이었는데,

여기서 한가지 문제점을 발견하였다.

유기견의 경우 정상체중일 가능성이 적기 때문에 그대로 무게를 입력한다면 결과값에 상당한 오차가 생길 수 있다는 것이다.

그래서 조사 끝에 강아지의 '신체충실지수' 'BCS'를 보조 지표로 활용하기로 했다.

 

'신체 충실지수'반려동물의 체중 정도를 육안으로 확인할 수 있는 차트로 5단계, 9단계의 두가지 방법이 있다. 

본 프로젝트에서는 5단계 차트를 사용하였다.

'BCS' Body Condition Score의 약자로 비만도 판정 지표이다.

위 보조지표를 활용하면 쉽게 강아지의 몸무게 정도를 파악할 수 있으므로, 이를 활용하여 현재 강아지의 무게를 입력받은 후 정상체중으로 환산될 수 있게끔 하였다.

 

 

☞ 알고리즘 구현

 

DB연결 부분
사용자로부터 유기견 성별을 입력받는 부분

 

사용자로부터 유기견의 체고값을 입력받는 부분
BCS 보조 지표를 활용하여 사용자로부터 받은 유기견의 무게값을 정상 체중으로 환산해주는 부분
DB를연결한 후 쿼리하여 해당 품종을 추출해내는 부분
ex) 테스트 결과 값 예

 

1차 알고리즘을 통해 산출된 결과값은 이후 Teachable Machine으로 전달되어 2차 알고리즘을 거친 후 최종 결과값을 도출하게 된다.

 

따라서, 두 알고리즘의 연동을 위해 Teachable Machine의 활용방법을 익혀야 했는데,

이 부분부터는 다음 포스팅에서 다룰 예정이다.

 

 

728x90