Food Image Rotation (음식이미지 회전) 이라는 주제에 대해서. 실제로 딥러닝(deeplearning)을 어떻게 도입하고, 이를 API(backend)로서 서버에 올리며, 웹(frontend) 를 통해서 올리는 과정을 구현하기 위해서 만든 프로젝트입니다.
0
stars
0
forks
source link
[DeepLearning] 데이터의 분류와 클래스 선정의 이유 정리 #3
Open
heojae opened 3 years ago
1. 이미지 회전(Rotation) 이라는 방법에 대한 고려
0 ~ 360 도 회전
처음 회전이라는, 주제를 들었을 떄,
0 - 360 => range(0, 360, 1)
전체 로 다 회전 할 수 있을 거라는 생각이 들었습니다.실제로 간단하게, 모델을 만들어서, 학습 데이터를 적게해서 하였을 떄에는 크게 틀리지 않고도, 예측을 할 수 있었으니까요.
하지만, (0, 90, 180, 270) 을 제외한 각도로 회전을 할 경우, 아래와 같이 검은 색 부분들이 생기게 됩니다.
이러한 경우를 해결할 수 있는 방법에 대해서, 생각을 해보았으나,
위 3가지 방법 모두, 현실적으로는 도입하기 어려운 방법이기에, 검은색 부분을 채우지 않고, 이미지 원래의 온전함을 보존하기 위해서는
0 , 90, 180, 270 => range(0, 360, 90)
으로만 회전함이 필요한 것을 알 수 있었습니다.그렇기에, 클래스를
0 , 90, 180, 270
4가지로 선정하였습니다.2. 데이터 분류에 대한 생각 (학습 데이터 분포의 기준에 대한 정립)
저는 음식 사진들을 보았을 때, 총 3가지 경우가 있다고 판단하였습니다.
회전 하였을 때, 구분 가능한 것 ( 정면 뷰, front -view,
판별 가능한 경우
)사진을 정면에서 찍었을 때, 대략 0-80 도 정도 쯤에서, 각도를 유지하며 찍은 경우, 음식의 주축선이 0-30도 정도 안에 포함되는 경우.
회전 하였을 때, 구분 불가능 한 것 ( 수직 뷰, Perpendicular - view,
애매한 경우
)사진을 수직(90도)으로 찍은 경우이다.
도시락 같은 경우, 직사각형으로 찍혔을 때, 가로든 세로든, 둘다 크게 이상하다고 생각되지 않았으며,
초밥 같은 경우도 마찬가지였습니다.
이와 같은 경우는 회전을 하였을 때, 분리하기 힘들다는 생각을 많이하였습니다.
0도에서 사진을 찍었지만, 음식의 주축선이 45도 인 경우, (
애매한 경우
)회전 하였지만, 90도 정도 차이로, 두 경우 모두 사람이 보기에 비슷한 경우 ( 45도 view)
음식의 주축선이 약 45도 쯤에 위치한 경우이다.
이경우는 좌 or 우로 90도를 회전해도, 0도를 유지해도 애매하다는 생각이 많이 들었습니다.
저는 이러한 경우를 해결 할 수 있는 방법이
Confidence
라고 생각하였습니다.애매한 경우
들을 학습 데이터에서 제거하고(학습을 시키지 않고),판별가능한 경우
들을 학습을 시킨다면,학습 시킨 데이터의 분포에 대해서는 높은
Confidence
를 낼 수있을 것이라 생각하였고,학습을 하지 않은(애매한) 분포에 대해서는, 낮은
Confidence
를 낼 것이라 생각하였습니다.물론, 완벽하게 되지는 않겠지만, 4개의 Class 에 대해서는
threshold
를0.9
이상으로 높여도 괜찮다고 생각하였습니다.만약
Confidence
가threshold
이하라면, 사람이 판단을 하여, 수정하는 것을 생각하며, 진행하였습니다.Confidence
를 통해서, 이런 문제를 해결할 수 있을 것이라 생각합니다.