- vừa được xem lúc

[Paper Explain] Contrastive Learning for Label-Efficient Semantic Segmentation

0 0 32

Người đăng: Trung Đức

Theo Viblo Asia

Lời mở đầu

Tiếp nối việc phân tích paper, hôm nay mình sẽ cùng các bạn phân tích 1 paper liên quan dến bài toán Semantic Segmentation và phương pháp Contrastive learning. Đường dẫn bài báo gốc mình để ở đây

Một số khái niệm cơ bản

  • Học tự giám sát (Self-supervised learning): Hiểu đơn giản là ngoài việc sử dụng các nhãn (labels) do chính cong người gán nhãn, mô hình sẽ sử dụng thêm 1 lượng lớn các dữ liệu do chính nó gán nhãn cho việc học tập ở các bước và giai đoạn tiếp theo.
  • Học tập liên tục (Contrastive learning): Là một kỹ thuật học máy mà mục tiêu là tìm những thứ tương tự và khác nhau trong 1 tập dữ liệu không có nhãn. Bản chất là dạy cho mô hình những điểm nào giống nhau hoặc khác nhau. Một ứng dụng cơ bản là nó có thể sử dụng trên cơ sở dữ liệu hình ảnh để tìm ra các hình ảnh có nét tương đồng
  • Pixel-wise: ý nói tính toán trên cấp độ pixel. Ví dụ gán nhãn là không phải gán nhãn trên từng vùng, mà là gán nhãn trên từng pixel

Giới thiệu bài toán

Trong quá khứ, các bào toán phân đoạn ngữ nghĩa (Semantic segmentation) tiếp cận dựa trên Convolution Neural Network (CNN) với bộ dữ liệu tiêu biểu là ImageNet, sau đó sử dụng Pretrained-model này để fine-tuning chúng với một lượng lỡn nhãn cấp độ pixels. Có thể thấy rõ một vài nhược điểm lớn đối với các cách tiếp cận này

  • Thời gian để gãn nhãn là vô cũng tốn kém. Ví dụ thời gian trung bình để thực hiện gán nhãn 1 hình ảnh tỏng tập Cityscapes là 90 phút (gán nhãn mức độ pixel)
  • Tập ImageNet chỉ phù hợp với nghiên cứu phi thương mại, không phù hợp với các bài toán thực. Việc thu taahjp một tập dữ liệu lớn như ImageNet với từng bài toán là rất tốn kém và mất thời gian

Các mô hình Semantic Segmentation điểm hình bao gồm 1 mạng CNN để trich xuất đặc trưng, sau đó là 1 trình phân loại pixel-wise softmax cùng với hàm loss pixel-wise cross-entropy. Khi thử nghiệm đào tạo mô hình với một lượng lớn ảnh được gãn nhãn cấp độ pixel, hiệu suất mô hình giảm khi số lượng ảnh có nhãn giảm. Điều này minh chứng cho việc CNN được training với cross-entropy loss có thể dễ dàng overfitting với một lượng nhỏ dữ liệu có nhãn, bởi hàm cross-entropy tập trung phân ranh giới giữa các lớp mà bỏ qua các mối quan hệ giữa các pixels.

Để khắc phục điều này, đã có một số bài báo đề xuất sử dụng các hàm loss phụ thuộc vào vùng (region-based loss), có thể kể tới như Region mutual information loss, Affinity field loss.

Tuy nhiên các hàm loss này chỉ mô hình hóa các mối quan hệ giữa các pixel trong 1 vùng lân cận cục bộ. Bởi vậy bài báo đã đề xuất ra hàm loss, tạm gọi là Contrastive loss. Hàm loss này có chức năng khuyến khích những pixels trong cùng 1 lớp thì giống nhau, pixel khác lớp thì khác nhau bất kể vị trí của chúng trên ảnh (Mục tiêu giống Contrastive learning nên gọi là contrastive loss).

Mô hình đề xuất

image.png

Ý tưởng chính được đề xuất bao gồm:

  • Đào tạo trước mô hình trích xuất đặc trưng sử dụng Pixel-wise Label-based contrastive loss (contrastive pretraining)
  • Fine-tune lại toàn bộ mạng bao gồm bộ phân loại pixel-wise softmax bằng cách sử dụng CE loss (softmax fine-tuning)

