2 분 소요

[공지사항] [YOLOv5를 활용하여 남성 상하의를 감지하고, Kmeans와 KNN을 활용하여 트렌드에 맞는 패션 컬러를 자동으로 예측하는 개인 프로젝트입니다.] 👉🏻깃허브 바로가기

트렌드 기반 패션 컬러 매칭 프로젝트 1편



트렌드 기반 패션 컬러 매칭 프로젝트



프로젝트 소개

  • 이 프로젝트는 최근 트렌드 패션을 학습하여 상의와 어울리는 하의의 색상을 추천, 비교해주는 프로젝트이다.
  • 주요 목표는 이미지의 상의 하의를 검출하고 자주 바뀌는 패션 트렌드에 따라 상의에 어울리는 하의 색상을 나타내주는 것이다.
  • 컴퓨터 비전 분야의 딥러닝을 활용하여 개발하는 프로젝트이다.


기사원문 바로가기

이 기사는 굉장히 유명한 기사다. 페이스북 CEO 마크 저커버그는 옷을 고민하는 데에 조금의 시간이라도 쏟고 싶지 않아 옷장에 회색 티셔츠만 20벌 있다고 한다.

출처 : 데일리한국(https://daily.hankooki.com)


나 또한 내가 입은 상의와 하의가 잘 어울릴까??? 상의와 어울리는 바지 색상은 뭘까?? 하는 고민을 할 때가 많다.

이 프로젝트를 이용하면 오늘 당장 입을 패션에 대한 고민을 좀 덜어 낼 수 있지 않을까 생각해본다.



파이프 라인 구성

이 프로젝트를 완성 시키기 위해 먼저 전체적인 파이프 라인을 구성 해야 한다.

내가 생각한 파이프 라인은 다음과 같다.

  1. 상의 및 하의 감지 모델
    • YOLOv5 모델을 활용하여 상의와 하의를 자동으로 감지한다.
  2. 색상 추출 알고리즘
    • 감지된 상의와 하의의 색상을 추출하는 알고리즘을 개발한다.
  3. 하의 색상 예측 모델
    • 추출된 색상을 기반으로 현재 트렌드에 맞는 하의의 색상을 예측하는 모델을 생성한다.



유저 시나리오

파이프 라인에 따라 사용자들은 다음의 과정을 통해 하의 색상을 비교, 추천 받게 된다.

  1. 사용자는 이미지를 업로드하면 시스템이 자동으로 상의와 하의를 감지한다.
  2. 상의와 하의의 색상이 추출되어 시각적으로 표시된다.
  3. 현재 트렌드에 기반하여 하의의 추천 또는 비교 기능을 제공한다.



데이터셋 구성

AI 허브의 ‘‘연도별 패션 선호도 파악 및 추천 데이터’ 를 이용했다.

데이터의 양은 충분히 많았지만 내가 원하는 것은 트렌드 기반에 따른 패션이기 때문에 가장 최근 년도인 2019년 남성 데이터를 이용했다.


파이프 라인 구성에 따른 1. 상의 및 하의 감지 모델 을 만들기 위해서는 이미지 데이터를 그에 적합한 형태로 라벨링을 해줘야 한다.

로보플로우 를 이용하여 이미지 데이터를 일일이 라벨링 했다.

  • 라벨링은 상의 하의 클래스를 나눠 700개 이미지에 적용시켰다.


로보플로우 의 장점은 편리함이다.

라벨링 한 데이터 셋을 원하는 모델의 Format에 맞춰 download code를 준다.

해당 download code를 복사하고 내가 원하는 환경에서 컴파일 하면 라벨링 된 데이터 셋을 얻을 수 있다.



YOLOv5

객체 탐지를 위한 딥러닝 모델 중 YOLOv5 를 선택 한 이유 또한 편리성이다.

YOLOv5는 빠른 처리 속도와 높은 성능, 그리고 사용의 편리함이 장점이기 때문이다.

코랩의 GPU환경을 사용하여 좀 더 빠르게 모델 학습 과정을 진행하기 위해 코랩환경에서 실시했다.


1. 먼저 다운로드 코드 그대로 실행시켜 로보플로우에서 라벨링 한 데이터셋(이미지, 바운딩 좌표)을 가져온다.

데이터는 images 와 labels로 구성 되어있다.


labels에는 는 바운딩 박스 좌표가 들어가 있다. 하지만 어째서인가 클래스를 의미하는 첫번째 숫자가 모두 0으로 되어있다.


따라서 해당 코드를 통해 클래스를 바꿔줬다. 두번째 줄의 0을 1로 바꾸는 코드이다. (0은 상의, 1은 하의를 의미한다.)



2. YOLOv5 모델과 필요한 라이브러리를 가져온다.

해당 코드는 다음과 같다.


3. YOLOv5 모델 학습을 진행한다.

img, batch, epochs를 알맞게 지정한 다음 YOLOv5 모델 코드를 실행하면된다.

하지만 자꾸만 오류가 났다. Dataset의 경로를 찾을 수 없다는 에러 메세지다.



이 오류는 생각보다 간단하게 해결 할 수 있었다. 또한 이 오류를 해결하는 과정에서 나의 실수를 하나 더 발견 했다.

data.yaml 파일 을 수정 해야한다.

내가 수정한 파일은 다음과 같다.

클래스 이름, 클래스 개수, 경로를 재 설정 하고 나면 오류 없이 학습을 할 수 있다.



4. 학습 결과를 확인한다.

코랩에서는 텐서보드를 통해 다양한 학습 결과를 확인 할 수 있다.

%load_ext tensorboard
%tensorboard --logdir /content/yolov5/runs/


이제 새로운 이미지를 넣고 YOLOv5모델이 잘 작동하는지 확인 해보자. 예시 코드는 다음과 같다.

!python detect.py --weights runs/train/best_yolov5s_result4/weights/best.pt --source "/content/test3.png"


테스트 이미지를 3개를 넣었는데 모두 다 잘 검출 하는 것을 확인 할 수 있다.


👉🏻전체 코드 바로가기 전체 코드는 깃허브에서 참고 하면 된다.

댓글남기기