Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Capsule Networks (CapsNet)

Mạng capsule (CapsNets) mã hóa mỗi bộ phận thành một vector, trong đó độ dài biểu thị xác suất và hướng biểu thị tư thế; các capsule được liên kết bằng định tuyến động.

Mạng capsule (CapsNet) là mạng neural được xây dựng từ các capsule, những nhóm neuron nhỏ có đầu ra là vector thay vì một số đơn lẻ. Độ dài vector của capsule biểu thị xác suất một thực thể—chẳng hạn chữ số, mắt hoặc bánh xe—hiện diện; hướng vector mã hóa các tham số khởi tạo của thực thể đó: vị trí, kích thước, hướng, độ dày nét và các thuộc tính khác về tư thế cũng như biến dạng. Geoffrey Hinton, Alex Krizhevsky và Sida Wang giới thiệu capsule trong bài báo năm 2011 về autoencoder biến đổi; Sara Sabour, Nicholas Frosst và Hinton phát triển capsule thành bộ phân loại hoạt động được trong Dynamic Routing Between Capsules, trình bày tại NIPS 2017. Phương pháp này kết nối các capsule ở những lớp liên tiếp bằng một thuật toán lặp gọi là định tuyến theo mức độ đồng thuận.

Vì sao capsule thay thế max pooling#

Mạng neural tích chập (CNN) phát hiện đặc trưng bằng các activation dạng vô hướng và thường thu nhỏ feature map bằng max pooling; phương pháp này giữ lại phản hồi mạnh nhất trong mỗi cửa sổ nhưng loại bỏ vị trí xuất hiện phản hồi đó. Điều này giúp việc phát hiện ít nhạy với các dịch chuyển nhỏ, nhưng mạng chỉ kiểm tra các bộ phận có hiện diện hay không có thể chấp nhận khuôn mặt có miệng nằm phía trên mắt—vấn đề thường được gọi là Picasso. Hinton đề xuất tính tương đương thay vì tính bất biến: khi vật thể di chuyển hoặc xoay, vector capsule cũng xoay theo, trong khi độ dài của vector—xác suất vật thể tồn tại—giữ nguyên. Các capsule học góc nhìn theo cách này cần ít tăng cường dữ liệu hơn so với CNN để nhận dạng vật thể ở góc nhìn mới.

Ultralytics YOLO26 duy trì vị trí vật thể mà không cần capsule: năm lớp tích chập stride-2 giảm đầu vào xuống độ phân giải 1/32; khối max pooling duy nhất của model là SPPF, thực hiện pooling ở stride 1 với cửa sổ 5 x 5 ba lần liên tiếp, mở rộng receptive field mà không thu nhỏ lưới dùng làm đầu vào cho head phát hiện.

Dynamic routing hoạt động như thế nào#

Mỗi capsule ở lớp dưới nhân đầu ra của mình với một ma trận trọng số đã học để dự đoán đầu ra của từng capsule ở lớp trên. Sau đó, cơ chế định tuyến quyết định lượng đầu ra của mỗi capsule con được chuyển đến từng capsule cha. Hàm softmax trên các logit định tuyến, vốn ban đầu bằng 0, tạo ra các hệ số ghép nối dùng để phân chia đầu ra của mỗi capsule con giữa các capsule cha. Mỗi capsule cha tính tổng các dự đoán có trọng số theo những hệ số đó rồi áp dụng hàm squash, hàm này giữ nguyên hướng của vector và ánh xạ độ dài của vector vào khoảng từ 0 đến 1. Tích vô hướng giữa mỗi dự đoán và đầu ra mới của capsule cha được cộng vào logit, nhờ đó các capsule con gửi nhiều đầu ra hơn đến các capsule cha có trạng thái mà chúng đã dự đoán:

import torch

torch.manual_seed(0)

# 6 capsule con, mỗi capsule dự đoán pose 8D cho 2 capsule cha
predictions = 0.2 * torch.randn(6, 2, 8)
pose = 0.5 * torch.randn(8)
predictions[:4, 0] = pose + 0.05 * torch.randn(4, 8)  # các capsule con 0-3 đồng thuận với capsule cha 0

logits = torch.zeros(6, 2)
for _ in range(3):  # định tuyến theo mức độ đồng thuận, 3 vòng lặp như trong bài báo
    coupling = logits.softmax(dim=1)  # mỗi capsule con phân chia phiếu bầu giữa các capsule cha
    s = (coupling.unsqueeze(-1) * predictions).sum(dim=0)
    squared = s.square().sum(dim=-1, keepdim=True)
    parents = squared / (1 + squared) * s / squared.sqrt()  # squash: độ dài trong [0, 1)
    logits = logits + (predictions * parents).sum(dim=-1)  # mức độ đồng thuận làm tăng logit

