머신러닝 개발자의 러닝머신

[프로젝트]패션이미지 다중 속성 분류 모델 개발 이야기 본문

프로젝트

[프로젝트]패션이미지 다중 속성 분류 모델 개발 이야기

oongsong 2023. 8. 12. 14:16
반응형

목차

1. 단일 객체, 다중 속성 분류는 왜 필요할까 

2. 모델 적용기 

   2-1. 데이터셋 구성 

   2-2. Mulit-Task Learning 모델링 

3. 데이터 중심적 개발 

   3-1. 데이터 불균형 해소, Augmentation   

   3-2. Outlier 제거

4. Semi-Supervised Learning 준지도학습 

5. 결과 및 회고 


1. 단일 객체, 다중 속성 분류는 왜 필요할까   

프로젝트 개요 

 

이번 포스트는 작년 여름에 진행했던 2022 ETRI 자율성장 인공지능 리더보드 챌린지에 참가하며 진행했던 프로젝트입니다. 해당 대회는 4개의 하위 sub-task로 이루어져있고 첫 번째와, 두 번째 Task 부문에 참가하여 패션이미지의 다중 속성 분류 모델 개발을 주제로 프로젝트를 진행했습니다. 

 

 

 

단일객체-다중 속성 분류는 왜 필요할까 

 

하나의 이미지를 여러 카테고리 중의 하나의 분류로 결정하는 문제는 Cifar-100과 같이 흔하게 접할 수 있습니다. 하지만 이러한 단일 문제를 해결하는 인공지능은 단순한 작업을 수행할 뿐, 현실의 다양하고 복합적인 문제를 해결하는 데에 적용하기에 어려움이 있습니다. 따라서 해당 프로젝트를 통해 하나의 이미지가 가진 여러가지 속성을 분류하는 다중 속성 분류 모델을 개발하는 것을 목표로 하고 있습니다. 

이러한 복잡한 상황을 인식하는 모델 개발을 통해 기존 인공지능의 한계를 넘어 복잡한 상황을 이해함을 기대할 수 있습니다.

 

 

본 프로젝트가 가지는 의미는 다음과 같습니다. 

 

1) 객체가 가지는 고유하고 다양한 속성에 대한 인식 

 

  • 기존 분류 모델은 단순히 객체의 종류가 무엇인지를 구분하는 기술이 대부분이며 그 객체가 가지고 있는 고유하고 다양한 속성까지는 인식하지 못하였습니다. 
  • 또한, 기존 분류 모델은 영상이미지의 객체를 검출하여 해당 객체에 대해 하나의 분류 정보만 제공하는 단일객체-단일정보 모델입니다. 

 

따라서, 본 프로젝트는 객체가 가지는 고유한 속성에 대한 인식단일 객체에 대해 여러가지 속성을 한 번에 제공하여 기존 분류 모델들의 한계점을 보완한 기술 개발을 목표로 합니다. 

 

이미지 출처:https://www.youtube.com/watch?v=a3hLSqkHawg

 

2) 각 개인의 모습을 표현하고 구별하는 정보로 활용 가능 

 

각자의 개성과 기호, 계절 등에 따라 다양한 의상을 착용하고 의상은 해당 사람을 표현하는 사회적 의미로서의 역할이기도 합니다. 

 

따라서, 이러한 보안 측면에서 특정 사람을 다른 사람과 구분하며 다른 사람과의 구별을 위해 비교 정보로 활용이 가능합니다. 

 

3) 인터넷 쇼핑몰과 이미지 검색분야에서 다양하게 활용 가능 

 

사용자가 검색하는 텍스트는 옷의 종류로는 구분이 명확하지 않는 속성에 대한 질의를 하는 경우가 상당수를 차지합니다. 

예를 들어, '바캉스 샌들', '검정색 일상 반바지' 등과 같이 질의가 들어오는 상황에서는 패션이미지에 대한 상세 속성에 대한 분류가 필수적입니다. 

 

 

따라서 위와 같은 필요성에 따라 프로젝트 주제를 선정하였으며 이러한 단일 객체의 패션 아이템에 대한 다중 속성 분류 기술은 IT 검색업체, 패션 쇼핑몰, CCTV 등에 적용할 수 있는 활용성이 높은 기술입니다. 

 

