DOI QR코드

DOI QR Code

Pet Disease Prediction Service and Integrated Management Application

반려동물 질병예측서비스 및 통합관리 어플리케이션

  • 표기두 (한국공학대학교 컴퓨터공학과) ;
  • 이동영 (한국공학대학교 컴퓨터공학과) ;
  • 정원세 (한국공학대학교 컴퓨터공학과) ;
  • 권오준 (한국공학대학교 컴퓨터공학과) ;
  • 한경숙 (한국공학대학교 컴퓨터공학과)
  • Received : 2023.10.06
  • Accepted : 2023.12.08
  • Published : 2023.12.31

Abstract

In this paper, we developed a 'comprehensive pet management application' that combines pet AI diagnosis, animal hospital search, smart household accounts, and community functions. The application can solve the inconvenience of users who have to use multiple functions as separate applications, and can easily use pet AI diagnosis services through photos, provides animal hospital information using crawling, finds nearby animal hospitals, and supports smart households that can scan receipts using OCR text extraction techniques. By using this application, information necessary for raising pets such as health and consumption details of pets can be managed in one system.

본 논문에서는 반려동물 AI 진단, 동물병원 찾기, 스마트 가계부, 커뮤니티 기능을 하나로 모은 '반려동물 종합관리 어플리케이션'을 개발하였다. 해당 어플리케이션은 여러 기능을 각각의 다른 어플리케이션으로 사용해야 하는 사용자의 불편함을 해소할 수 있으며, 사진을 통해 쉽게 반려동물 AI 진단 서비스를 이용할 수 있고, 크롤링을 이용한 동물병원 정보 제공과 주변의 동물병원 찾기, OCR 텍스트 추출 기법으로 영수증을 스캔할 수 있는 스마트 가계부, 어플리케이션 사용자 간의 커뮤니티 기능을 지원한다. 본 어플리케이션을 사용함으로써 반려동물의 건강, 소비내역 등 양육에 필요한 정보를 하나의 시스템으로 관리할 수 있게 된다.

Keywords

Ⅰ. 서론

최근 1인 가구와 딩크족의 증가 등 인구 구조의 변화에 따라 반려동물 양육가구가 증가하고 있다.[1] 반려동물 양육 가구가 증가함에 따라 반려동물 양육에 어려움을 겪는 양육자들 또한 증가하고 있는데, 특히 반려동물의 건강 악화 시 대처와 양육 비용 관리에 대해 어려움을 겪고 있다.

본 논문에서는 반려동물 관리를 도울 수 있도록 AI 진단, 동물병원 찾기, 스마트 가계부, 커뮤니티의 기능을 갖춘 스마트폰 앱을 개발하였다. 공공 데이터를 학습시킨 AI 알고리즘을 통해 반려동물의 국소 부위를 찍은 사진으로 눈병과 피부병의 종류를 진단할 수 있는 AI 진단 서비스를 개발하였다. 웹 크롤링 기술로 사용자에게 동물병원의 자세한 정보를 제공하고, AI 진단을 통해 진단된 질병이 반려동물에게 위급한 질병을 나타낸다면 GPS를 이용해 주변 동물병원을 빠르게 찾을 수 있도록 동물병원 찾기 기능을 개발하였다. 동물병원의 병원비와 동물을 양육하는데 들어가는 여러 비용을 수기로 가계부에 적는 번거로움을 OCR 텍스트 추출 기법을 이용한 영수증 스캔 기능으로 해결하였다. 또한, 양육자 간에 서로 정보를 교환하거나 병원, 제품 등의 후기를 적을 수 있는 커뮤니티 기능을 개발하였다.

Ⅱ. 관련 연구

1. 2021년 반려동물 양육현황

KB경영연구소의 반려동물 보고서[2]를 통해 반려동물과 양육자에 대한 여러 통계를 확인하였으며, 그 중 양육시 어려운 점과 양육자에게 필요한 기능에 대해 식별하였다. 그림 1은 2018년과 2021년의 반려동물 양육 및 양육 희망 현황을 비교한 자료이다. 해당 자료에 따르면, 반려동물 양육 비율이 4.5% 증가하였으며, 1~2년 내 양육 희망자도 0.7% 증가하였음을 볼 수 있다. 그림 2는 양육 시 애로사항으로 양육자 1000명에 대한 설문조사 결과이다. 반려동물 양육 시의 애로 사항으로 건강 악화시 대처가 어렵다는 점이 1위로 확인되었다. 위의 그림 1, 그림 2를 통해 현재 반려동물에 대한 양육자가 점점 증가할 것으로 보이며, 양육자들이 필요로 하는 기능을 제공하는 어플리케이션을 개발하기로 하였다.

