VGG16 LÀ GÌ, KIẾN TRÚC CÁC MẠNG CNN NỔI TIẾNG

Convolutional neural network là một trong những mạng neural được ứng dụng tương đối nhiều trong deep learning vào computer vision đến classifier cùng localizer . Từ mạng CNN cơ bạn dạng bạn ta có thể tạo thành không hề ít architect không giống nhau, tự phần đa mạng neural cơ bản 1 mang lại 2 layer mang lại 100 layer. Đã khi nào chúng ta trường đoản cú hỏi đề nghị áp dụng bao nhiêu layer, yêu cầu phối kết hợp conv với maxpooling cầm cố nào? conv-maxpooling giỏi conv-conv-maxplooling ? hay cần áp dụng kernel 3x3 tốt 5x5 thậm chí là 7x7 điểm biệt lập là gì ? Làm gì Lúc Mã Sản Phẩm bị vanishing/exploding gradient, hay tại sao thi thêm những layer hơn thế thì theo kim chỉ nan accuarcy phải cao hơn đối với shallow Mã Sản Phẩm, mà lại thực tế lại chưa phải accuarcy ko tăng thậm chí là giảm kia gồm bắt buộc nguyên ổn nhân vì chưng overfitting .Trong bài viết này ta sẽ tò mò các architure danh tiếng để xem cấu tạo của chính nó ra làm sao, những ý tưởng về CNN tiên tiến nhất hiện nay từ đó ta rất có thể trả lời được mấy thắc mắc bên trên.

Bạn đang xem: Vgg16 là gì, kiến trúc các mạng cnn nổi tiếng

*

Hình 1. The evolution of CNN.

1.LeNet(1998). LeNet là một trong trong số những mạng CNN lâu đời danh tiếng nhất được Yann LeCUn cải tiến và phát triển vào những năm 1998s. Cấu trúc của LeNet có 2 layer (Convolution + maxpooling) và 2 layer fully connected layer với output là softmax layer . Chúng ta cùng khám phá cụ thể architect của LeNet so với dữ liệu mnist (accuracy lên đến mức 99%).
*

Hình 2. LeNet(1998).

Input shape 28x28x3 Layer 1 : Convolution layer 1 : Kernel 5x5x3 , stride = 1,no padding, number filter = 6 ,output = 28x28x6. Maxpooling layer : pooling kích thước 2x2,stride = 2,padding = “same”,output = 14x14x6. Layer 2 : Convolution layer 2 : kernel 5x5x6,stride = 1, no padding, number filter = 16,output = 10x10x16. Maxpooling layer : pooling kích thước = 2x2, stride = 2, padding =”same”,output = 5x5x16. Flatten output = 5x5x16 = 400 Fully connected 1 : output = 1trăng tròn Fully connected 2 : output = 84 Softmax layer, output = 10 (10 digits).Nhược điểm của LeNet là mạng còn hết sức đơn giản và dễ dàng cùng áp dụng sigmoid (or tanh) sinh sống từng convolution layer mạng tính toán khôn xiết lừ đừ.2. Alexnet(2012). AlexNet là 1 trong những mạng CNN đã dành thành công trong cuộc thi ImageNet LSVRC-201hai năm 2012 cùng với large margin (15.3% VS 26.2% error rates). AlexNet là 1 trong những mạng CNN traning với một vài lượng parameter không hề nhỏ (60 million) đối với LeNet. Một số quánh điểm: Sử dụng relu thay mang lại sigmoid(or tanh) để xử trí cùng với non-linearity. Tăng tốc độ tính toán lên 6 lần. Sử dụng dropout nlỗi một phương thức regularization bắt đầu đến CNN. Dropout ko hầu như góp mô hình tránh khỏi overfitting cơ mà còn khiến cho sút thời hạn đào tạo và giảng dạy quy mô Overlap pooling nhằm sút form size của network ( Traditionally pooling regions ko overlap). Sử dụng local response normalization nhằm chuẩn chỉnh hóa sinh sống mỗi layer. Sử dụng nghệ thuật data augmentation nhằm sinh sản them data training bằng phương pháp translations, horizontal reflections. Alexnet training cùng với 90 epochs trong 5 đến 6 ngày cùng với 2 GTX 580 GPUs. Sử dụng SGD với learning rate 0.01, momentum 0.9 với weight decay 0.0005.
*