2. 모델 적용기 

데이터셋 구성 

 

프로젝트에 사용한 데이터는 주최측에서 제공한 AI 패션 데이터셋 FASCODE로,

3가지의 분류 속성(일상성, 성별, 장식성)을 가지는 11,000장의 패션 이미지로 구성되어있습니다.

각각의 속성은 다음과 같이 7개, 6개, 3개의 하위 분류 class로 구성되어 있으며 데이터의 예시는 다음과 같습니다. 

 

데이터 예시, bbox 정보와 일상, 성, 장식성에 대한 분류라벨

 

 

각 속성의 하위 클래스 분포를 살펴보면 다음과 같습니다. 

 

 

모델링 

 

하나의 객체가 주어지면 각각 일상, 성, 장식이라는 3개의 다른 task의 하위 속성을 분류하는 것이 주요 프로젝트 목표입니다. 이를 위한 모델을 설계를 위한 접근은 다음과 같이 두 가지 방식으로 접근했습니다. 

 

  • 각 task마다 서로 다른 분류 모델을 학습하는 방식  
  • Multi-Task Learning, base 모델을 서로 다른 task가 공유하는 방식 

 

(1) 각 task마다 서로 다른 분류 모델을 학습하는 방식 

 

 

 

다음과 같이 각각의 task마다 서로 다른 분류기를 설계하여 하나의 이미지를 3개의 서로 다른 모델에 입력되는 방식입니다.

이러한 방식은 각각의 task에 적합한 분류기를 학습할 수 있다는 장점이 있습니다. 

하지만 파라미터의 수가 많고 레이어가 깊은 딥러닝 모델을 각 task마다 사용한다는 점이 학습 뿐만 아니라 inference 시에도 많은 시간과 메모리가 필요하게 되어 비효율적이라는 단점이 있습니다. 

 

 

(2) Multi-Task Learning (MTL) 방식 

 

이때, 각 task가 이미지의 세부적인 속성을 분류하는 유사한 작업이라는 점에서

일정 부분의 base 모델을 공유하는 방식의 Multi-Task Learning을 적용해볼 수 있습니다. 

 

 

 

 

위의 그림은 MTL 방식을 적용해 설계한 모델의 구조입니다. 

앞 단의 이미지의 feature를 추출하는 모델을 공유하고 있고, 추출된 이미지의 feature를 각 task-specific layer에 입력하는 방식으로 구성되어 있습니다. 

 

 

이 때, shared layer를 어디까지 설정할 것인지를 결정해야 하는데요,

shared layer에서는 데이터의 공통적인 feature를 추출하는 층으로 분류 문제의 benchmark 랭킹권의 모델의 성능을 상호 비교하는 실험을 진행했습니다. 그 결과 해당 프로젝트의 도메인에서 분류 성능이 뛰어난 pretrained ResNet을 사용하고자 결정했습니다. 

 

평가지표는 Top1 Acc, Recall, Precision, F1-score를 사용했으며 Daily, Gender, Embellishment 각각의 결과의 평균을 사용했습니다. 

  ResNet18 ResNet18
(ImageNet pretrained)
ResNet50 ResNet50
(ImageNet pretrained)
Top-1 0.48984 0.59814 0.49536 0.61672
Precision 0.35519 0.54254 0.35833 0.5582
Recall  0.32925 0.4681 0.33614 0.51745
F1-score 0.46517 0.49023 0.38628 0.53235

 

 

ImageNet pretrained weight를 사용한 모델의 결과가 그렇지 않은 모델보다 성능이 좋았습니다. 

또한, ResNet18 모델보다는 ResNet50모델의 성능이 좋다는 것을 확인할 수 있었습니다. 

따라서, 최종적으로 pretrain ResNet50 모델을 최종 Shared Networks로 채택했습니다. 

 

 

Multi-Task Learning, MTL의 장점 

 

이와 같이 다양한 태스크들을 동시에 하나의 모델로 학습하는 것을 Multi-Task Learning이라고 합니다. 

이러한 MTL 방식은 기존에 하나의 모델이 하나의 태스크만 수행하여 복잡한 판독 과정을 인공지능으로 학습하는 데에 존재하는 한계를 극복하는 방법입니다. 

 