print(coupling[:, 0].round(decimals=2))
print(parents.norm(dim=-1).round(decimals=2))

Kết quả in ra tensor([0.9700, 0.9700, 0.9700, 0.9700, 0.5700, 0.4700]) và tensor([0.9800, 0.1500]). Sau ba vòng lặp, bốn capsule con đồng thuận chuyển 97% đầu ra đến capsule cha 0; hai capsule còn lại vẫn chia gần như đều, còn độ dài vector của capsule cha 0 đạt 0.98 trong khi capsule cha 1, chỉ nhận được các phiếu rải rác, giữ ở mức 0.15. Routing giống cơ chế attention của một transformer nhưng chạy theo chiều ngược lại: softmax được tính trên các capsule cha mà một capsule con có thể gửi đầu ra đến, nên các capsule cha cạnh tranh đầu ra của mỗi capsule con.

CapsNet năm 2017 và kết quả#

Mạng ban đầu khá nông: một lớp tích chập với 256 kernel kích thước 9 x 9 đưa dữ liệu vào PrimaryCaps, một lớp capsule tích chập biến chữ số 28 x 28 thành 32 x 6 x 6 = 1.152 capsule tám chiều; routing kết nối chúng với DigitCaps, gồm một capsule 16 chiều cho mỗi lớp. Quá trình huấn luyện kết hợp hàm loss margin trên độ dài capsule—đẩy độ dài lên trên 0.9 với chữ số hiện diện và xuống dưới 0.1 với các chữ số còn lại—với một decoder tái tạo ảnh từ capsule của chữ số đúng, cùng thành phần regularization kiểu autoencoder được giảm hệ số xuống 0.0005. Thay đổi một trong 16 chiều rồi giải mã kết quả sẽ làm thay đổi một thuộc tính riêng như tỷ lệ, độ dày nét, độ nghiêng hoặc chiều rộng, nhờ vậy đầu ra capsule dễ kiểm tra hơn activation của CNN; đây cũng là mục tiêu của AI có thể giải thích.

Với 8,2 triệu tham số so với 35,4 triệu của CNN cơ sở, CapsNet đạt sai số kiểm thử 0,25% trên MNIST, so với 0,39% của model cơ sở; trên MultiMNIST, gồm các cặp chữ số có bounding box chồng lấn trung bình 80%, các mức tương ứng là 5,2% và 8,1%. Chỉ được huấn luyện trên chữ số MNIST dịch chuyển tối đa 2 pixel, model đạt 79% trên affNIST—cùng các chữ số đó nhưng được biến đổi affine ngẫu nhiên—trong khi CNN có số tham số tương tự đạt 66%. Trên CIFAR-10, một ensemble gồm bảy CapsNet đạt sai số 10,6%, tương đương kết quả CNN khi lần đầu được áp dụng cho dataset này; các tác giả cho rằng chênh lệch bắt nguồn từ việc capsule cố xử lý nền lộn xộn.

Giới hạn và các model capsule đời sau#

Routing lặp nhiều vòng trên mọi cặp capsule con và capsule cha, vì vậy compute và bộ nhớ tăng nhanh theo kích thước ảnh và số lớp; mạng capsule chưa bao giờ bắt kịp CNN hoặc vision transformer trên các benchmark phân loại ảnh quy mô lớn như ImageNet. Các nhà nghiên cứu đã áp dụng mạng capsule trong phân tích ảnh y khoa, chẳng hạn phân loại loại u não từ ảnh MRI, ở những trường hợp tập huấn luyện nhỏ.

Capsule ma trận với EM routing của Hinton, Sabour và Frosst tại ICLR 2018 thay vector pose bằng ma trận pose 4 x 4 và định tuyến bằng thuật toán kỳ vọng-tối đa; trên benchmark smallNORB gồm các vật thể đồ chơi được chụp từ nhiều góc nhìn, phương pháp này giảm 45% sai số kiểm thử so với kết quả tiên tiến trước đó và chống lại tấn công đối kháng kiểu white-box tốt hơn CNN cơ sở. Autoencoder capsule xếp chồng ra đời vào năm 2019 và học capsule mà không cần nhãn; đề xuất GLOM năm 2021 của Hinton biểu diễn cùng hệ phân cấp bộ phận-tổng thể dưới dạng các cụm vector embedding đồng thuận, hoàn toàn không cần dynamic routing.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning