반응형



1.

지난 포스팅에 이어서 Multi-Scale Context Aggregation by dilated convolutions 에 대한 코드를 잠깐 살펴보도록 해야겠다.


기본적인 소스는 https://github.com/nicolov/segmentation_keras 를 참고해서 돌려보았다.



이전에 얘기한것 처럼 본 논문은 context module과 frontend module(vggnet-16변형) 두개로 나눠지는데

각각에서 convolution net을 쓰는것이 아니라 dilated conv로 바꿔가면서 사용하는것이 특징이다


기본적이 input 사이즈와 output사이즈는 논문에 나와있는 방식을 그대로 따른다.

해당소스는 C=21로 고정하고 네트워크를 짰으며, Basic style이 아닌 논문에 나와있는 Large output channel로 소스가 구성이 된것만 알고 들어가면 쉽게 이해가 될것 이다.








dilated conv는 keras에서 기본적으로 제공해주는 api여서 더욱 쉽게 구현이 가능하다


소스코드의 대다수는 Convolution2D()함수를 사용해서 작성이 되었으나,

dilated conv는 AtrousConvolution2D()함수로만 바꿔주면 충분히 가능하다



conv: model.add(Convolution2D(64, 3, 3, activation='relu', name='conv1_1', input_shape=(input_width, input_height, 3))


dilated conv : model.add(AtrousConvolution2D(512, 3, 3, atrous_rate=(2, 2), activation='relu', name='conv5_2'))



해당 케라스 소스를 보기전에는 어떻게 dilated conv를 구현을 해야될까 걱정을 했었는데

소스를 보고나서 걱정이 사라졌다 ㅎㅎㅎ



그리고 하나 해당소스를 보면서 알게된것은 Pascal VOC라는 image segmentation전용 이미지데이터가 있다는 사실이다.

어떻게 segmentation을 학습을 시킬지 고민이었는데, 학습이 가능한 데이터셋이 있어서 다행이다.

좋은 세상이다. 이렇게 전부 학습이 가능하다니 말이다.


성능은 너무나 차이가 크다.

학습 데이터가 부족해서 그런거 같기도하다.





반응형

+ Recent posts