MTL의 장점은 다음과 같습니다. 

  • 다수의 태스크들이 하나의 심층신경망을 공유하기 때문에 반복적인 계산을 줄여 메모리 양을 줄이면서 추론 속도를 향상시킬 수 있어 학습 효율이 증대된다. 
  • 태스크들 간에 상호 보완적인 정보를 공유하는 경우 서로에 대한 정규화 역할을 하여 각 작업의 예측 성능을 향상 가능하다. 
  • 은닉층들이 하나의 태스크에 과적합 되지 않도록 하여 모델의 일반화 성능 향상이 가능하다. 

 

3. 데이터 중심적 개발 

학습의 한계, 리소스 부족 

 

앞에서 설계한 MTL 모델의 상세 구현은 pretrained ResNet 모델의 출력 분류단을 제거한 구조만 취했습니다. 여기에 다중 속성 분류를 위해 각 속성별로 FC(Fully-Connected) 구조의 classifier를 추가해 baseline에서 추출된 이미지의 feature를 각각의 분류기의 입력으로 사용될 수 있도록 설계했습니다. 그리고 해당 모델의 추가된 layer만 FASCODE 데이터로 추가학습시켰습니다.

 

 

하지만 학습 결과 다음과 같이 더 높은 성능을 위해 residual-block을 더 깊게 쌓아 만든 ResNet101 모델이 기존 base 모델인 ResNet18 모델에 비해 오히려 정확도가 작게는 6.9%에서 크게는 11.6% 까지 낮아지는 상황이 발생했습니다. 

 

 

모델의 파라미터 수를 비교했을 때 약 두 배 차이가 나는 크기가 큰 모델이기 때문에 epoch을 훨씬 높여서 진행해야 되거나 아니면 데이터 전처리를 통해서 성능을 개선이 필요하다고 생각했습니다.

 

 

이 중에서 epoch을 높여서 학습을 진행하는 방식은 모델 학습에만 짧으면 하루에서 길면 이틀까지 걸렸고 많은 컴퓨팅 자원이 소모되는 어려움이 있었습니다. 따라서 저희 팀은 데이터 중심적으로 task를 해결하기로 결정했습니다.

 

3.1. Imbalanced data , Augmentation 

Imbalanced Data 

 

데이터의 분포를 확인한 결과 다음과 같이 각 클래스 별 데이터의 갯수가 불균등 했습니다. 가장 작은 갯수의 클래스의 데이터와 가장 많은 데이터 갯수를 가지는 클래스의 데이터 갯수의 차이가 2500개 가량 발생했습니다. 이러한 데이터의 불균형은 특정 데이터에 편향된 학습을 초래해 성능 악화를 초래합니다.

 

 

이에 따라, 적은 데이터는 보강하여 늘리고, 과도하게 많은 데이터는 사용하지 않는 방식으로 클래스별 데이터 분포를 고르게 해주었습니다. 그 결과 약 2500개 가량의 최대 데이터 수 차이에서 570개의 데이터 차이로 완화시켰습니다.

 

 

데이터 불균형 해소 전과 후의 분포

 

Data Augmentation

 

Data Augmentation이란 하나의 이미지 데이터에 다양한 효과를 적용해 서로 다른 데이터를 만들어 데이터의 수를 보강하는 방식입니다. 이미지의 상하 또는 좌우를 반전하는 mirroring, 데이터의 일부를 잘라내는 croping, 회전을 적용하는 rotation, 노이즈를 추가하는 방식 등이 있습니다. 데이터의 양을 증가시키면 학습 과정에서 과적합을 방지할 뿐만 아니라 학습 성능 향상도 이룰 수 있습니다.

 

 

하지만 기존 데이터를 많이 왜곡하면 데이터의 질적 저하가 발생해 오히려 성능에 더욱 안 좋은 영향을 가져옵니다. 따라서 다양한 조합의 변형 계수와 변형 기법을 실험했으며 다음과 같이 rotate, translate, scale 순서로 처리하는 방식에서 최적의 변형 조건을 찾을 수 있었습니다. 또한, gaussian noise와 같이 이미지의 색상과 노출, 대비에 과도한 변형을 가하는 기법은 데이터의 일관성을 저해해 학습 과정의 혼란을 야기한다는 것을 알 수 있었습니다.

 