Hình 3. Alexnet(2012).

Architect của Alexnet tất cả 5 convolutional layer với 3 fully connection layer. Activation Relu được áp dụng sau từng convolution cùng fully connection layer. Detail architecter với datamix là imagenet kích cỡ là 227x227x3 cùng với 1000 class ( không giống với trong hình trên kích thước là 224x224): Input shape 227x227x3. Layer 1 : Conv 1 : kernel : 11x11x3,stride = 4,no padding, number = 96,activation = relu,output = 55x55x96. Maxpooling layer : pooling kích thước = 3x3,stride = 2,padding =”same” ,output = 27x27x96. Normalize layer. Layer 2 : Conv 2 : kernel :3x3x96,stride = 1, padding = “same”, number filter = 256,activation = relu,output = 27x27x256. Maxpooling layer : pooling form size = 3x3,stride=2, padding =”same”,output = 13x13x256. Normalize layer. Layer 3: Conv 3 : kernel :3x3x256, stride = 1,padding=”same”, number filter = 384, activation = relu, output = 13x13x384. Layer 4: Conv 4 : kernel : 3x3x384 , stride = 1, padding = “same”, number filter = 384, activation= relu, output = 13x13x384 Layer 5 : Conv 5 : kernel 3x3x384, stride = 1, padding = “same”, number filter = 256, activation = relu, output = 13x13x256. Pooling layer : pooling form size = 3x3,stride =2,padding =”same”,output = 6x6x256. Flatten 256x6x6 = 9216 Fully connected layer 1 : activation = relu , output = 4096 + dropout(0.5). Fully connected layer 2 : activation = relu , output = 4096 + dropout(0.5). Fully connected layer 3 : activation = softmax , output = 1000 (number class)3.ZFNet(2013)

ZFNet là 1 mạng cnn win vào ILSVRC 2013 với top-5 error rate của 14.8% . ZFNet tất cả cấu tạo khôn cùng tương đương với AlexNet cùng với 5 layer convolution , 2 fully connected layer cùng 1 output softmax layer. Khác biệt tại vị trí kernel size sinh sống mỗi Conv layer .Một số điểm lưu ý chính :

Tương tự AlexNet tuy nhiên gồm một số kiểm soát và điều chỉnh nhỏ. Alexnet training bên trên 15m image trong những khi ZF training chỉ có 1.3m image. Sử dụng kernel 7x7 sống first layer (alexnet 11x11).Lý do là sử dụng kernel nhỏ tuổi rộng nhằm lưu lại nhiều thông tin bên trên image rộng. Tăng con số filter nhiều hơn đối với alexnet Training trên GTX 580 GPU vào 20 ngày
*

Hình 4. ZFNet(2013).

Input shape 224x224x3 . Layer 1 : Conv 1 : kernel = 7x7x3, stride = 2, no padding, number filter = 96, output = 110x110x96. Maxpooling 1 : pooling kích thước = 3x3,stride=2, padding = “same”,output = 55x55x96 Normalize layer. Layer 2 : Conv 2 : kernel = 5x5x96, stride = 2, no padding, number filter = 256, output = 26x26x256. Maxpooling 2 : pooling kích thước = 3x3, stride=2, padding = “same”,output = 13x13x256 Normalize layer. Layer 3: Conv 3 : kernel = 3x3x256, stride=1, padding=”same”, number filter = 384,output = 13x13x384. Layer 4 : Conv 4 : kernel = 3x3x384, stride=1, padding=”same”, number filter = 384,output = 13x13x384. Layer 5 : Conv 5 : kernel = 3x3x384, stride=1, padding=”same”, number filter = 256,output = 13x13x256. Maxpooling : pooling kích cỡ = 3x3,stride =2,padding =”same”,output = 6x6x256. Flatten 6x6x256 = 9216 Fully connected 1 : activation = relu,output =4096 Fully connected 2 : activation = relu,output =4096 Softmax layer for classifier ouput = 10004.VGGNet(2014). Sau AlexNet thì VGG ra đời cùng với một trong những nâng cao hơn , trước tiên là Model VGG sẽ deeper rộng, tiếp sau là đổi khác vào thứ trường đoản cú conv. Từ LeNet mang lại AlexNet những áp dụng Conv-maxpooling còn VGG thì sử dụng 1 chuỗi Conv liên tiếp Conv-Conv-Conv nghỉ ngơi middle và end của architect VGG. Việc này đang khiến cho vấn đề tính toán trở cần lâu dài nhưng mà hầu như feature đã vẫn được bảo quản nhiều hơn thế so với việc sử dụng maxpooling sau mỗi Conv. hơn nữa hiện thời với việc Ra đời của GPU giúp vận tốc tính toán thù trlàm việc đề nghị nkhô nóng hơn rất nhiều lần thì vấn đề này không thể xứng đáng lo lắng. VGG mang đến small error rộng AlexNet vào ImageNet Large Scale Visual Recognition Challenge (ILSVRC) năm 2014. VGG tất cả 2 phiên bạn dạng là VGG16 và VGG19.
*

Hình 5. VGGNet(2014).

Architect của VGG16 bao hàm 16 layer :13 layer Conv (2 layer conv-conv,3 layer conv-conv-conv) đều phải có kernel 3x3, sau mỗi layer conv là maxpooling downkích cỡ xuống 0.5, cùng 3 layer fully connection. VGG19 tương tự như như VGG16 nhưng lại gồm thêm 3 layer convolution sinh sống 3 layer conv cuối ( thành 4 conv stack cùng với nhau). Detail parameter VGG16
*

Hình 15. VGG16

Sử dụng kernel 3x3 ráng bởi vì 11x11 sống alexnet(7x7 ZFNet). Kết thích hợp 2 conv 3x3 bao gồm hiểu quả hơn 1 cov 5x5 về receptive sầu field giúp mạng deeper hơn lại sút tđê mê số tính toán cho Model. 3 Conv 3x3 bao gồm receptive sầu field same 1 conv 7x7. Input kích cỡ giảm dần qua các conv tuy vậy tăng số chiều sâu. Làm vấn đề rất tốt đến task classifier và localizer ( vô cùng hay được sử dụng trong object detection). Sử dụng relu sau mỗi conv với training bằng batch gradient descent. Có thực hiện data augmentation technique trong quá trình training. Training với 4 Nvidia Tichảy Black GPUs vào 2-3 tuần.5.GoogleNet(2014). Năm 2014, google publish một mạng neural bởi vì team retìm kiếm của họ cách tân và phát triển có tên là googleNet. Nó performance tốt hơn VGG, googleNet 6.7% error rate trong lúc VGG là 7.3% Ý tưởng đó là họ tạo nên một module bắt đầu có tên là inception góp mạng traning sâu và nkhô cứng hơn, chỉ gồm 5m tmê mệt số đối với alexnet là 60m nkhô hanh hơn vội vàng 12 lần. Inception module là một trong mạng CNN góp training wider(cầm cố vày them những layer rộng vì chưng rất đơn giản xẩy ra overfitting + tăng parameter bạn ta nghĩ về ra tăng deeper làm việc mỗi tầng layer) so với mạng CNN thông thường. Mỗi layer vào CNN truyền thống cuội nguồn sẽ extract những báo cáo khác nhau. đầu ra của 5x5 conv kernel sẽ không giống với 3x3 kernel. Vậy để mang phần đa lên tiếng quan trọng cho bài xích tân oán của bọn họ thì nên cần sử dụng kernel kích cỡ ra sao ? Tại sao chúng áp dụng tất cả ta với tiếp nối để model tự chọn. Đó chính là phát minh của Inception module, nó tính tân oán các kernel form size khác biệt xuất phát điểm từ 1 đầu vào tiếp nối concatenate này lại thành output.
*

Hình 6. Inception.

