Deeplab là gì

Trong bài này, mình sẽ giới thiệu tổng quan về bài toán object segmentation. Bài toán này được chia thành hai loại: Semantic Segmentation và Instance Segmentation. Trong Semantic segmentation, chúng ta sẽ tìm mask của các object trong bức ảnh; các object này có thể có cùng nhãn hoặc khác nhãn, và ta không phân biệt các object của cùng nhãn. Bài toán instance segmentation phức tạp hơn một chút do chúng ta sẽ phải phân biệt các object của cùng một nhãn.

nguồn: //i.stack.imgur.com/MEB9F.png

Semantic Segmentation

  • Fully Connected Networks [FCNs]: Là một mạng CNN trong đó chỉ sử dụng các lớp pooling, conv và up-sampling mà không sử dụng các dense layer [fully connected layer]. Đặc điểm này giúp cho mô hình mạng có thể nhận input image có kích thước bất kỳ. Điều quan trọng trong một mạng segmentation là kích thước output phải giống với kích thước input. Do đó, FCNs bao gồm hai phần:
    • Downsampling: Khi đi qua các lớp pooling, conv kích thước của input bị giảm. Các lớp pool, conv sẽ extract thông tin về what [cái gì trong bức tranh].
    • Upsampling: Trong quá trình downsampling, thông tin sẽ bị mất mát. Do đó để khôi phục lại một phần thông tin bị mất, ta sẽ sử dụng các layer ở gần với layer input để lấy được thông tin về vị trí where.

Nguồn: //deeplearning.net/tutorial/fcn_2D_segm.html
    • Giả sử trong mạng trên, ta sử dụng padding=1, do đó kích thước các feature map sẽ không bị thay đổi khi đi qua lớp conv mà chỉ giảm một nửa khi đi qua các lớp pooling [stride=2]. Có 5 lớp pooling, lớp conv6-7 là conv 1×1 đóng vai trò thay thế fully connected layers [kỹ thuật bottle neck]. Do thông tin tại lớp conv6-7 này đã bị mất mát so với ảnh ban đầu, ta sử dụng thêm thông tin từ các lớp pool3,4 để giúp feature maps cuối cùng có được thông tin đầy đủ hơn cả về what và where. Nên nhớ, các lớp pooling này không cùng kích thước với lớp conv6-7 [vốn cũng bằng kích thước lớp pool5, chỉ khác số lượng feature maps], do đó, ta phải sử dụng kỹ thuật upsampling thông qua Transposed Convolution
    • Chi tiết cách sử dụng các lớp pool3,4 để upsampling

Nguồn: //deeplearning.net/tutorial/fcn_2D_segm.html

Nguồn: //deeplearning.net/tutorial/fcn_2D_segm.html
  • Google’s Deep lab v3+: Là một biến thể của FCN dựa trên hai cấu trúc mạng
    • SPP [Spatial Pyramid Pooling]
    • Encoder – Decoder Network.
    • Đặc biệt, các lớp conv được sử dụng là astrou convolution layer [Dilated Convolution]. Về cơ bản, nó khác với conv thông thường ở chỗ ta cho phép các node trong conv cách xa nhau.

Nguồn: //www.analyticsvidhya.com/blog/2019/02/tutorial-semantic-segmentation-google-deeplab/
    • Mô hình tổng quát của Deep lab v3+:

Nguồn: //www.analyticsvidhya.com/blog/2019/02/tutorial-semantic-segmentation-google-deeplab/
  • Unet: Là một mô hình mạng FCN với một số tính chất như đối xứng, khi upsampling thì dùng concat chứ không tính sum. Unet thường được ứng dụng trong ảnh y học.

Nguồn: //lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

Instance Segmentation

  • Mask RCNN: Dựa trên mô hình Faster RCNN trong đó có thay đổi là thêm một lớp binary classification để phân loại từng pixel của bức ảnh xem có thuộc vào một object hay không. Nếu pixel thuộc vào một object –> gán nhãn cho nó; nếu pixel thuộc nhiều object –> gán nhãn cho nó theo object có độ confidence cao nhất, và các pixel thuộc vào các bounding box khác nhau sẽ thuộc các instance khác nhau cho dù các bounding box này có cùng nhãn. Làm như vậy với tất cả các pixel của bức ảnh ta được instance segmentation!

Nguồn: //pythonawesome.com/a-pytorch-implementation-of-the-architecture-of-mask-rcnn/

Tài liệu tham khảo

Trong câu chuyện này, DeepLabv1DeepLabv2 được xem xét cùng nhau vì cả hai đều sử dụng Atrous ConvolutionFull Connected Conditional Random Field [CRF] ngoại trừ DeepLabv2 có một công nghệ bổ sung được gọi là Atous Spatial Pyramid Pooling [ASPP] , đây là điểm khác biệt chính so với DeepLabv1. [Tất nhiên, cũng có những khác biệt khác, ví dụ: DeepLabv2 sử dụng ResNet và VGGNet cho thử nghiệm nhưng DeepLabv1 chỉ sử dụng VGGNet .]

Hình trên là kiến ​​trúc mô hình DeepLab. Đầu tiên, hình ảnh đầu vào đi qua mạng với việc sử dụng tích chập và ASPP. Sau đó, đầu ra từ mạng được nội suy song tuyến và đi qua CRF được kết nối đầy đủ để tinh chỉnh kết quả và nhận được đầu ra cuối cùng.

DeepLabv1 và DeepLabv2 đã được xuất bản trong ICLR 2015 và TPAMI 2018 với khoảng 400 và 2000 trích dẫn tương ứng trong khi tôi viết câu chuyện này. [ Sik-Ho Tsang @ Medium]

Những gì được bảo hiểm

  1. Atrous Convolution
  2. Tổng hợp kim tự tháp không gian Atrous [ASPP]
  3. Trường ngẫu nhiên có điều kiện được kết nối đầy đủ [CRF]
  4. Các kết quả

Thuật ngữ “ Atrous ” thực sự xuất phát từ tiếng Pháp “ à trous ” có nghĩa là lỗ. Do đó, nó còn được gọi là “ thuật toán quần áo ” và “ thuật toán lỗ ”. Một số bài báo còn gọi đây là " tích chập giãn nở ". Nó thường được sử dụng trong biến đổi wavelet và ngay bây giờ nó được áp dụng trong các phép lặp để học sâu.

Dưới đây là phương trình của tích chập bất thường:

  • Khi r = 1, nó là tích chập chuẩn mà chúng ta thường sử dụng.
  • Khi r> 1, đó là tích chập không ổn định là bước lấy mẫu đầu vào trong quá trình tích chập.

Ý tưởng về tích chập bất thường rất đơn giản. Ở trên cùng của hình trên, nó là tích chập tiêu chuẩn.

Ở dưới cùng của hình, nó là tích chập. Chúng ta có thể thấy rằng khi rate = 2, tín hiệu đầu vào được lấy mẫu xen kẽ. Đầu tiên, pad = 2 có nghĩa là chúng ta đệm 2 số không ở cả hai bên trái và phải. Sau đó, với tỷ lệ = 2, chúng tôi lấy mẫu tín hiệu đầu vào mỗi 2 đầu vào cho tích chập. Do đó, ở đầu ra, chúng ta sẽ có 5 đầu ra làm cho bản đồ tính năng đầu ra lớn hơn.

Nếu chúng ta còn nhớ FCN , một loạt các phép chập và gộp làm cho bản đồ tính năng đầu ra rất nhỏ và cần lấy mẫu 32 lần, đây là một phép lấy mẫu tích cực.

Ngoài ra, tích chập bất thường cho phép chúng tôi mở rộng trường xem của các bộ lọc để kết hợp ngữ cảnh lớn hơn. Do đó, nó cung cấp một cơ chế hiệu quả để kiểm soát trường xem và tìm ra sự cân bằng tốt nhất giữa bản địa hóa chính xác [trường xem nhỏ] và đồng hóa ngữ cảnh [trường xem lớn].

