Skip to content

Save-Pets/Save-Pets-ML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 

Repository files navigation

구해줘 펫즈, Save Pets


1. 데모 영상

1.mp4

2. 서비스 소개

savepets_main

3. 주요 기술 및 설명

[Client]

  • iOS
    • UIKit
    • GCD (DispatchSemaphore)
    • AVFoundation
    • Vision
    • CoreML

[Back end]

  • Server
    • Flask
    • MySQL
    • AWS
  • Machine Learning
    • OpenCV
    • Scikit learn
    • Pytorch

1) 강아지 코를 찾기 위한 객체 탐지 모델 - YOLOv5

비문으로 강아지를 분류하려면 먼저 강아지 얼굴에서 강아지 코를 찾을 수 있어야합니다.

물론 클라이언트로부터 강아지 코를 지정하여 입력받을 수도 있지만 사용자가 엉뚱한 사진으로 강아지를 등록하는 것을 방지하기 위해 검증된 강아지 코만 입력받아야 합니다.

때문에 강아지 코를 찾기위한 객체 탐지(Object Detection) 모델이 필요합니다.

객체 탐지 분야에서 유명한 YOLO(You Only Look Once)중 YOLOv5 모델을 사용하여 강아지 코 탐지 모델을 구현하였습니다.

Stanford의 Dogs Dataset 중 해상도가 높은 사진을 3060장 골라 직접 라벨링하여 모델을 학습하였습니다.

Original

YOLOv5


2) 이미지 전처리 - CLAHE

강아지 코를 촬영할 때 그늘지면 주름이 잘 보이지 않습니다.

주름 무늬가 잘 보이도록 어두운 부분을 밝게 펴주는 전처리가 필요합니다.

CLAHE는 히스토그램 높이에 제한을 둬서 특정 높이 이상에 있는 pixel 값들을 재분배하는 이미지 평탄화 방식입니다.

CLAHE

CLAHE를 적용 전 이미지

original image

CLAHE를 적용 후 이미지

CLAHE image


3) 특징 추출 및 벡터화 - SIFT, K-Means

이미지로만 분류한다면 처리해야하는 텐서의 차원이 높아지고 높은 차원의 입력을 처리하기 위해서는 복잡한 모델이 요구됩니다.

예를들어 100x100x3 이미지라면 30000개의 특징들이 존재하게 됩니다.

이미지 분류에 있어서 이미지의 크기와 필요한 학습 데이터 수는 비례합니다.

하지만 사용자에게 100장 이상의 강아지 사진을 요구할 수는 없습니다.

따라서 입력의 차원을 줄여주는 전처리 과정이 필요합니다.

먼저 평탄화한 이미지에서 특징을 추출합니다. 특징 추출 알고리즘은 SIFT를 사용합니다.

그 후 추출한 특징을 100차원 벡터로 변환하여 분류합니다. 벡터화 알고리즘은 K-means Bag of Words 기법으로 구현하였습니다.

sift


4) 이미지 분류를 위한 분류 모델 - SVM

100차원의 벡터로 변환된 이미지를 SVM 모델을 이용하여 분류합니다.

Scikit leran의 SVM을 이용하여 분류하였습니다.


4. UI/UX

1) 비문 등록하기 (카메라/앨범선택)

120216339-dbd20800-c271-11eb-80ee-12759a44ca35 120221033-aaa90600-c278-11eb-8faa-5c04c2d6423c 120216337-db397180-c271-11eb-9bba-159e554b4b57
120222169-7cc4c100-c27a-11eb-8829-cb0041a7523e 120216333-daa0db00-c271-11eb-8731-f9aac8700b00
120221032-a977d900-c278-11eb-90d1-5e506d9698e2 120221031-a8df4280-c278-11eb-9006-e3f1b7b130b9 120221025-a7ae1580-c278-11eb-9304-5273ac9b0523
120221008-a2e96180-c278-11eb-8ee0-fdcbd3a0805c 120216326-da084480-c271-11eb-86f6-ea12f123956b 120216323-d83e8100-c271-11eb-91b8-5e93db02a112
120216311-d379cd00-c271-11eb-8aad-ccb193881ea1 120216353-deccf880-c271-11eb-8170-25b6087b977d 120221828-058f2d00-c27a-11eb-8db7-3517c4f582b6

2) 비문 조회하기 (카메라/앨범선택)

120216339-dbd20800-c271-11eb-80ee-12759a44ca35 120221926-29eb0980-c27a-11eb-8ac1-adf1483d1f54 120222169-7cc4c100-c27a-11eb-8829-cb0041a7523e
120216325-d96fae00-c271-11eb-987d-d46f2f4755d6 120221937-2eafbd80-c27a-11eb-83df-81017923a218
120216334-db397180-c271-11eb-94e2-da8e3977df19 120216330-da084480-c271-11eb-926e-e55d350b4a5e 120222091-60288900-c27a-11eb-9ea8-89e6f25641db

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published