오늘의 회고
- 사실(Fact): CNN 날씨 이미지 학습, 전이학습
- 느낌(Feeling): 이제 실습 순서가 이해된다. 개별 코드는 아직 어려워서 미니프로젝트때 열심히 해야겠다
- 교훈(Finding): 복습, 과제 열심히 해보자!
멋사 AI스쿨 7기 박조은 강사님
전이학습(trasfer learning)
pre-trained 된 모델을 가져다 사용하는 것.
기존 유명한 논문의 CNN 모델이 이미 TF, keras, PyTorch 등에 구현이 되어있다.
그래서 해당 모델을 직접 구현하지 않고 가져다 쓸 수 있는게 전이학습이다.
여기에서 미세조정 등을 해주게 되면 직접 모델을 구현했을 때에 조금 더 나은 성능을 내기도 한다.
VGG16 API 공식문서 참고
keras 전이학습 가이드 문서
전이학습 모델
- ReNet
- AlexNet
- ZFNET
- GoogLeNet(InceptionNet)
- VGGNet
- ResNet
- SENet
날씨이미지 분류
- TF, keras 의 이미지 전처리 기능을 사용하지 않고 넘파이로 직접 이미지 array를 만들어 봅니다.
- 다차원 배열을 만들어 CNN에 적용하는 실습
이미지 증강을 하면 안되는 현실 상황?
- 크롭이나 확대 => 노이즈를 확대하거나 크롭하면 더 문제가 될 수 있다
- 회전, 반전 => 6을 180도 돌리면 완전히 다른 의미인 9가 되기 때문에 이런 숫자 이미지는 돌리지 않는다.
- 색상 변경 => 만약 장미꽃이라면 다양한 색상이 있기 때문에 색상을 변경해도 상관이 없지만, 신호등이라면 안전과 직결되기 때문에 변경하면 안 된다.
- 데이터셋 => 증강할 때 train 에만 하고, test에는 하지 않는다. 왜냐하면 현실세계 문제를 푼다고 가정했을 때 현실세계 이미지가 들어왔을 때 증강해주지는 않고 들어온 이미지로 판단하기 때문에 train에만 사용한다.
- 결론 => 증강을 할 때는 현실세계 문제와 연관해서 고민해 봐야 한다.
1004 CNN 실습 순서
- 이미지로드(구글드라이브 마운트)
- 이미지 라벨 지정 일부 이미지 미리보기(for문 사용)
- 이미지 데이터셋 만들기 (리사이징)
- 폴더별 이미지 읽어오는 함수 만들기
- x, y값 만들기 (alien_test 폴더 사용)
- x, y 값 np.array 형식으로 만들기
- train, valid 나누기 (train_test_split)
- 이미지 데이터 정규화
- 타겟값(정답) 원핫 인코딩
- 모델 구성, 학습, 예측, 제출(과제)