Trong DeepLab, sử dụng VGG-16 hoặc ResNet-101, bước tích lũy cuối cùng [pool5] hoặc tích chập5_1 được đặt tương ứng thành 1 để tránh tín hiệu bị phân rã quá nhiều. Và tích chập bất thường được sử dụng để thay thế tất cả các lớp tích chập tiếp theo bằng cách sử dụng tỷ lệ = 2. Đầu ra lớn hơn nhiều . Chúng ta chỉ cần có 8 × upsampling để lấy mẫu đầu ra. Và nội suy song tuyến có hiệu suất khá tốt cho 8 × upsampling.

2. Tổng hợp kim tự tháp không gian Atrous [ASPP]

ASPP thực sự là một phiên bản tồi tệ của SPP , trong đó khái niệm này đã được sử dụng trong SPPNet . Trong ASPP, tích chập song song với tỷ lệ khác nhau được áp dụng trong bản đồ tính năng đầu vào và hợp nhất với nhau.

Vì các đối tượng của cùng một lớp có thể có các tỷ lệ khác nhau trong hình ảnh, ASPP giúp tính các tỷ lệ đối tượng khác nhau có thể cải thiện độ chính xác.

3. Trường ngẫu nhiên có điều kiện được kết nối đầy đủ [CRF]

CRF được kết nối đầy đủ được áp dụng ở đầu ra mạng sau khi nội suy song tuyến:

x là gán nhãn cho pixel. P [xi] là xác suất gán nhãn tại pixel i. Do đó số hạng đầu tiên θi là xác suất log.

Đối với thuật ngữ thứ hai, θij, nó là một bộ lọc. µ = 1 khi xi! = xj. µ = 0 khi xi = xj. Trong dấu ngoặc, nó là tổng trọng số của hai hạt nhân. Các hạt nhân đầu tiên phụ thuộc vào chênh lệch giá trị pixel và chênh lệch vị trí pixel, đó là một loại bộ lọc song phương . Bộ lọc song phương có đặc tính bảo toàn các cạnh. Nhân thứ hai chỉ phụ thuộc vào sự khác biệt về vị trí pixel, đó là một bộ lọc Gaussian . Những σ và w, được tìm thấy bằng cách xác nhận chéo. Số lần lặp là 10.

Với 10 lần CRF, những vùng nhỏ có màu sắc khác nhau xung quanh máy bay sẽ được làm mịn thành công.

Tuy nhiên, CRF là một quá trình xử lý hậu kỳ khiến DeepLabv1 và DeepLabv2 không trở thành một khung học tập end-to-end . Và nó KHÔNG được sử dụng trong DeepLabv3 và DeepLabv3 + rồi .

4. Kết quả

  • ResNet-101 đơn giản nhất : 68,72%
  • MSC : Đầu vào nhiều quy mô
  • COCO : Các mô hình được đào tạo trước bởi tập dữ liệu COCO
  • Tháng 8 : Tăng dữ liệu bằng cách chia tỷ lệ ngẫu nhiên các hình ảnh đầu vào [từ 0,5 đến 1,5]
  • LargeFOV : DeepLab sử dụng tích chập một lần vượt qua
  • ASPP: DeepLab sử dụng các chập trùng lặp song song
  • CRF : CRF được kết nối đầy đủ khi xử lý hậu kỳ.

Bốn bộ dữ liệu cũng được kiểm tra như trên. Nó được chỉ ra rằng DeepLabv2 có kết quả cạnh tranh so với các phương pháp tiếp cận hiện đại.

4.3. Kết quả định tính

Nhưng DeepLab cũng có một số ví dụ thất bại trong đó xe đạp và ghế bao gồm nhiều bộ phận mỏng như bộ phận của chân xe đạp và ghế:

Hy vọng tôi có thể cover DeepLabv3 và DeepLabv3 + trong tương lai.

Người giới thiệu

  1. [2015 ICLR] [DeepLabv1]
    Phân đoạn hình ảnh ngữ nghĩa với các bộ kết nối sâu và CRF được kết nối đầy đủ
  2. [TPAMI 2018] [DeepLabv2]
    DeepLab: Phân đoạn hình ảnh ngữ nghĩa với các tổ hợp mạng sâu, chuyển đổi nhanh và CRF được kết nối đầy đủ

[ SPPNet ] [ VGGNet ] [ ResNet ] [ FCN ]

Video liên quan

Chủ Đề