Cụ thể, các bước thực hiện bao gồm:

  • Đào tạo mô hình CNN với mục tiêu trích xuất đặc trưng của ảnh đầu vào và ảnh biến dạng của ảnh đó (Distorition, phép biến dạng ở đây có thể là color jittering, …). Các thông số như các layer, các hyper parameters mình thấy trong paper đã nói rất kỹ, để triển khai các bạn có thể xem ở bài báo gốc trong phần 4.Experiments
  • Sử dụng Projection head khi đào tạo mô hình, tức là các features được sử dụng trong hàm loss là kết quả đầu ra của Projection head chứ không phải của đầu ra của bộ phận trích xuất. Projection head ở đây bao gồm 3 lớp 1x1 convolution với 256 channels, sau đó là lớp unit-normalization, 2 layer đầu sử dụng ReLU activation
  • Sau khi contrastive pretraining, đến công đoạn fine tuning thì thay thế các projection head bằng pixel-wise softmax calssfier và học lại mạng bằng pixel-wise CE loss
  • Trong khi quá trinh constrastive pretraining khuyến khích các pixel trong hình ảnh phân cụm theo nhãn của chúng, thì trong Softmax fine-tuning sắp xếp lại các cụm này sao cho chúng nằm ở phía đúng của ranh giới quyết định. Các bạn có thể xem hình ảnh dưới để để thấy rõ sự khác nhau giữa việc sử dụng 2 hàm loss này

image.png

Các đóng góp chính

Pixel-wise label-based contrastive loss

Pixel-wise label-based contrastive loss: Extend 3 hàm loss chính:

  • Within-image loss
  • Cross-image loss
  • Batch loss

Một vài chú thích quan trọng

  • II là ảnh, I^\hat { I } là phiên bản distorted (biến dạng) của II
  • ypI{y _ { p } ^ { I }}: class label của pixel pp trong ảnh II
  • NcI{N _ { c } ^ { I }}: số pixels trong ảnh II mà có class label là cc
  • NI{N ^ { I }}: tổng số pixel trong ảnh II
  • fpI{f _ { p } ^ { I }}: unit-normalized feature được trichs xuất từ ảnh II tại pixel pp
  • 1pkAB=1[ypA=ykB]1 _ { p k } ^ { A B } = 1 [ y _ { p } ^ { A } = y _ { k } ^ { B } ]
  • epkAB=exp(fpAfkB/τ)e _ { p k } ^ { A B } = \exp ( f _ { p } ^ { A } \cdot f _ { k } ^ { B } / \tau ) với τ\tau là temperature parameter.

Within-image loss: mục tiêu là encourages các features của ảnh được phân loại vào từng nhóm theo nhãn tương ứng (Tính toán trong 1 ảnh)

1NIp=1NI1NypII^q=1NI^1pqII^log(epqII^k=1NI^epkII^)- \frac { 1 } { N ^ { I } } \sum _ { p = 1 } ^ { N ^ { I } } \frac { 1 } { N _ { y _ { p } ^ { I } } ^ { \hat { I } } } \sum _ { q = 1 } ^ { N ^ { \hat { I } } } 1 _ { p q } ^ { I \hat { I } } \log ( \frac { e _ { p q } ^ { I \hat { I } } } { \sum _ { k = 1 } ^ { N \hat { I } } e _ { p k } ^ { I \hat { I } } } )

Cross-image loss: exted within-images loss nhờ vào việc sử dụng thêm các positives từ ảnh khác (J). Positive pixels từ ảnh J có thể được coi là harder positives hơn vì chúng đến từ 1 ảnh khác. Không lấy negative từ ảnh khác (qua thử nghiệm thì thấy hiệu suất sụt giảm nếu lấy cả negative)

1NIp=1NIq=1NI^1pqII^NypII^+NypIJ^log(epqII^k=1NI^epkII^+k=1NJ^1pkIJ^epkIJ^)- \frac { 1 } { N ^ { I } } \sum _ { p = 1 } ^ { N ^ { I } } \sum _ { q = 1 } ^ { N ^ { \hat { I } } } \frac { 1 _ { p q } ^ { I \hat { I } } } { N _ { y _ { p } ^ { I } } ^ { \hat { I } } + N _ { y _ { p } ^ { I } } ^ { \hat { J } } } \log ( \frac { e _ { p q } ^ { I \hat { I } } } { \sum _ { k = 1 } ^ { N ^ { \hat { I } } e _ { p k } ^ { I \hat { I } } + \sum _ { k = 1 } ^ { N ^ { \hat { J } } } 1 _ { p k } ^ { I \hat { J } } e _ { p k } ^ { I \hat { J } } } } )