OTNBBE_2023_v23n6_133_f0001.png 이미지

그림 1. 반려동물 양육 현황 및 향후 양육의향(2021)

Fig. 1. Status of pet rearing and future intention to raise.

OTNBBE_2023_v23n6_133_f0002.png 이미지

그림 2. 반려동물 양육시 애로사항

Fig. 2. Difficulties in raising pet.

2. 기존 유사 앱과의 비교

표 1은 유사 어플리케이션과 반려동물 통합관리 앱의 차이점에 대해 비교한 자료이다. AI 진단과 관련된 유사 앱으로는 반려동물의 진단 기능을 보유한 티티케어[3]가 있다. 해당 앱 또한 반려동물의 국소 부위를 촬영하여 AI 진단을 통해 질병을 확인하는 기능을 가지고 있으며, 병원 예약 서비스를 제공하고 있다. AI 진단의 경우, 카메라의 직접촬영만 허용한다는 점에서 불편함이 존재한다. 또한 토스[4], 네이버 가계부[5] 등의 앱의 경우 카드 및 통장을 등록하여 결제 내용을 확인하고 이를 시각화하는 기능을 제공하고 있다. 이와 달리 본 앱은 결제수단의 등록이 없기 때문에 개인정보 노출에 대한 우려가 없다.

표 1. 유사 어플리케이션과의 비교

Table 1. Comparision with similar applications.

OTNBBE_2023_v23n6_133_t0001.png 이미지

Ⅲ. 세부설계 및 구현

1. 개발환경

본 앱은 Flutter 어플리케이션 프레임워크를 사용하며 Dart와 python으로 언어로 개발되었다. 테스트에 사용된 단말기는 Android Pixel 3a API 30, iPhone 14 Pro Max - iOS 16.4를 사용하였다.

2. 시스템 구성

그림 3은 본 어플리케이션의 시스템 구성을 보여준다. 기본적인 동작방식은 flutter를 통해 Android와 iOS 운영체제를 모두 지원하며, 서버-클라이언트 방식으로 구성된다. 자가진단의 기능의 경우, ResNet34 딥러닝 학습 모델을 이용하며 이미지를 Ngrok 서버를 통해 전송, 비교한다. 이외에 필요한 모바일 벡엔드는 firebase를 사용해 사용자 유저정보, 가계부 데이터, 게시판 데이터를 관리한다.

OTNBBE_2023_v23n6_133_f0003.png 이미지

그림 3. 시스템 구성

Fig. 3. System configuration.

3. 핵심 알고리즘

가. 공공데이터를 활용한 질병 진단 AI모델 구현

모델 학습에 필요한 공공데이터는 과학기술정보통신부에서 제공하는 반려동물 피부질환, 안구질환 데이터[6]를 사용하였다. 진단 프로세스는 양육자가 앱을 통해 사진을 선택하면 Ngrok 서버로 전송하여 서버에서 진단을 하도록 설계하였다.

우선 해당 공공데이터에서 국소 부위 사진 및 질병 감염 유무가 담긴 데이터를 활용한다. 해당 데이터의 총 수는 안구질환 30만 개, 피부질환 50만 개이며, 그 중 현미경 등 스마트폰이 아닌 촬영 장비로 촬영되었거나, 일부 부정확한 질병 데이터에 대해서 제외하면 안구질환 약 20만 개, 피부질환 약 47만 개를 사용할 수 있다.

해당 데이터를 각각의 질병으로 나누면 데이터의 수가 방대하지 않기 때문에 전이학습을 통해 모델을 학습시켰다. 전이학습[7]은 모델의 수가 적을 때 효과적으로 모델을 학습시킬 수 있는 방법이다. 여러 전이학습 모델 중 파이썬에서 사용 가능한 pytorch 기반의 ResNet34[8]을 통해 전이학습을 진행하였다.

이미지와 비교하여 질병 일치 확률을 계산하기 위해 확률출력값을 정규화하고 출력값을 유효한 확률 범위 내에 산출하였다. 또한 여러 클래스(질병)을 다루기 때문에 모델의 마지막 레이어에 모델의 원시 출력을 여러 클래스에 대한 확률 분포로 변환해 모든 클래스에 대한 확률의 합이 1이 되도록 하였다. 사후 처리는 계산 결과를 백분율 표현으로 변환하였다. 사진은 카메라로 촬영을 하거나, 이미 촬영된 사진을 갤러리에서 선택하여 입력할 수 있으며, 선택된 사진을 서버로 전송한다. 이후 해당 사진을 정규화하고 학습된 모델에 입력하여 각 질병에 대한 위험도를 판단할 수 있다. 사진 입력 후 해당 질병에 대한 확률을 계산하고, 데이터를 양육자에게 다시 전송하여 위험한 확률 순으로 질병 이름과 얼마나 위험한 지에 대한 확률 데이터를 출력하게 된다.

나. 웹 크롤링을 활용한 주변 병원 정보 제공

웹 상에 존재하는 데이터를 앱에 보여주기 위해 웹 크롤링[9] 기법을 사용한다. 웹 스크래핑[10] 이라고도 불리는 이 기법은 웹 상에 있는 사진, 링크 등을 JSON 형태로 수집하는 것을 의미한다. 웹 스크래핑 작업에는 파이썬에서 많이 쓰이는 라이브러리인 셀리니움(Selenium)[11]을 주로 사용한다. 또한 Jupyter notebook을 사용하여 셀레니움 내부 메소드를 실행한다.

그림 4는 데이터 크롤링 알고리즘을 보여준다. 크롤링에 사용한 메소드는 크게 5개로 구성되어있다. 첫 번째 메소드는 ‘crawler.get’이다. 이 메소드는 크롤링을 시작할 때 접속할 웹을 지정한다. 다음 메소드는 ‘crawler.find_element’이다. 이 메소드는 웹의 첫 페이지에 존재하는 버튼을 클릭하거나 검색창을 클릭하는 데 사용하는 메소드이다. 만약 검색창을 클릭한 상태라면 다음 순서는 검색창에 원하는 키워드를 입력하는 것이다. 검색창에 키워드를 입력하기 위해서는 python selenium에서는 ‘send_keys(“keyword”)’를 사용한다.

OTNBBE_2023_v23n6_133_f0004.png 이미지

그림 4. 데이터 크롤링 알고리즘

Fig. 4. Data crawling algorithms.

검색을 마쳤다면 웹 상에는 여러 데이터가 존재할 것이다. 이제 이 데이터들을 저장해야 하는데 여기서 사용할 메소드는 ‘DataFrame’이다. 이 메소드는 크롤링으로 수집한 데이터를 저장하고 그 데이터를 화면에 출력하기 위해서 사용한다. 화면에 데이터가 나왔다면 이 데이터들을 csv 파일로 변환하기 위해 ‘df.to_csv’ 메소드를 사용한다.

저장한 csv 파일은 JSON 형식으로 변환되어 플러터에서 JSON 객체의 구문분석 후 리스트 뷰로 화면에 보여준다. 이 앱의 기능 중 하나는 사용자의 위치 정보를 파악해 그 주변에 있는 병원들을 알려주는 것이다. 사용자의 현재 위치를 확인하고 해당 위치의 주소 정보는 네이버 지도 API를 통해 받아온다. 그리고 그 주소 정보는 앱 내 검색창에 자동입력되고 화면은 주변에 있는 병원들을 리스트로 보여준다. 리스트는 해당 병원의 간단한 정보를 제공하며 리스트 하단에는 직접 전화를 걸 수 있는 버튼과 해당 병원의 네이버 지도 사이트로 이동이 가능한 버튼이 있다. 또한 사용자가 자주 가는 병원이 있을 수 있기 때문에 즐겨찾기 기능을 추가하고, 해당 기능은 플러터 내의 Provider 패키지를 이용하여 즐겨찾기에 대한 상태 관리를 한다.

다. OCR 기법을 활용한 데이터 추출

가계부의 영수증 이미지 인식을 통한 데이터 추출은 네이버 클라우드 서비스의 CLOVA OCR[12]을 사용한다. 해당 기법은 사전 등록 된 이미지 포맷과 스캔된 이미지를 비교해 원하는 데이터를 추출하고 이를 컴퓨터 데이터로 변환한다. 스캔 이미지에서 추출되는 데이터는 사업자명, 금액으로 설정하였다. OCR 기법을 활용한 데이터 추출의 알고리즘은 다음과 같다.

앨범에서 영수증 이미지를 선택한다. 이는 API를 통해 네이버 클라우드의 스토리지로 전송된다. 스토리지의 URL을 CLOVA OCR에 전송하고 이미지에서 사업자명과, 금액 문자 데이터를 추출한다. 추출된 데이터는 앱으로 전송되고 사용자의 확인을 거쳐 firebase의 데이터베이스에 저장된다.

