Skip to content

zzdhxm12/Design-of-Fashion-Coordination-System-using-CNN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

Design-of-Fashion-Coordination-System-using-CNN

Deep Learning 기술 중 하나인 CNN(Convolutional Neural Networks)을 사용하여 사용자로부터 입력받은 패션 아이템의 특징(색상, 상/하의 구분)을 추출하여 해당 패션 아이템과 어울리는 패션을 코디네이션해주는 시스템을 개발하였다.

개발 환경

CNN 모델

  • ubuntu16.04
  • cuda8.0
  • cundnn5.1
  • tensorflow1.6.0

웹 서버

  • html
  • MySQL
  • PHP

Usecase

1. 시작페이지

image

2. 버튼

image

  • HOME : 메인 페이지로 페이지 재로딩한다.
  • RECOMMENDATION : 패션 추천 서비스 페이지로 이동한다.
  • DETAIL : 추천 의상 상세 페이지로 이동한다.

3. 패션 추천 서비스 페이지

  • 전체 UI

image

  • 패션 아이템 이미지 입력

image

  • 이미지 판별

image

  • 패션 아이템 추천

image

4. 추천 의상 이미지 상세 페이지

  • 전체 UI

image

  • 자세히 보기

image

Architecture

1. 전체 구조도

image

(1) 사용자가 웹에서 의상 이미지 입력하여 서버로 전달한다.

(2) 서버는 CNN 모델을 실행하여 입력된 이미지의 특징 추출하여 특징 태그를 획득한다.

(3) CNN 모델은 획득한 특징 태그를 서버로 전달한다.

(4) 서버는 전달받은 특징 태그를 데이터베이스로 전달한다.

(5) 데이터베이스는 특징 태그와 가장 잘 어울리는 의상을 검색하여 추천 의상 이미지 서버로 전달한다.

(6) 서버는 전달 받은 추천 의상 이미지를 웹으로 전송하여 출력한다.

2. Database 설계

image

  • 관계형 데이터베이스 스키마 설계
Create table recommend (
 id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
 input varchar(300),
 output varchar(300),
 img varchar(300)
); 

image

  • id : Data의 고유 번호
  • input : 사용자가 입력한 패션 아이템
  • output : input과 어울리는 패션 아이템
  • img : output의 이미지 경로

CNN(Convolutional Neural Networks)

  • CNN 모델 구조

image

  • 객체 인식 과정

image

CNN은 신경망에 기존의 필터 기술을 병합해 신경망이 2차원 영상을 잘 습득할 수 있도록 최적화한 알고리즘이다. CNN은 크게 convolution-pooling layer와 fully connected layer의 두 부분으로 구성되어 있다. 두 부분은 각각 입력된 이미지로부터 계층적 구조의 특징을 추출하는 역할과 추출된 특징을 입력받아 특정 카테고리로 분류하는 역할을 담당한다.

Dataset

image

image

각 카테고리 당 약 1000-3000개의 훈련 데이터와 200-500개의 테스트 데이터를 이용하였다. 학습에 사용된 이미지는 구글과 네이버에서 각 카테고리 별로 이미지 크롤링을 수행하는 파이썬 오픈소스 코드를 사용하여 수집하였다. 크롤링을 통하여 수집된 이미지 중 학습에 방해가 될 만한 이미지들은 제거한 후 각 이미지들에 대한 레이블링을 수행하였다.

Result

image

학습은 총 5,000번 반복하여 실행하였으며 최종적으로 카테고리 별로 의류를 분류하는 정확도가 95%의 모델을 생성하였다.