Trong inception fan ta dùng conv kernel 1x1 với 2 mục tiêu là bớt tsay mê số tính tân oán và dimensionality reduction . Dimensionality reduction hoàn toàn có thể hiểu có tác dụng giảm depth của input đầu vào (vd iput 28x28x100 qua kernel 1x1 với filter = 10 vẫn bớt depth về còn 28x28x10). Giảm ngân sách tính tân oán có thể hiểu qua ví dụ sau : Input shape 28x28x192 qua kernel 5x5 với 32 thì ouput là 28x28x32(padding same) thì tham số tính toán thù là (5x5x192)*(28x28x32)=1trăng tròn million Input shape 28x28x192 qua kernel 1x1x192 filter = 16 , output = 28x28x16 thường xuyên với kernel 5x5x32 filter = 16 đươch output = 28x28x32. Tổng tham số tính tân oán : (28x28x16)192 + (28x28x32)(5x5x16) = 2.4 + 10 = 12.4 million.Ta thấy cùng với cùng output là 28x28x32 thì nếu như sử dụng kernel 5x5x192 cùng với 32 filter thì sẽ có được tham số vội 10 lần so với thực hiện kernel 1x1x192 kế tiếp cần sử dụng tiếp 1 kernel 5x5x16 cùng với filter 32.Inception hiện nay bao gồm 4 version , ta sẽ cùng mày mò sơ qua các version: Inception v1 : tất cả 2 dạng là naïve sầu và dimension reduction. Khác biệt thiết yếu chính là version dimension reduction nó sử dụng conv 1x1 ngơi nghỉ mỗi layer nhằm bớt depth của đầu vào góp Model bao gồm không nhiều tđê mê số rộng. Inception naïve có architect tất cả 1x1 conv,3x3 conv, 5x5 conv và 3x3 maxpooling.
*

Hình 7. Inception V1.

Xem thêm: Những Điều Bạn Chưa Biết Về Cung Hoàng Đạo Nhóm Nước, Nhóm Nước Trong Chiêm Tinh Học

Inception v2 : Cải thiện version 1, thêm layer batchnormalize và giảm Internal Covariate Shift. Ouput của mỗi layer sẽ tiến hành normalize về Gaussian N(0,1). Conv 5x5 sẽ tiến hành sửa chữa thay thế bởi 2 conv 3x3 nhằm giảm computation cost.
*

Hình 8. Inception V2.

Inception v3 : Điểm đáng chăm chú sinh sống version này là Factorization. Conv 7x7 sẽ được bớt về conv 1 dimesion là (1x7),(7x1). Tương từ bỏ conv 3x3 (3x1,1x3). Tăng vận tốc tính toán. Lúc bóc ra 2 conv thì làm mã sản phẩm deeper rộng.
*

Hình 9. Inception V3.

Inception v4 : là việc kết hợp inception với resnet.Detail googleNet architect :
*

Hình 10. GoogleNet.

GoogleNet bao gồm 22 layer, bắt đầu vẫn chính là phần đa simple convolution layer, tiếp theo là đều bloông xã của inception module cùng với maxpooling theo sau mỗi block. Một số Đặc điểm chủ yếu. Sử dụng 9 Inception module bên trên toàn cục architect. Làm model deeper hơn tương đối nhiều. Không áp dụng fully connection layer nhưng chũm vào chính là average pooling tự 7x7x1024 volume thành 1x1x1024 volume giảm tphát âm được không hề ít parameter. Ít hơn 12x parameter so với Alexnet. Auxiliary Loss được add vào total loss(weight =0.3). Nhưng được vứt bỏ Lúc thử nghiệm. 6.ResNets(2015). ResNet được phát triển bởi microsoft năm 2015 với paper “ Deep residual learning for image recognition”. ResNet winer ImageNet ILSVRC competition 2015 cùng với error rate 3.57% ,ResNet có cấu tạo gần giống VGG với khá nhiều stachồng layer tạo nên model deeper hơn. Không giống VGG, resNet gồm depth sâu hơn như 34,55,101 và 151 . Resnet xử lý được vụ việc của deep learning truyền thống lịch sử , nó hoàn toàn có thể dễ dãi training Mã Sản Phẩm cùng với hàng trăm ngàn layer. Để hiểu ResNet họ phải gọi vấn đề Lúc staông chồng các layer Lúc training, sự việc đầu tiên Lúc tăng Mã Sản Phẩm deeper rộng gradient sẽ ảnh hưởng vanishing/explodes. Vấn đề này rất có thể xử lý bằng phương pháp thêm Batch Normalization nó giúp normalize output góp những hệ số trsinh sống nên cân đối hơn không quá bé dại hoặc quá rộng buộc phải để giúp đỡ Model dễ hội tụ hơn. Vấn đề thứ 2 là degradation, lúc model deeper accuracy bắt đầu bão hòa(saturated) thậm chí là là sút. Như hình mẫu vẽ bên dưới lúc stachồng những layer hơn vậy thì training error lại cao hơn không nhiều layer những điều đó vấn đề chưa hẳn là vì overfitting. việc này là vì Model không dễ training nặng nề học hơn, demo tượng tượng một training một shallow model, sau đó chúng ta stachồng thêm nhiều layer , những layer sau khi cung ứng sẽ không học thêm được gì cả (identity mapping) buộc phải accuracy sẽ giống như nhỏng shallow Mã Sản Phẩm mà ko tăng. Resnet được Thành lập và hoạt động để xử lý vấn đề degradation này.
*

