Augmenation
우리는 학습시킬 데이터의 크기가 작을 때 ‘Overfitting’이라는 위험에 빠질 수가 있다. 이를 해결하기 위한 방안으로 Augmenation을 수행할 수가 있다. 이는 데이터를 학습시킬 때 fig.1과 같이 약간의 변형을 줘서 ‘Overfitting’을 조금이나마 방지하기 위함이다. 자세한 이론적 내용은 Nanonets를 참고하면 좋을 것 같다.
그러면 이러한 Augmenation을 Tensorflow로 어떻게 구현을 할까?
ImageDataGenerator에 대해 Posting한 내용을 떠올려보면 ImageDataGenerator를 작성할 때 rescale를 적용했다는 것을 알 수 있다. Augmenation은 이 ImageDataGenerator안에 parameter를 추가하여 구현하면 된다.
rotation_range는 0~180도의 범위로 임의로 회전시킬 수 있는데 fig.2에서 40을 지정해주면 0~0도 범위로 임의로 지정된다. width_shift_range, height_shift_range를 지정해주면 수직, 수평으로 자를 수가 있다. fig.2에서는 0.2를 지정해 줬기 때문에 20% 정도 자를 수가 있다. shear_range는 x축에 따라 기울여 주고 zoom_range는 줌의 정도를 나타내고 horizontal_flip은 가로로 뒤집는 역할을 한다. fill_mode는 default값은 ‘nearest’으로 변형에 있어서 비어진 픽셀을 채워주는 보간법을 지정 해주는 변수이다.