Densenet la gì
A Dense Block is a module used in convolutional neural networks that connects all layers (with matching feature-map sizes) directly with each other. It was originally proposed as part of the DenseNet architecture. To preserve the feed-forward nature, each layer obtains additional inputs from all preceding layers and passes on its own feature-maps to all subsequent layers. In contrast to ResNets, we never combine features through summation before they are passed into a layer; instead, we combine features by concatenating them. Hence, the $\ell^{th}$ layer has $\ell$ inputs, consisting of the feature-maps of all preceding convolutional blocks. Its own feature-maps are passed on to all $L-\ell$ subsequent layers. This introduces $\frac{L(L+1)}{2}$ connections in an $L$-layer network, instead of just $L$, as in traditional architectures: "dense connectivity". Source: Densely Connected Convolutional Networks
Papers
TasksUsage Over TimeThis feature is experimental; we are continuously improving our matching algorithm. Categories Image classification có lẽ là bài toán đầu tiên được giải quyết bằng deeplearning. Các mô hình nổi tiếng như: ResNet, Alexnet, LeNet, VGG, Inception, R-CNN, Fast/Faster RCNN, … Tôi sẽ không trình bày về các thành phần cơ bản như CNN, MaxPooling, ReLU… mà sẽ phân tích các kiến trúc mạng và các kĩ thuật đã được sử dụng. 1. LeNet (1998)LeNet được Yann LeCun phát triển vào năm 1998. Cấu trúc gồm 2 layer (Convolution + MaxPooling và 2 layer fully connected cùng output layer là softmax. Input: 28x28x3 Nhược điểm của LeNet là mạng còn đơn giản và sử dụng activation function là sigmoid nên tính toán chậm. 2. AlexNet (2012)AlexNet là mạng CNN giành chiến thắng trong cuộc thi ImageNet LSVRC-2012 với kết quả 15.3% VS 26.2% error rates. Mạng AlexNet khá lớn với 60 triệu tham số và có một số đặc điểm.
Architect của Alexnet gồm 5 convolutional layer và 3 fully connection layer. Activation Relu được sử dụng sau mỗi convolution và fully connection layer. Detail architecter với dataset là imagenet size là 227x227x3 với 1000 class ( khác với trong hình trên size là 224×224): Input shape 227x227x3. Layer 1 : 3. VGGNet (2014)VGGNet ra đời với một vài cải tiến tốt hơn như
VGG có 2 phiên bản VGG16 và VGG19 với chi tiết như bảng bên dưới: 4. GoogleNet(2014) Đây là mạng của Google phát triển cho kết quả tốt hơn so với VGG (6.7% vs 7.3 % error rate). Ý tưởng mới là sử dụng một module mới là inception giúp mạng train nhanh hơn và sâu hơn chỉ với 5 triệu tham số. Trong GoogleNet người ta dùng Conv 1×1 với 2 mục đích là giảm tham số và giảm số chiều. Giảm số chiều tức là với đầu vào 28x28x100 khi đi qua Conv 1×1 với filters=10 sẽ cho đầu ra 28x28x10. Giảm tham số tính toán ví dụ:
Inception hiện tại có tới 4 phiên bản. Ta sẽ đi tìm hiểu từng phiên bản: Inception v1: có 2 dạng là naive và dimension reduction. Điểm khác biệt là có hay không có sử dụng thêm Conv 1×1. Inception v2: cải thiện so với v1 bằng cách thêm Batch nomalization layer và giảm internal covariance shift. Đầu ra ở mỗi layer sẽ được chuẩn hóa về phân phối Gaussian chuẩn. Conv 5×5 được thay thế bằng 2 Conv 3×3 giúp giảm chi phí tính toán Inception v3: thay thế các Conv 7×7 thành Conv 1×7 và 7×1, Conv 3×3 thành Conv 1×3 và 3×1. Điều này giúp tăng tốc độ tính toán và model sâu hơn Inception v4: là sự kết hợp của Inception và ý tưởng trong Resnet. 5. ResNet(2015) ResNet được phát triển bởi Microsoft và chiến thắng cuộc thi ImageNet ILSVRC 2015 với error rate 3.57%. Resnet có kiến trúc mạng rất sâu như 34, 55, 101, 151. Với module Residual giúp cho dễ dàng tạo các mạng với hàng trăm layer. Đối với DL model đều bị 2 vấn đề: mạng quá sâu sẽ làm gradien vanishing ( có thể giải quyết bằng thêm Batch normalization layer) và model saturated. Model saturated là do việc thêm nhiều layer vào mà vẫn không học được thông tin mới để nâng cao độ chính xác. Residual block cho phép skip layer bằng cách thêm connection với layer trước nó. Thay vì tính như thông thường thì với việc thêm input vào sẽ giúp cho sinh ra một thay đổi nhỏ trong model đồng thời phép tích đạo hàm trong bước backward cũng dễ dàng vì chỉ là phép cộng. Kiến trúc mạng của ResNet như hình dưới 6. DenseNet (2016) Một khối Dense-block là một nhóm các layers kết nối tới tất cả các layer trước nó. Một layer bao gồm:
Các tác giả thấy rằng việc sử dụng pre-activation (BN và ReLU trước Conv) hiệu quả hơn so với post-activation. Không giống như ResNet, DenseNet ghép tất cả các feature map lại với nhau. Mặt khác không thể ghép khi feature map khác kích thước. Do đó trong các Dense block, feature map ở mỗi layer có cùng kích thước. Tuy nhiên việc downsampling vốn do CNN thực hiện. Trong DenseNet sẽ do các transition layer đảm nhiệm. Kiến trúc gồm
Cần chú ý một điểm đó là do phép ghép feature map làm cho đầu ra có rất nhiều chiều. Ví dụ nếu layer H_1 cho k feature maps thì tổng quát tới layer thứ l sẽ có k_0 + k * (l — 1). Tham số k được gọi là growth rate. DenseNet standard: DenseNets-B: là dạng chuẩn, sử dụng 1×1 Conv để giảm kích thước feature map trước khi đưa vào 3×3 Conv. Chữ B chính là Bottleneck trong mạng ResNet.
DenseNets-BC: là một sự cải tiến của DenseNets-B trong đó giảm bớt số lượng feature maps. Hệ số theta được sử dụng để khống chế số lượng feature maps = theta * m. Kiến trúc của mạng DenseNet như trong hình. Tổng kết Độ chính xác các model tới năm 2017 |