Sử dụng mạng DETR để phát hiện cầu thủ bóng đá

MỤC LỤC

Pineline

Kích thước feature map kết quả được giảm đi 32 lần so với kích thước ban đầu của ảnh vì mạng nền có năm lớp max-pooling. Trong phần tiếp theo, tôi sẽ gọi số lượng phần tử trong một vector feature là d_embed. DETR làm phẳng feature map H x W thành HW vector feature và thêm các mã hóa vị trí cho mỗi vector feature.

Vì Transformer encoder không có tính chất biến đổi hoán vị và không có cấu trúc tích hợp để xử lý thông tin vị trí, chúng ta phải bổ sung mã hóa vị trí cho mỗi vector feature (chi tiết hơn sẽ được giải thích ở phần tiếp theo). Sau đó, DETR truyền các vector embedding đầu vào vào bộ mã hóa giải mã của Transformer, từ đó tạo ra các vector embedding đầu ra. Cuối cùng, DETR đưa mỗi vector embedding đầu ra vào FFN phân loại và FFN hộp giới hạn để tạo ra các dự đoán cuối cùng.

Do đó, như bạn có thể thấy, DETR không có anchors hoặc NMS, khác với YOLO và Faster R-CNN, và pipeline khá đơn giản. Tuy nhiên, tôi giải thích ở đây là một cái nhìn tổng quan, bỏ qua các chi tiết như DETR thực hiện mã hóa vị trí 2D như thế nào, điều này sẽ được thảo luận ở phần tiếp theo. Trong mô hình DETR transformer, mã hóa vị trí 2D được sử dụng để tích hợp thông tin không gian vào các embedding đặc trưng.

Điều này là do mạng transformer không có cấu trúc tích hợp để xử lý thông tin không gian. Mã này khởi tạo một thể hiện của lớp Detr với các siêu tham số lr, lr_backbone, và weight_decay được truyền vào. Sau đó, nó lấy một lô dữ liệu từ TRAIN_DATALOADER bằng cách sử dụng next(iter(..)) và đưa nó vào mô hình để tính toán đầu ra.

Đầu ra chứa các thông tin về phát hiện đối tượng, được sắp xếp dưới dạng tensor và được trả về dưới dạng đối tượng Outputs. Sau đó, một đối tượng batch được lấy từ tập dữ liệu huấn luyện (được đưa vào qua TRAIN_DATALOADER) bằng cách gọi hàm next(iter(TRAIN_DATALOADER)). Đây là một batch dữ liệu, bao gồm các tensor có kích thước và kiểu tương tự nhau, bao gồm các giá trị pixel của hình ảnh (được đưa vào qua pixel_values) và mặt nạ của các pixel không bị trống (được đưa vào qua pixel_mask).

Cuối cùng, đầu vào của batch này được đưa vào mô hình bằng cách gọi model(pixel_values=batch['pixel_values'], pixel_mask=batch['pixel_mask']). Mô hình trả về một đối tượng outputs mà có thể được sử dụng để tính toán giá trị của hàm mất mát hoặc đánh giá kết quả.

Tạo các box bao quanh vật thể

Biến categories được thiết lập cho các loại đối tượng của bộ dữ liệu, id2label là một từ điển ánh xạ các ID loại đối tượng đến nhãn tương ứng của chúng, và box_annotator là một phiên bản của lớp tiện ích BoxAnnotator. Các chú thích cho ảnh đã tải được lấy bằng cách sử dụng phương thức imgToAnns của bộ dữ liệu COCO. Đoạn mã thực hiện suy luận bằng cách sử dụng một mô hình được huấn luyện trước.

Ảnh đã tải được tiền xử lý và đưa vào đầu vào của mô hình. Đầu ra kết quả được xử lý sau bằng phương thức post_process_object_detection, loại bỏ các phát hiện có độ tin cậy thấp và áp dụng phương pháp non-maximum suppression (NMS) để loại bỏ các hộp chồng chéo. Phương pháp này hoạt động bằng cách chọn ra phát hiện có độ tin cậy cao nhất cho mỗi đối tượng và loại bỏ các phát hiện khác có độ tin cậy thấp hơn và trùng với phát hiện cao nhất.

Việc loại bỏ các phát hiện trùng lắp này giúp giảm thiểu số lượng phát hiện giả, tăng độ chính xác và hiệu suất của hệ thống phát hiện đối tượng. Lớp sv.Detections được sử dụng để định dạng các phát hiện thành một định dạng chuẩn. Phương thức with_nms áp dụng NMS cho các phát hiện và đặt một ngưỡng tối thiểu cho điểm tin cậy.

Biến labels được tạo bằng cách nối các nhãn được dự đoán cho mỗi phát hiện bằng cách sử dụng từ điển id2label. Bước cuối cùng là chú thích ảnh bằng các hộp giới hạn và nhãn của các đối tượng phát hiện được sử dụng phương thức box_annotator.annotate.

Kết quả

  • Kết quả chạy với DETR
    • Kết quả chạy khi so sánh với Deformable DETR

      AP tính toán tổng trung bình diện tích phủ lên các đối tượng (cầu thủ) với giá trị ngưỡng IoU được chọn, sau đó tính toán diện tích dưới đường cong Precision-Recall từ các kết quả dự đoán đó. Average recall là một thước đo đánh giá hiệu suất của mô hình phát hiện đối tượng trong đó, nó được tính bằng tổng số đối tượng đúng được phát hiện trên tổng số các đối tượng đúng có sẵn trong tập dữ liệu. Với các giá trị tham số trên, kết quả đánh giá là 0.195, có nghĩa là độ chính xác của mô hình phát hiện đối tượng là khá thấp, chỉ đạt được khoảng 19.5% so với các đối tượng thực tế trong bộ dữ liệu.

      DETR là một mô hình xử lý ảnh sử dụng Transformer để thực hiện điểm danh vật thể, loại bỏ hoàn toàn sự phụ thuộc vào Region Proposal Networks (RPN) trong Faster R-CNN, cải thiện tốc độ xử lý và độ chính xác của mô hình. Thay vì áp dụng một kernel cố định lên các vùng, deformable convolution cho phép các điểm trong kernel di chuyển tương đối đối với vị trí gốc, dựa trên thông tin đặc trưng của vùng quan tâm. Việc cho phép các điểm trong kernel di chuyển tương đối giúp mô hình nắm bắt các biến đổi hình dạng và thông tin vị trí của đối tượng một cách linh hoạt hơn, từ đó cải thiện khả năng phát hiện và theo dừi của mụ hỡnh.

      Điều này giúp cung cấp cho Deformable DETR một mô hình mạnh mẽ để nắm bắt thông tin quan trọng trong ảnh và tạo ra các biểu diễn đặc trưng sẽ được sử dụng trong quỏ trỡnh phỏt hiện và theo dừi. Việc sử dụng deformable convolution trong encoder giúp mô hình mạnh hơn trong việc nắm bắt các biến đổi hình thái và thông tin vị trí của các đối tượng trong ảnh, từ đú cải thiện khả năng phỏt hiện và theo dừi của Deformable DETR. Quá trình này được thực hiện bằng cách sử dụng một mạng Convolutional Neural Network (CNN) để trích xuất đặc trưng từ ảnh đầu vào, sau đó áp dụng deformable convolution để tăng cường khả năng biểu diễn và định vị các đối tượng trong ảnh.

      Việc sử dụng deformable convolution cho phép mô hình học cách biến đổi hình dạng của các vùng quan tâm đối tượng (ROI), từ đú tăng cường khả năng phỏt hiện và theo dừi cỏc đối tượng trong ảnh. Ngoài việc sử dụng deformable convolution, Encoder trong Deformable DETR cũng sử dụng một số kỹ thuật khác để tăng cường khả năng biểu diễn và định vị đối tượng, bao gồm multi-scale feature fusion, positional encoding, và feature. Transformer là một kiến trúc mạng neural mạnh mẽ và hiệu quả được sử dụng trong Deformable DETR để xử lý thông tin đặc trưng đã được mã hóa và thực hiện quá trỡnh phỏt hiện và theo dừi đối tượng trong ảnh.

      Transformer trong Deformable DETR tập trung vào việc xử lý thông tin và tạo ra các đại diện cho đối tượng trong ảnh một cách hiệu quả bằng cách sử dụng các lớp tổng hợp, lớp tích chập và cơ chế Attention. Sau khi thông tin đặc trưng đã được xử lý trong phần Encoder và qua mạng Transformer, các đại diện của các đối tượng được truyền vào phần Decoder để tạo ra các dự đoán về vị trí và nhãn của các đối tượng. Phần này tập trung vào việc giải mã thông tin và dự đoán các thông số về vị trí và nhãn của các đối tượng một cách chính xác thông qua sử dụng lớp tổng hợp, lớp tích chập và các phép biến đổi thông thường.

      Điều này được thực hiện bằng cách sử dụng các phép biến đổi và thuật toán gán tiền chất (Hungarian algorithm) để ánh xạ mỗi hộp giới hạn dự đoán với hộp giới hạn thực tế tương ứng sao cho độ chính xác cao nhất. Thay vào đó, hàm mất mát được thiết kế dựa trên quy trình so khớp và gán tiền chất giữa các hộp giới hạn dự đoán và thực tế, không liên quan đến việc sử dụng deformable convolution trong quá trình trích xuất đặc trưng hay các phần khác của mô hình.