heojae / FoodImageRotationAdmin

Food Image Rotation (음식이미지 회전) 이라는 주제에 대해서. 실제로 딥러닝(deeplearning)을 어떻게 도입하고, 이를 API(backend)로서 서버에 올리며, 웹(frontend) 를 통해서 올리는 과정을 구현하기 위해서 만든 프로젝트입니다.
0 stars 0 forks source link

[DeepLearning] 데이터의 분류와 클래스 선정의 이유 정리 #3

Open heojae opened 3 years ago

heojae commented 3 years ago

대주제 : 데이터의 분류 및 클래스들을 정리하고 싶다.

소주제 : 많은 양의 데이터를 보고 얻은 생각들을 정리하고 싶다. + 모델의 클래스를 정리하고 싶다

1. 이미지 회전(Rotation) 이라는 방법에 대한 고려

0 ~ 360 도 회전

처음 회전이라는, 주제를 들었을 떄, 0 - 360 => range(0, 360, 1) 전체 로 다 회전 할 수 있을 거라는 생각이 들었습니다.

실제로 간단하게, 모델을 만들어서, 학습 데이터를 적게해서 하였을 떄에는 크게 틀리지 않고도, 예측을 할 수 있었으니까요.

하지만, (0, 90, 180, 270) 을 제외한 각도로 회전을 할 경우, 아래와 같이 검은 색 부분들이 생기게 됩니다.

이러한 경우를 해결할 수 있는 방법에 대해서, 생각을 해보았으나,

1. Inpating 2. 내부 이미지 대체 3. 내부 이미지 Crop

위 3가지 방법 모두, 현실적으로는 도입하기 어려운 방법이기에, 검은색 부분을 채우지 않고, 이미지 원래의 온전함을 보존하기 위해서는

0 , 90, 180, 270 => range(0, 360, 90) 으로만 회전함이 필요한 것을 알 수 있었습니다.

그렇기에, 클래스를 0 , 90, 180, 270 4가지로 선정하였습니다.



2. 데이터 분류에 대한 생각 (학습 데이터 분포의 기준에 대한 정립)

저는 음식 사진들을 보았을 때, 총 3가지 경우가 있다고 판단하였습니다.

저는 이러한 경우를 해결 할 수 있는 방법이 Confidence 라고 생각하였습니다.

애매한 경우 들을 학습 데이터에서 제거하고(학습을 시키지 않고), 판별가능한 경우들을 학습을 시킨다면,

학습 시킨 데이터의 분포에 대해서는 높은 Confidence 를 낼 수있을 것이라 생각하였고,

학습을 하지 않은(애매한) 분포에 대해서는, 낮은 Confidence 를 낼 것이라 생각하였습니다.

물론, 완벽하게 되지는 않겠지만, 4개의 Class 에 대해서는 threshold0.9 이상으로 높여도 괜찮다고 생각하였습니다.

만약 Confidencethreshold 이하라면, 사람이 판단을 하여, 수정하는 것을 생각하며, 진행하였습니다.

Confidence 를 통해서, 이런 문제를 해결할 수 있을 것이라 생각합니다.