Hình 11. Compare accuracy with

ResNet tất cả architecture gồm nhiều residual bloông xã, ý tưởng phát minh chính là skip layer bằng phương pháp add connection cùng với layer trước. Ý tưởng của residual blochồng là feed foword x(input) qua một vài layer conv-max-conv, ta nhận được F(x) tiếp nối add thêm x vào H(x) = F(x) + x . Model đã dễ dàng học rộng khi họ thêm feature trường đoản cú layer trước vào.
*

Hình 12. ResNets bloông chồng.

Sử dụng batch Normalization sau mỗi Conv layer. Initialization Xavier/2 Training cùng với SGD + momentum(0.9) Learning rate 0.1, bớt 10 lần ví như error ko bớt Mini batch kích cỡ 256 Weight decay 10^-5 Không sử dụng dropout
*

Hình 13. ResNets(2015).

7.Densenet(2016) Densenet(Dense connected convolutional network) là một trong những Một trong những netwok mới nhất mang đến visual object recognition. Nó cũng gần giống Resnet tuy thế gồm một vài điểm biệt lập. Densenet bao gồm kết cấu bao gồm các dense blochồng với những transition layers. Được staông xã dense block- transition layers-dense block- transition layers nlỗi hình vẽ. Với CNN truyền thống lâu đời giả dụ họ bao gồm L layer thì sẽ có được L connection, còn trong densenet sẽ có L(L+1)/2 connection.
*

Hình 14. Densenet(2016).

Hãy tưởng tượng ban sơ ta có 1 image form size (28,28,3). Trước tiên ta khởi chế tạo feature layer bởi Conv tạo thành 1 layer kích thước (28,28,24). Sau mỗi layer tiếp theo sau (Trong dense bloông xã ) nó sẽ khởi tạo thêm K= 12 feature thân nguim width với height. khi đó output tiếp theo sẽ là (28,28,24 +12),(28,28,24 +12+12). Ở từng dense block sẽ có normalization, nonlinearity cùng dropout. Để giảm kích cỡ với depth của feature thì transition layer được đặt giữa các dense block, nó gồm Conv kernel form size =1, average pooling (2x2) cùng với stride = 2 nó đã bớt output thành (14,14,48)
*
Detail parameter :
*
Một số ưu điểm của Densenet: Accuracy : Densenet training tsi số ít hơn 1 nửa so với Resnet mà lại gồm same accuracy so bên trên ImageNet classification dataphối. Overfitting : DenseNet resistance overfitting hết sức công dụng. Giảm được vashing gradient. Sử dụng lại feature hiệu quả rộng. Kết bài bác : Trên trên đây chỉ với phần nắm lược sơ qua những architect khét tiếng của CNN. Bên trong các số ấy còn có không ít cấu tạo tinh vi vì thời hạn cũng giống như kiến thức hạn chế cần vẫn không viết sâu hết được. Ngoài ra còn có khá nhiều không đúng sót khôn xiết ao ước bạn đọc góp ý để bản thân hoàn toàn có thể hoàn thành xong nội dung bài viết hơn. Tđắm đuối khảo : Deep learning course : Andrew Ng An Intuitive sầu Guide to Deep Network Architectures : Joyce Xu A Simple Guide khổng lồ the Versions of the Inception Network :Bharath Raj CS231n: Convolutional Neural Networks for Visual Recognition Paper : All paper about lenet,alexnet,vgg,googlenet,resnet,densenet Notes on the Implementation of DenseNet in TensorFlow. The Efficiency of Densenet