본문 바로가기

Data-science/machine learning

머신러닝 이미지 데이터 전처리 주의사항

728x90

학습데이터에서 이미지 데이터를 전처리했다.


그럼 테스트데이터에서는 어떻게 해야할까?


이에대한 해답.


Contrast Normalization


다양한 이미지로 학습하는 경우 이미지마다 밝기가 다르고 찍은 환경이 다를 수 있습니다. 이것을 어느 정도 통일해 주는 것이 대비 표준화(contrast normalization) 과정입니다. 거의 언제나, 대비 표준화를 거치고 나면 훈련에 사용하기 좋은 데이터가 됩니다.


표준화 과정은 평균을 빼고 표준편차로 나눠주는 \( \hat X = \frac{X - E(X)}{\sigma(X)} \) 과정입니다. 전체 픽셀들의 분포가 평균이 0이고 분산이 1인 정규분포로 바뀌게 됩니다. 이 과정에서 신경써야 할 것은 2가지가 있습니다.


전체 이미지에 대해서 하는지, 각각의 이미지에 대해서 하는지

전체 채널에 대해서 하는지, 각각의 채널에 대해서 하는지


전체 이미지에 대해서 하는 경우 전체 대비 표준화(Global Contrast Normalization, GCN), 각각의 이미지에 대해서 하는 경우 개별 대비 표준화(Local Contrast Normalization, LCN)라고 합니다. GCN은 feature-wise 라고 하기도 하고, LCN은 sample-wise 라고 하기도 합니다. GCN을 한다면 모든 훈련 이미지의 픽셀들에 대해 평균과 표준편차를 구하고 이 평균과 표준편차로 모든 이미지의 픽셀들을 표준화합니다. LCN을 한다면 각각의 이미지의 픽셀들에 대해 평균과 표준편차를 구하고 해당 이미지의 픽셀들을 표준화합니다. GCN과 LCN 모두 데이터에 대해 한 번만 수행해 놓으면 됩니다.


테스트 데이터에 대해서는 조금 상황이 다른데, GCN에서 사용한 평균과 표준편차 행렬은 훈련 데이터로 구한 것이기 때문입니다. GCN을 쓴 경우 훈련 데이터로 만든 평균과 표준편차를 그대로 사용합니다. LCN을 쓴 경우는 이런 문제가 없습니다.


sample_wise로 전처리할 경우 훈련/테스트 데이터에서 각각 전처리 해줘도 된다.


ref) https://deepestdocs.readthedocs.io/en/latest/003_image_processing/0030/


딥러닝에서 데이터 전처리가 중요한 이유 gradient descent 알고리즘을 이용 

  • We can speed up gradient descent by scaling. This is because θ will descend quickly on small ranges and slowly on large ranges, and so will oscillate inefficiently down to the optimum when the variables are very uneven.


'Data-science > machine learning' 카테고리의 다른 글

rdkit 설치하기  (1) 2022.05.15
[pandas] pandas dataframe 이용해서 그룹별로 train/val 나누기  (0) 2022.01.06
dtreeviz IndexError, decision tree visualization  (0) 2020.11.11
epoch, iter ?  (0) 2019.05.20
SVM 공부  (0) 2019.02.12