
FPN Paper Walkthrough: Tận dụng Kim tự tháp nội bộ
Tìm hiểu cách FPN cho phép các mô hình học sâu phát hiện các vật thể nhỏ và cách triển khai từ đầu. Bài viết FPN Paper Walkthrough: Leveraging the Internal Pyramid xuất hiện lần đầu trên Towards Data Science.
Học sâu
Tổng quan bài báo FPN: Tận dụng kim tự tháp nội bộ
Tìm hiểu cách FPN cho phép các mô hình học sâu phát hiện các vật thể nhỏ và cách triển khai từ đầu.
Muhammad Ardi
Ngày 4/6/2026
20 phút đọc
Chia sẻ
Ảnh của Ahmed Afifi trên Unsplash
Trong bài viết trước, tôi đã đề cập đến YOLOv3 [1]. Một trong những yếu tố giúp phiên bản YOLO này vượt trội hơn các phiên bản tiền nhiệm là khả năng phát hiện các vật thể nhỏ nhờ vào phần cổ (neck) giống FPN được mô hình áp dụng. Đáng tiếc, phần giải thích của tôi về FPN trong bài viết đó chưa thực sự kỹ lưỡng vì tôi tập trung nhiều hơn vào chính YOLOv3. Do đó, trong bài viết này, tôi quyết định viết riêng về FPN dựa trên bài báo gốc có tựa đề “Feature Pyramid Networks for Object Detection” [2] để bạn có thể hiểu rõ hơn về bản chất và cách hoạt động của nó. Không chỉ vậy, ở đây tôi cũng sẽ trình bày cách triển khai FPN từ đầu và cách kết nối nó với một mạng xương sống CNN (Convolutional Neural Network) và một đầu RPN (Region Proposal Network).
Mạng xương sống, phần cổ và phần đầu
Trước khi đi sâu vào FPN, chúng ta cần biết rằng cấu trúc của một mô hình phát hiện đối tượng khác với mô hình phân loại, trong đó sự khác biệt chính nằm ở lớp cuối cùng. Trong một mô hình phân loại điển hình, lớp cuối cùng bao gồm một số nơ-ron, mỗi nơ-ron tương ứng với mỗi lớp có sẵn trong tập dữ liệu. Hoặc, trong trường hợp phân loại nhị phân, lớp đầu ra chỉ bao gồm một nơ-ron duy nhất, chịu trách nhiệm dự đoán liệu một mẫu thuộc lớp 0 hay 1. Loại lớp đầu ra này thực sự không phù hợp cho tác vụ phát hiện vì nó cũng yêu cầu các nơ-ron dành riêng cho việc dự đoán vị trí và kích thước của một đối tượng ngoài lớp của nó.
Vì vậy, để một mô hình có thể dự đoán vị trí và kích thước đối tượng, chúng ta cần thay thế lớp đầu ra, tức là đầu phân loại, bằng cái gọi là đầu phát hiện. Các lớp còn lại (tất cả trừ phần đầu) thường được gọi là mạng xương sống (backbone). Một số mô hình sử dụng cấu trúc này là YOLOv1 và YOLOv2, trong đó chúng sử dụng một chồng các lớp tích chập làm mạng xương sống và một đầu cụ thể để dự đoán vị trí và kích thước đối tượng trong một hình ảnh cũng như lớp của nó.
Các mô hình phát hiện đối tượng cũ hơn như YOLOv1 và YOLOv2 chỉ bao gồm một mạng xương sống và một phần đầu. Theo thời gian, các nhà nghiên cứu nhận thấy rằng cấu trúc này vẫn chưa thực sự tối ưu, do đó họ cuối cùng đã đưa ra ý tưởng bằng cách thêm một thành phần mới gọi là phần cổ (neck). Đúng như tên gọi, đây về cơ bản là thứ chúng ta đặt giữa mạng xương sống và phần đầu. Và FPN, mà chúng ta sẽ nói đến trong bài viết này, là một trong những phần cổ sớm nhất được đề xuất cho các mô hình phát hiện đối tượng. Hãy xem Hình 1 dưới đây để thấy cái nhìn tổng quan về kiến trúc cấp cao của các mô hình phát hiện đối tượng cũ hơn và hiện đại.
Hình 1. Kiến trúc của một mô hình phát hiện đối tượng nói chung [3].
Mạng xương sống của một mô hình chủ yếu chịu trách nhiệm thực hiện trích xuất đặc trưng, trong khi phần cổ hữu ích để nâng cao chất lượng đặc trưng, và phần đầu dùng để đưa ra dự đoán. Dựa trên khái niệm này, chúng ta có thể nói rằng bằng cách áp dụng FPN, một mạng có thể đạt được độ chính xác tốt hơn nhờ cơ chế tăng cường đặc trưng được thực hiện bởi phần cổ.
Sự phát triển của cơ chế phát hiện đa tỷ lệ
Trước đây, tôi đã đề cập rằng việc sử dụng backbone và detection head mà không có neck là không tối ưu. Điều này đặc biệt đúng đối với khả năng phát hiện các vật thể nhỏ. Bây giờ, chúng ta hãy xem xét Hình 2 dưới đây. Hai phiên bản YOLO đầu tiên mà tôi đã đề cập trước đó sử dụng cấu trúc trong hình (b), trong đó các dự đoán về hộp giới hạn (bounding box) và lớp đối tượng (object class) chỉ được thực hiện trên bản đồ đặc trưng (feature map) được tạo ra bởi lớp sâu nhất trong backbone. Phương pháp này hợp lệ, nhưng chỉ hiệu quả đối với các vật thể lớn. Lý do khá đơn giản: khi một hình ảnh đi sâu hơn vào mạng, kích thước không gian (spatial dimension) thu nhỏ lại, và quan trọng hơn, thông tin pixel chứa trong các bản đồ đặc trưng sâu hơn trở thành biểu diễn của một số pixel lân cận trong các bản đồ nông hơn, điều này làm cho thông tin không gian bị hòa trộn. Bằng cách này, các bản đồ đặc trưng từ các lớp sâu hơn có trường tiếp nhận (receptive field) lớn, cho phép các vật thể lớn được phát hiện và nhận dạng dễ dàng. Tuy nhiên, sự suy giảm thông tin không gian khi chúng ta đi sâu hơn ngăn cản chúng ta phát hiện các vật thể nhỏ một cách chính xác vì chúng ta cần thông tin vị trí pixel chi tiết để dự đoán tọa độ chính xác của các vật thể.
Ngoài ra, kích thước trường tiếp nhận của một bản đồ đặc trưng có tương quan thuận với lượng thông tin ngữ nghĩa mà nó chứa. Trong hình dưới đây, một bản đồ đặc trưng có thông tin ngữ nghĩa cao được biểu thị bằng đường viền màu xanh lam dày. Đây chính là lý do tại sao bản đồ đặc trưng sâu nhất trong (b) có đường viền dày nhất.
Hình 2. So sánh các kiến trúc kim tự tháp đặc trưng khác nhau [2].
Cách tiếp cận đơn giản nhất để cho phép một mạng đồng thời phát hiện các vật thể lớn và nhỏ là sử dụng kim tự tháp hình ảnh đặc trưng (featurized image pyramid) (a). Phương pháp này có thể đạt được độ chính xác cao vì chúng ta có thể đưa ra dự đoán từ các độ phân giải hình ảnh khác nhau. Về cơ bản, điều được thực hiện ở đây là chúng ta thay đổi tỷ lệ hình ảnh đầu vào của mình thành nhiều tỷ lệ, thực hiện trích xuất đặc trưng độc lập trên mỗi tỷ lệ và đưa ra dự đoán trên các bản đồ đặc trưng thu được. Bản đồ đặc trưng nhỏ hơn chịu trách nhiệm phát hiện các vật thể lớn, trong khi bản đồ lớn hơn chuyên biệt để phát hiện các vật thể nhỏ nhờ thông tin không gian chi tiết của nó. Tuy nhiên, phương pháp này tốn kém về mặt tính toán vì chúng ta cần xử lý nhiều hình ảnh thô ở các tỷ lệ khác nhau cùng một lúc.
Một giải pháp khác đã được đề xuất bởi các tác giả của SSD (Single Shot Multibox Detector), trong Hình 2 ở trên được gọi là hệ thống phân cấp đặc trưng kim tự tháp (pyramidal feature hierarchy) (c). Vì vậy, thay vì cung cấp cho mạng cùng một hình ảnh với các kích thước khác nhau, các tác giả của SSD đã cố gắng chỉ sử dụng hình ảnh lớn nhất và tận dụng cấu trúc kim tự tháp bên trong của backbone CNN để tạo ra.




Nguồn tin: Towards Data Science — Tác giả: Muhammad Ardi. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.