1NIp=1NIq=1NJ^1pqIJ^NypII^+NypIJ^log(epqIJ^k=1NepkII^+k=1N1pkIJ^epkIJ^)- \frac { 1 } { N ^ { I } } \sum _ { p = 1 } ^ { N ^ { I } } \sum _ { q = 1 } ^ { N ^ { \hat { J } } } \frac { 1 _ { p q } ^ { I \hat { J } } } { N _ { y _ { p } ^ { I } } ^ { \hat { I } } + N _ { y _ { p } ^ { I } } ^ { \hat { J } } } \log ( \frac { e _ { p q } ^ { I \hat { J } } } { \sum _ { k = 1 } ^ { N } e _ { p k } ^ { I \hat { I } } + \sum _ { k = 1 } ^ { N } 1 _ { p k } ^ { I \hat { J } } e _ { p k } ^ { I \hat { J } } } )

  • Batch loss: Phần này tác giá có thử nghiệm tính toán xử lý tất cả các pixel trong 1 minibatch như 1 “túi” pixel duy nhất để tính toán mất mát, mong đợi kết quả tốt hơn 2 hàm loss trên tuy nhiên kết quả ngược lại

Đề xuất chiến lược đào tạo

  • Đầu tiên đạo tạo khối trích xuất đặc trưng sâu với kiến trúc CNN với hàm contrastive loss đề xuất, tất nhiên đầu ra của khối CNN trích xuất sẽ trải qua Projection head rồi mới đưa vào hàm loss
  • Sau khi đã đạo tào xong, loại bỏ Projection head đó, thay thế Projecttion head khác (2 khối 2 Project head khác nhau vì 2 mục đích khác nhau), thay thế hàm contrastive loss đề xuất bằng CE loss
  • Chú ý rằng có 2 hàm loss được đề xuất: Within-image loss và Cross-image loss. Với Within-image loss, không có sự tương tác giữa các pixel nằm ở ác hình ảnh khác nhau.
  • Trong khi quá trinh constrastive pretraining khuyến khích các pixel trong hình ảnh phân cụm theo nhãn của chúng, thì trong Softmax fine-tuning sắp xếp lại các cụm này sao cho chúng nằm ở phía đúng của ranh giới quyết định.

Dataset và Metrics đánh giá

  • Dataset sử dụng: Cityscapes (19 classes), PASCAL VOC 2012 (21 classes)
  • Metrics được sử dụng: MeanIOU

Kết quả thử nghiệm

image.png

image.png

Với việc sử dụng kiểu biểu đồ này, có thể thấy được hiệu quả của việc sử dụng 2 hàm loss đề xuất so với chỉ sử dụng CE loss (HÌnh 5 & 6), cũng như hiệu quả của việc sử dụng Pretraining (hình 7 & 8)

Lời kết

Như vậy, song song với việc nghiên cứu paper này để tìm ra một hướng cải tiến cho bài toán mà mình quan tâm, mình đã cố gắng diễn đạt ý hiểu của mình về paper này cho mọi người cùng tham khảo. Có thể nói bài toán Semantic Segmentation là một bài toán có tính ứng dụng vô cùng cao, có rất nhiều các phương pháp, liên quan đến học liên tiếp, học giám sát, bán giám sát, ….

Hiện tại bài báo này cũng chưa public source code nên trước mắt, mình chỉ chia sẻ về ý tưởng đề xuất của bài báo. Cảm ơn mọi người đã đọc đến những dòng này!

Tài liệu tham khảo

https://arxiv.org/abs/2012.06985

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hành trình AI của một sinh viên tồi

Mình ngồi gõ những dòng này vào lúc 2h sáng (chính xác là 2h 2 phút), quả là một đêm khó ngủ. Có lẽ vì lúc chiều đã uống cốc nâu đá mà giờ mắt mình tỉnh như sáo, cũng có thể là vì những trăn trở về lý thuyết chồng chất ánh xạ mình đọc ban sáng khiến không tài nào chợp mắt được hoặc cũng có thể do mì

0 0 146

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 219

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 284

- vừa được xem lúc

Encoding categorical features in Machine learning

Khi tiếp cận với một bài toán machine learning, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (categorical data). Khác với các dữ liệu dạng số, máy tính sẽ không thể hiểu và làm việc trực tiếp với categorical variable.

0 0 259

- vừa được xem lúc

TF Lite with Android Mobile

Như các bạn đã biết việc đưa ứng dụng đến với người sử dụng thực tế là một thành công lớn trong Machine Learning.Việc làm AI nó không chỉ dừng lại ở mức nghiên cứu, tìm ra giải pháp, chứng minh một giải pháp mới,... mà quan trọng là đưa được những nghiên cứu đó vào ứng dụng thực tế, được sử dụng để

0 0 72

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 316