Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ufris

이미지 학습 시, 제한된 data에서 성능을 높이는 방법(데이터 일반화) 본문

기타/개인 생각

이미지 학습 시, 제한된 data에서 성능을 높이는 방법(데이터 일반화)

ufris 2019. 1. 10. 13:40

overfitting이 났을 때 train data 수를 늘리라는 것이 일반적인 방법이다


하지만 제한된 resource 안에서 data 수를 늘리는 것은 쉽지 않다


공장에서 물건 생성 시 불량품을 검출하는 모델을 만들고 싶은데 실제로 불량품은 1% 이내이다


정상 제품 1000장을 얻을 수 있다면 불량 제품은 10장밖에 얻지 못한다는 것이다


이러한 상황 속에서 어떻게 성능을 높일 수 있을까


한가지 방법으로는 이미지를 일반화 시키는 것이다





예를 들어 진돗개와 시바견을 구분하는 모델을 만들고자 한다


이미지를 살펴보면 진돗개 데이터에는 목줄을 한 데이터가 1000장 옷을 입은 데이터가 100장이라고 하고


이와 반대로 시바견 데이터에는 목줄을 한 데이터가 100장 옷을 입은 데이터가 1000장이라고 한다


이미지의 분석 없이 개수로만 따졌을 때 2200장의 데이터가 존재하는 것이다


validation set에는 옷을 입은 진돗개 사진이 10장, 목줄을 한 진돗개 사진이 100장이고


반대로 옷을 입은 시바견 사진은 100장, 목줄을 한 시바견 사진은 10장이라고 하자





이와 같이 훈련을 시키면 목줄을 한 사진은 진돗개로, 옷을 입은 사진은 시바견으로 구분한다


시바견과 진돗개는 거의 유사하기 때문에 이 둘을 구분할 수 있는 작은 차이를 학습하지 못하고 쉽게 눈에 띄는 목줄과 옷을 기준으로 학습하게 된다


이렇게 눈에 보이는 특징들로 목줄과 옷을 가정했는데 실제로 학습시키면 이러한 특징들 외에 우리가 알지 못하는 특징들을 가지고 학습을 하게 된다


AI는 미묘한 차이를 구분할 때 눈에 잘 띄지 않는 특징보다 눈에 띄는 특징들을 가지고 학습을 하게 된다


데이터에 대한 분석 없이 그냥 훈련을 시키면 성능은 좋아지지 못하고 원인도 모른채 그냥 더 많은 데이터만 찾게 된다





여기서 이미지를 일반화 시키는 방법을 통해 성능을 높인다고 했는데 


이 말은 다른 정보들은 최소화하고 일률적인 데이터를 가지고 학습을 시킨다는 것이다


즉, 진돗개와 시바견의 얼굴 부분만 crop하여 훈련을 시키는 것이다(예를 든 것이고 꼬리든 발이든 특징이 될만한 곳을 crop하면 된다)


그렇게 되면 옷을 입은 진돗개 데이터는 그냥 진돗개 데이터가 되는 것이고 목줄을 한 진돗개도 그냥 진돗개 데이터가 되는 것이다


1000장과 100장으로 나눠져 있던 데이터가 1100장이라는 데이터로 합쳐지고 수 많은 특징들 중에 옷과 목줄이라는 특징들은 사라지게 된다


어떻게 보면 내부적인 처리를 통해 특징들을 줄이면서 데이터를 일률적으로 만들어 100장 : 1000장을 1100장으로 데이터를 늘렸다고 볼 수 있다


그렇게 되면 목줄과 옷이라는 특징이 사라지고 시바견과 진돗개를 구분할 수 있는 특징들을 찾게 된다


그 특징들이 눈이 됐든 코가 됐든 AI가 알아서 찾을 것이다









'기타 > 개인 생각' 카테고리의 다른 글

공개 데이터 url  (0) 2019.02.14
상황에 따른 데이터 분류와 모델 학습  (0) 2018.12.06