[Model] inception_resnset_v2 직접 구현하기
GitHub - keras-team/keras: Deep Learning for humans
Deep Learning for humans. Contribute to keras-team/keras development by creating an account on GitHub.
github.com
한국음식 이미지 분류기의 모델을 결정하기 위해서 keras에서 구현한 InceptionResNetV2 을 참고하기로한다.
위의 github에서 구현되어있고, keras를 import 해서 불러올 수 있지만, 커스텀이 불가능한 단점이 있다.
또한 직접 구현하고 배워보는 시간이기 때문에, 위 코드를 보면서 Stem, Inception, Reduction 을 직접 구현해보고 한국음식 이미지 데이터셋에 맞게 커스텀해본다.
inception 논문에서의 구조와 keras inception 구조는 다르기때문에 둘다 구현해보기로한다.
목표 : keras.layers.Layer 을 상속받아 커스텀 layer 을 구현해 재사용가능한 방식으로 구축한다.
커스텀 layer 을 __init__ 및 call 에 구현하는 건 문제가 없는데, 모델을 저장하고 불러올때 커스텀 layer는 몇개의 제약사항을 받아서 위의 keras github에서 구현하는 방식으로 함수를 이용해서 각 모듈을 조립한다.
목표 : 각 모듈을 어느정도 커스텀 가능하도록 파라미터를 조절하면서 함수형태로 만든다.
기본 레이어 : conv2d, conv2d_bn, max_pool2d, avg_pool2d
인셉션 블록 : stem, block35 (Inception A) , block17 (inception B), block8 (inception C), reduction A, B
추가 블록 : se block
Inception 과 keras Inpcetion 의 모듈은 필터만 다르고 구조는 동일하기 때문에 필터만 바꿔서 구축한다.
모델을 구축하는 함수의 리턴값으로 모델객체를 반환하도록한다.
InceptionResNetV2, KerasInceptionResNetV2, KerasInceptionResNetV2SEBlock, SmallKerasInceptionResNetV2 를 사용했다.