<Rotate, Scale, Translate 적용>
<noise 추가하는 augmentation 방식, 데이터의 질을 해치는 결과 초래>

 

 

3.2. Out-Of-Distribution data (OOD 처리)

 

각 속성의 클래스를 살펴보면 "격식차린 스타일", "매니쉬 스타일", "우아한 스타일" 등과 같이 추상적인 감성이 포함되어있습니다.

 

하지만 다음 데이터 예시처럼 "이벤트 스타일"과 "가벼운 외출 스타일"이라고 라벨링된 데이터의 구분이 모호합니다. 이 밖에도 감성적 라벨링이 수행되다보니 라벨 작업자의 관점과 주관이 포함되었을 가능성이 높고 이에 따라서 클래스별 라벨마다 분포를 벗어난 데이터가 포함되어 있을 가능성이 높습니다. 

 

 

각각 Daily (4)이벤트 스타일, (1) 가벼운 외출 스타일의 데이터 예시

 

 

따라서, Out-of-distribution 데이터를 라벨링 되어있는 데이터에서 제거하는 방식을 적용해 라벨링된 데이터의 일관성을 높이고자 했습니다. 

 

참고한 논문은 2020년에 NeurIPS에 게재된 "Identifying Mislabeled Data using the Area Under the Margin Ranking"입니다. 

 

논문에 제시된 방식은 AUM(Area Under the Margin)이라는 지표를 정의하여 이를 기준으로 mislabel된 데이터를 detedct 합는데요,

논문에 정의된 AUM의 정의는 다음과 같습니다. 

 

AUM 정의, 해당 클래스로 분류될 활률에서 다른 클래스로 분류될 확률 중 가장 큰 값을 뺀 값으로 정의한다. (Identifying Mislabeled Data using the Area Under the Margin Ranking, 2020 NeurlPS)

 

라벨링이 잘 되어있는 데이터는 양의 AUM, 오라벨 데이터는 음의 AUM을 갖는다. (Identifying Mislabeled Data using the Area Under the Margin Ranking, 2020 NeurlPS))

 

 

해당 클래스로 예측할 확률과 다른 레이블로 예측할 확률 중, 가장 높은 확률의 차이로 정의됩니다. 음의 값을 가질수록 해당 클래스로 예측되지 않는, 즉, OOD(Out-of-distribution data)일 가능성이 커진다고 할 수 있겠죠! 

(더 자세한 논문 리뷰는 다음 포스트에서 진행하겠습니다.~)

 

이렇게 검출된 OOD 데이터를 각 클래스에서 제외하여 학습에 이러한 noise data를 제거해주었습니다. 

 

그 결과 다음과 같이 성능이 약 3%가량 향상된 것을 확인할 수 있었습니다. 

 

 

4. Semi-Supervised Learning 준지도학습 

 

지금까지의 과정을 요약하면 MTL 기법의 모델을 설계한 뒤, 

데이터 불균형 해소, Augmentation으로 추가적인 데이터 확보, OOD 제거로 노이즈 데이터의 영향을 감소시키는 것과 같이 데이터 측면에서 데이터의 추가적 확보, 균형, 노이즈 데이터 처리를 수행했습니다. 

 

그렇다면, test set에 대해 모델의 성능이 좋아질까요?

 

답은 '항상 그렇지는 않다.' 입니다. 

학습 성능이 좋다고 하더라도, 모델을 개발하는 최종 목표는 학습에 사용되지 않은 새로운 데이터에 대해 잘 예측하는 것입니다. 

 

따라서, 학습 데이터에 과적합되는 것을 개선해야 모델의 일반화 성능을 높여 새로운 데이터를 잘 학습하는 모델을 얻을 수 있습니다. 이를 위해서는 다음과 같은 접근법이 있습니다.

 

  • 더 많은 학습 데이터 확보 
  • 모델의 복잡도 줄이기 
  • 준지도 학습(Semi-Supervised Learning)으로 unlabel 데이터를 이용하기 

 

