Introduction
Như các bạn đã biết thì very deep CNN có thể phân loại các object rất tốt, ngoài ra thì CNN cũng có ứng dụng vào image segmenation nữa. Post này chúng ta sẽ tìm hiểu xem. Mạng CNN sẽ segmentation image như thế nào? Mình viết bài này vì rất tò mò muốn biết ý tưởng segmen image sử dụng CNN ra sao?
Hãy xem ví dụ một bức ảnh dưới đây và mục tiêu chúng ta muốn segmentation.
Fully Convolutional network for segmentation
Một mạng fully convolutional neural network (FCN) là một mạng CNN, với layer fully connected cuối được thay thế bởi lớp tích chập khác với một large “receptive field”. Ý tưởng là chụp lại nội dung tổng thể của bức hình.
Ý tưởng ở đây là khi chuyển từ mạng CNN sang FCN, chúng ta chọn layer cuối cùng đủ lớn khi đó chúng ta sẽ có thể scaled up nên kích thước của input image.
Conversion from normal CNN to FCN
Ý tưởng là vậy, giờ chúng ta hãy xem cách convert một mạng CNN sang FCN. Ở ví dụ này chúng ta sẽ convert mạng Alexnet to FCN để sử dụng cho việc segmentation. Chúng ta hãy xem lại kiến trúc của mạng Alexnet
Hình dưới đây là số lượng tham số trong mạng Alexnet
Trong mạng Alexnet, kích thước ảnh được cố định 224x224, vậy nên tác động của pooling sẽ làm giảm kích thước ảnh từ 224x224 thành các kích thước 55x55, 27x27, 13x13, sau đó đến cuối cùng là một vector ở FC layer
OK! giờ thì các bạn đã hình dung lại được mạng Alexnet. Hãy xem những bước cần thiết để convert
Step 1: Start với mạng CNN cho bài toán classification
Step 2: Bước này chúng ta convert all cả những FC layer bằng convolution layer 1x1 và không cần thay đổi trọng số (weights) tại đây.
Bài viết mình lược dịch từ https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/image_segmentation.html