firebase의 실시간 데이터베이스에 저장되는 데이터는 OCR을 통해 추출된 데이터와 저장날짜, 분류로 나눠진다. 추출 데이터는 가계부의 소비내역에 표시되고 데이터 저장 날짜는 캘린더에 기록되어 날짜 별 소비내역 열람이 가능하다. 분류는 치료비와 양육비로 나눠지며 사업자 명을 비교해 '병원'이라는 단어가 존재하면 치료비로 저장된다. 이는 가계부의 '분석' 기능과 연동해 소비내역의 분류 별 확인이 가능하도록 하였다.

라. 구현결과

세부설계에 따라 서버-클라이언트 구조, firebase를 통한 모바일 벡엔드 구성하였다. 그림 5는 앱의 자가진단, 동물병원 검색 페이지이다. 메인 페이지의 하단 바를 이용해 각각 동물병원, 가계부, 게시판 페이지로 이동할 수 있다. 자가진단 기능은 사용자가 반려동물의 질병이 의심되는 부위를 촬영해 예상 질병을 확인 할 수 있다. 동물병원 검색 기능은 크롤링을 통해 입력된 병원정보를 탐색한 후, 사용자의 현재 위치를 파악해 추천 병원을 검색한다. 가계부는 사용자가 반려동물을 양육하며 발생한 비용을 영수증 스캔, 수기로 작성하여 저장 및 확인 할 수 있다. 게시판은 질문, 후기게시판이 존재하며 사용자 간에 소통을 할 수 있도록 하였다.

OTNBBE_2023_v23n6_133_f0005.png 이미지

그림 5. 어플리케이션 메인 페이지

Fig. 5. Application Main Page.

Ⅳ. 결론 및 향후 연구과제

본 앱은 양육자에게 가장 필요한 4가지 기능과 통합 앱의 최적화를 위해 무겁지 않게 기능 구성을 하면서 하나의 앱으로 반려동물의 편리한 케어를 목적으로 개발하였다. 기존에 볼 수 없었던 기능이나 뛰어난 성능을 가진 기술을 제시하지는 않는다. 하지만 기존 시장에 존재하던 여러 반려동물 관련 필수 앱을 하나로 통합하였다고 볼 수 있다.

향후 연구과제로써 사용자 반응 및 피드백을 기반으로 앱의 기능을 개선하고 최적화하는 방향을 탐색할 예정이다. 또한, 새로운 반려동물 관련 기술 동향을 파악하여 앱에 통합하는 방법을 모색하며, 사용자 인터페이스 및 사용자 경험에 관한 연구를 통해 사용자 친화적인 앱으로의 발전을 추구할 것이다. 마지막으로, 앱의 데이터 분석 기능을 활용하여 반려동물의 건강 및 행동 패턴에 대한 연구도 진행될 계획이다.

References

  1. Ministry of Agriculture, Food and Rural Affairs, "Animal Registration Information Data Overview", 2019.
  2. Won-Kyoung Hwang, Kwang-Pyo Son, "2021 Korean Pet Report", KB Management Research Institute, 2021.
  3. TT-Care. https://www.ttcareforpet.com/ko-kr
  4. Toss. https://toss.im/
  5. Naver Moneybook. https://moneybook.naver.com
  6. Ministry of Science and ICT, "Pet Diease Data". https://www.aihub.or.kr/
  7. Sinno-Jialin Pan, Qiang Yang, "A survey on transfer learning", IEEE Transactions on Knowledge and Data Engineering, 22(10), pp.1345-1359, 2010. https://doi.org/10.1109/TKDE.2009.191
  8. Young-Giu Jung, Hak-Chul Shin, Sun-Phil Nah "Development of Deep Learning Model for Fingerprint Identification at Digtial Mobile Radio", The Journal of The Institute of Internet, Broadcasting and Communication (IIBC), 22(10), Vol. 22, No. 1, pp.7-13, 2022. DOI: https://doi.org/10.7236/JIIBC.2022.22.1.7.
  9. Heydt, M., "Python Web Scraping Cookbook", Packt Publishing, pp.15-18, 2018.
  10. Heydt, M., "Python Web Scraping Cookbook", Packt Publishing, pp3-5, 2018.
  11. Selenium. https://selenium-python.readthedocs.io/index.html
  12. CLOVA OCR. https://www.ncloud.com/product/aiService/ocr