먼저, 더 많은 학습 데이터 확보를 위해서는 데이터의 수집뿐만 아니라 라벨링 작업을 수행해야 하므로 비용과 시간의 문제가 발생해 현실적으로 어려운 방식입니다. 

모델의 복잡도를 줄여 단순한 모델을 사용하는 방식은 과적합(overffing)의 문제는 해결할 수 있겠지만 모델이 단순해진 만큼 더 복합적인 인지 문제를 해결하기에는 한계가 있습니다. 

따라서, 이러한 현실적인 한계들 속에서 빛을 발하는 방식이 바로 준지도 학습(Semi-Supervised Learning)입니다. 

 

 

준지도 학습(Semi-Supervised Learning)의 아이디어는 라벨링되지 않은 데이터를 학습에 이용해 성능을 향상시키자는 것입니다. 준지도 학습의 종류로는 Proxy-label method, Graph-based SSL, Generative model 등이 있습니다. (준지도 학습에 대한 이야기도 다음 포스트에서 진행하겠습니다~~) 

 

 

그 중에서 이번 프로젝트에서 적용한 방식은 2020년 google research에서 NeurIPS에 게재한 논문인 "Unsupercised Data Augmentation for Consistency Training" 에 소개된 기법으로, 

다음과 같이 이미 주어진 라벨 데이터 (x, y')를 이용해 모델 M을 학습시키고 라벨링되지 않은 데이터와 augmentation을 적용한 데이터의 모델의 예측 분포가 유사하도록 학습 Loss에 이를 반영합니다. 

 

 

UDA 학습 방식, 이때 M은 주어진 라벨링 된 데이터로 학습된 모델을 의미한다.

 

이러한 방식의 SSL을 이번 프로젝트에 적용하여 기존 모델의 Loss 함수에 Unsupervised Consistency Loss 항을 추가해 OOD로 제외되었던 라벨 데이터를 활용하면서도 모델의 일반화 성능을 향상시키고자 했습니다. 

  • Unsupervised Consistency Loss는 unlabeled 데이터와 agmentation 적용한 데이터의 모델의 출력 분포의 Cross-Entropy로 정의 
  • Agmentation은 torchvision에서 제공되는 이미지 변형 기법중 임의 적용 

 

 

5. 결과 및 회고 

 

 결과 

최종 모델의 정확도는 추가적으로 10% 가량 향상 시킬 수 있어 0.72834 acc를 달성해 리더보드 top5를 기록했습니다. 

 

 

 

돌아보며

 

이상으로 단일객체의 다중속성 분류할 수 있는 모델 개발을 마무리했습니다. 단일 객체에 대해 단일 분류를 수행하는 기존 모델의 한계점들을 뛰어넘을 수 있는 기술을 구현하며 저 또한 많은 것을 배웠던 것 같습니다. 앞으로 이러한 방향에 대한 지속적인 개발이 수행되어 정말 사람이 하는 것과 같이 설명할 수 없을 정도의 복합적인 "사고"를 하는 모델이 개발될 날이 머지않은것 같습니다! 

 

 

그 과정에서 딥러닝 개발에 있어 데이터가 더욱 중요해지고 Data-Centric AI 개발의 중요성을 느끼게 되었습니다. 데이터의 정제, unlabel 데이터의 활용, 데이터의 추가적인 확보 방안 모색이 모델의 성능을 좌우했습니다. 더욱이 리소스가 한정된 현업에서 더욱 중요하게 작용할 것이라 생각합니다. 

 

 

추후에는 이를 직접 서비스에 적용해보며 기술을 실제 사용자에게 도움을 줄 수 있는 프로젝트를 진행하고자 합니다. 많은 관심 부탁드려요 😄✅

 

 

 

 

Reference 

https://itec.etri.re.kr/itec/sub02/sub02_01_1.do?t_id=1420-2021-02435 

https://sanghyu.tistory.com/177#:~:text=%EA%B0%80%EC%9E%A5%20%EC%9C%A0%EB%AA%85%ED%95%9C%20%EB%AA%A8%EB%8D%B8%EC%9C%BC%EB%A1%9C%EB%8A%94,(UDA)%20%EB%93%B1%EC%9D%B4%20%EC%9E%88%EB%8B%A4. 

 

 

 

반응형