Mô tả bài toán và hướng giải quyết bài toán
Bài toán phát hiện cầu thủ bóng đá là một nhiệm vụ quan trọng trong thể thao, giúp phân tích tình huống trên sân, đánh giá kỹ năng cầu thủ và cải thiện chiến thuật đội bóng Để giải quyết vấn đề này, mô hình DETR (Detection Transformer) sử dụng kiến trúc transformer để phát hiện và định vị cầu thủ trong ảnh Để áp dụng mô hình DETR cho phát hiện cầu thủ bóng đá, cần chuẩn bị bộ dữ liệu chứa ảnh các trận đấu và nhãn vị trí cầu thủ Sau đó, mô hình sẽ được huấn luyện để dự đoán vị trí và kích thước cầu thủ trong ảnh.
Sau khi hoàn tất quá trình huấn luyện, mô hình có khả năng phát hiện và định vị cầu thủ bóng đá trong các bức ảnh mới Để nâng cao độ chính xác của kết quả, việc áp dụng các thuật toán xử lý hậu kỳ như non-maximum suppression là cần thiết để loại bỏ những kết quả trùng lặp và giữ lại những phát hiện chính xác nhất.
Mô hình DETR có khả năng nâng cao hiệu quả và độ chính xác trong việc phát hiện cầu thủ bóng đá từ hình ảnh Điều này không chỉ giúp cải thiện phân tích trận đấu mà còn hỗ trợ đánh giá kỹ năng của các cầu thủ một cách dễ dàng hơn.
Các mô hình sử dụng trong bài
Giới thiệu Datasets
Dataset mà chúng tôi sử dụng được lấy từ Roboflow, bao gồm tổng cộng 663 hình ảnh về các trận đấu bóng đá chụp từ góc camera cao Trong số đó, có 612 hình ảnh thuộc Training Set, 38 hình ảnh thuộc Validation Set và 13 hình ảnh thuộc Testing Set.
This dataset consists of four versions, and we have selected version one for implementation in the DETR model To utilize it, we will import the Roboflow library and then download the dataset.
DETR model
DETR, viết tắt của "DEtection TRansformer", là một mô hình máy học tiên tiến sử dụng kiến trúc Transformer nhằm giải quyết bài toán phát hiện đối tượng trong hình ảnh Mô hình này mang lại hiệu quả cao trong việc nhận diện và phân loại các đối tượng, giúp cải thiện độ chính xác trong các ứng dụng thị giác máy tính.
The DETR model addresses the challenge of simultaneous object detection by processing an input image and generating an output that includes a list of detected objects along with their respective locations This innovative approach enhances the efficiency and accuracy of identifying football players within images, making it a valuable tool for sports analytics and research.
So với các phương pháp phát hiện đối tượng truyền thống như R-CNN và YOLO, DETR không cần các giai đoạn tiền xử lý phức tạp hay khu vực đề xuất Thay vào đó, nó sử dụng mô hình Transformer để xử lý toàn bộ ảnh đầu vào, tạo ra dự đoán trên toàn bộ ảnh và phân biệt giữa các đối tượng và nền Phương pháp này giúp DETR tiết kiệm thời gian và tối ưu hóa quá trình phát hiện đối tượng.
Mô hình DETR bao gồm ba thành phần chính: Encoder, Decoder và Object Detection Head.
Bộ mã hóa (Encoder) có vai trò quan trọng trong việc trích xuất đặc trưng từ hình ảnh đầu vào Thông thường, nó sử dụng mạng nơ-ron tích chập (CNN) để chuyển đổi giá trị pixel thô thành các bản đồ đặc trưng cấp cao, giúp cải thiện khả năng nhận diện và phân tích hình ảnh.
Decoder là một mạng transformer chuyên xử lý đầu ra từ Encoder, tạo ra các truy vấn đối tượng để quan sát các phần khác nhau của bản đồ đặc trưng Nó có thể được xem như một mô hình ngôn ngữ, có khả năng sinh ra chuỗi truy vấn đối tượng.
Đầu dò phát hiện đối tượng (Object Detection Head) nhận đầu ra từ Decoder để thực hiện nhiệm vụ phân loại và suy luận cuối cùng Nó bao gồm một mạng nơ-ron truyền thẳng, tiếp nhận các vector đặc trưng từ Decoder cùng với các truy vấn đối tượng, từ đó tạo ra các đầu ra phát hiện cuối cùng.
Mô hình DETR nổi bật với việc thay thế các bước đề xuất vùng và RoI pooling truyền thống trong phát hiện đối tượng bằng một phương pháp đào tạo từ đầu đến cuối Sự thay đổi này không chỉ đơn giản hóa quá trình đào tạo mà còn cải thiện khả năng tổng quát cho các lớp đối tượng và kích thước ảnh đa dạng.
Khi sử dụng hình ảnh đầu vào có kích thước 3 x 800 x 960 (C x H x W) với mạng nền ResNet50, DETR sẽ tạo ra một tensor có kích thước 2048 x 25 x 30 Kích thước feature map sau quá trình này giảm 32 lần so với kích thước ban đầu của ảnh do mạng nền thực hiện năm lớp max-pooling Tiếp theo, DETR áp dụng một phép tích chập (convolution).
To reduce the dimension of the feature from 2048 to 256, a 1x1 convolution is applied Consequently, each position in the feature map is represented by a vector containing 256 values In the following sections, I will refer to the number of elements in a feature vector as d_embed.
DETR chuyển đổi feature map H x W thành vector feature HW và bổ sung mã hóa vị trí cho từng vector Do Transformer encoder không có tính chất biến đổi hoán vị và thiếu cấu trúc tích hợp để xử lý thông tin vị trí, việc thêm mã hóa vị trí là cần thiết Sau đó, DETR truyền các vector embedding đầu vào vào bộ mã hóa giải mã của Transformer để tạo ra vector embedding đầu ra Cuối cùng, DETR sử dụng mỗi vector embedding đầu ra trong FFN phân loại và FFN hộp giới hạn để đưa ra các dự đoán cuối cùng.
DETR không sử dụng anchors hoặc NMS, khác với YOLO và Faster R-CNN, tạo nên một pipeline đơn giản hơn Bài viết này cung cấp cái nhìn tổng quan về DETR, bỏ qua các chi tiết như cách mà DETR thực hiện mã hóa vị trí 2D, đ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 đóng vai trò quan trọng trong việc kết hợp thông tin không gian vào các embedding đặc trưng Điều này là cần thiết vì mạng transformer thiếu cấu trúc tích hợp để xử lý thông tin không gian một cách hiệu quả.
Mã hóa vị trí 2D được áp dụng cho các vector đặc trưng đã được làm phẳng từ mạng backbone Mỗi vị trí trên bản đồ đặc trưng được gán một vector nhúng vị trí học được, kết hợp với vector đặc trưng tương ứng Các vector nhúng vị trí này được học và cập nhật trong quá trình huấn luyện cùng với các tham số mạng khác.
Mã hóa vị trí 2D trong DETR sử dụng các hàm sin và cos để mã hóa thông tin vị trí.
Mã hóa cho một vector đặc trưng tại vị trí (i, j) được tính bằng các công thức pos_enc[i, 2k] = sin(i/1000^(2k/d_embed)) và pos_enc[i, 2k+1] = cos(i/1000^(2k/d_embed)) Trong đó, pos_enc là ma trận mã hóa vị trí, d_embed là kích thước của vector đặc trưng, và k là chỉ số của chiều mã hóa Việc sử dụng hàm sin và cos đảm bảo mã hóa vị trí mang tính chu kỳ, giúp đại diện cho các tần số không gian khác nhau Giá trị 1000 trong phương trình là siêu tham số quyết định tỷ lệ của mã hóa vị trí Bằng cách tích hợp mã hóa vị trí 2D vào các embedding đặc trưng, mô hình DETR có thể sử dụng hiệu quả thông tin không gian trong ảnh đầu vào, từ đó cải thiện hiệu suất phát hiện đối tượng.
Multi-Head Attention là yếu tố then chốt trong mô hình Transformer, đóng vai trò quan trọng trong xử lý ngôn ngữ tự nhiên Thành phần này đã được ứng dụng rộng rãi trong các bài toán liên quan đến xử lý dữ liệu dạng ma trận.
Cách xây dựng mô hình Football Players Detection
Xử lí Data
3.1.1 Tạo Coco data loaders: Định dạng COCO (Common Objects in Context) là một định dạng được sử dụng để lưu trữ thông tin về các đối tượng trong hình ảnh Nó là một định dạng phổ biến trong các cuộc thi phát hiện đối tượng và nhận dạng trong trường học và trong cộng đồng nghiên cứu. Định dạng COCO định nghĩa các tệp JSON để lưu trữ thông tin về các đối tượng trong một bức ảnh, bao gồm các thông tin về vị trí, kích thước và loại đối tượng Ngoài ra, COCO cũng cung cấp các bộ dữ liệu được gán nhãn cho các nhiệm vụ phát hiện đối tượng và nhận dạng. COCO cũng cung cấp một API Python để tải và truy cập dữ liệu COCO, giúp cho việc sử dụng COCO trở nên dễ dàng hơn.
Việc phát triển một COCO data loader cho mô hình DETR là thiết yếu, giúp tải và truy cập dữ liệu một cách hiệu quả Điều này cho phép tiền xử lý và chuyển đổi dữ liệu đầu vào theo định dạng yêu cầu của mô hình Hơn nữa, COCO data loader hỗ trợ xử lý các tệp dữ liệu lớn và trích xuất thông tin quan trọng như hình ảnh, đối tượng và nhãn.
Việc sử dụng COCO data loader không chỉ tiết kiệm thời gian mà còn giảm bớt nỗ lực trong việc chuẩn bị dữ liệu đầu vào cho mô hình Nó hỗ trợ các chức năng tự động như tải dữ liệu, chia thành các batch, xáo trộn dữ liệu, đồng bộ hóa giữa đối tượng và nhãn, cũng như tối ưu hóa bộ nhớ.
The code defines a subclass of the torchvision.datasets.CocoDetection class, overriding the init () and getitem () methods of the parent class This subclass is utilized for processing the COCO dataset in training the DETR (Detectron2 End to End Object Detector with Transformers) model In this context, we employ the Football Players Detection dataset in COCO format, allowing us to convert the input data into a COCO-like dataset for easier handling.
Phương thức này trả về các đối tượng pixel_values và target, đóng vai trò quan trọng trong việc huấn luyện mô hình DETR pixel_values là tensor thể hiện giá trị pixel của hình ảnh, trong khi target là tensor biểu thị các nhãn của các đối tượng trong ảnh, được mã hóa dưới dạng số nguyên để xác định vị trí của các đối tượng Sau khi thực hiện phương thức này, kết quả sẽ được hiển thị như mong đợi.
3.1.2 Định nghĩa collate_fn: collate_fn là một hàm được sử dụng để xử lý các mẫu từ dataset trước khi chúng được truyền vào mô hình Một batch trong DataLoader chứa nhiều mẫu (ví dụ, hình ảnh và nhãn tương ứng của chúng), và collate_fn giúp định dạng lại các mẫu đó để chúng có thể được xử lý bởi mô hình collate_fn được sử dụng để xử lý các mẫu từ tập dữ liệu bằng cách ghép nối các pixel_values của tất cả các mẫu trong batch và thêm các pixel đệm (padding) để tất cả các hình ảnh có cùng kích thước Sau đó, nó trả về một từ điển có chứa pixel_values đã được xử lý, pixel_mask cho biết vị trí của pixel đệm và nhãn tương ứng của các mẫu.
Trong đoạn mã này, lớp DataLoader trong PyTorch được sử dụng để tạo ra các đối tượng TRAIN_DATALOADER, VAL_DATALOADER và TEST_DATALOADER từ các đối tượng tương ứng TRAIN_DATASET, VAL_DATASET và TEST_DATASET Những đối tượng DataLoader này giúp tải dữ liệu vào mô hình cho quá trình huấn luyện, đánh giá và kiểm tra Các tham số quan trọng của lớp DataLoader bao gồm dataset, là đối tượng Dataset nguồn dữ liệu; collate_fn, hàm xử lý các mẫu dữ liệu để tạo batch; batch_size, số lượng mẫu trong mỗi batch; và shuffle, cho phép xáo trộn thứ tự các mẫu để đảm bảo tính ngẫu nhiên trong dữ liệu.
Trong đoạn mã này, tất cả các đối tượng DataLoader được thiết lập với batch_size là 4 Đối với TRAIN_DATALOADER, tham số shuffle được đặt là True để xáo trộn thứ tự các mẫu trong quá trình huấn luyện.
3.1.4 Định nghĩa DETR model: Đây là một đoạn mã Python sử dụng thư viện PyTorch Lightning vàTransformers để đào tạo mô hình DETR (Transformers-based Object Detection withTransformers), một kiến trúc mô hình tiên tiến được sử dụng cho nhận diện đối tượng
Lớp Detr được xây dựng dựa trên lớp LightningModule từ PyTorch Lightning, tích hợp mô hình học sâu DetrForObjectDetection Mô hình này được tải từ tệp checkpoint được chỉ định trong quá trình khởi tạo lớp.
Lớp Detr bao gồm các phương thức quan trọng như forward, common_step, training_step, validation_step, configure_optimizers, train_dataloader và val_dataloader Những phương thức này đóng vai trò thiết yếu trong việc xác định quy trình đào tạo và kiểm tra, cấu hình bộ tối ưu hóa nhằm tối ưu hóa mô hình, cũng như cung cấp dữ liệu huấn luyện và kiểm tra cho mô hình.
Phương thức training_step và validation_step đóng vai trò quan trọng trong việc tính toán độ chính xác và mất mát cho từng lô dữ liệu Những giá trị này được ghi lại nhằm đánh giá hiệu quả của quá trình đào tạo và kiểm tra mô hình.
Phương thức configure_optimizers được sử dụng để cấu hình bộ tối ưu hóa AdamW nhằm tối ưu hóa các tham số của mô hình Các tham số này được phân chia thành hai nhóm: một nhóm dành cho phần khối mạng backbone và một nhóm cho các tham số khác.
Phương thức train_dataloader và val_dataloader được sử dụng để cung cấp dữ liệu huấn luyện và kiểm tra cho mô hình.
Cuối cùng, phương thức parallel_decode được sử dụng để giải mã đối tượng theo cách song song bằng cách sử dụng giải mã đa luồng của DETR
3.1.4.1 common_step: Đây là một hàm phụ trợ trong mô hình "Detr" dùng để huấn luyện và đánh giá mô hình Hàm "common_step" sẽ được sử dụng trong các hàm "training_step" và
Hàm "validation_step" nhận đầu vào là một batch dữ liệu cùng với chỉ số của batch trong quá trình huấn luyện Đầu tiên, nó lấy các giá trị pixel và pixel_mask từ batch dữ liệu và chuyển chúng đến thiết bị GPU nếu có Sau đó, hàm tạo ra danh sách các nhãn cho batch hiện tại và cũng chuyển chúng lên GPU khi cần thiết.
Khởi tạo Model
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 Sau đó, nó lấy một lô dữ liệu từ TRAIN_DATALOADER bằng cách sử dụng next(iter( )) và đưa vào mô hình để tính toán đầu ra Đầu ra chứa thông tin về phát hiện đối tượng, được sắp xếp dưới dạng tensor và trả về dưới dạng đối tượng Outputs.
Trong đoạn mã này, một đối tượng model được khởi tạo từ lớp Detr với ba tham số chính: tỷ lệ học (lr) cho bộ tối ưu hóa AdamW, tỷ lệ học cho phần backbone của mô hình (lr_backbone) nhằm giảm tốc độ học cho các phần đã được huấn luyện trước, và hệ số suy giảm trọng lượng (weight_decay) được sử dụng để điều chỉnh quá trình tối ưu hóa mô hình.
Một đối tượng batch được lấy từ tập dữ liệu huấn luyện thông qua hàm next(iter(TRAIN_DATALOADER)) Batch dữ liệu này bao gồm các tensor có kích thước và kiểu tương tự nhau, chứa 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 được đưa vào mô hình thông qua lệnh model(pixel_valuestch['pixel_values'], pixel_masktch['pixel_mask']) Mô hình sẽ trả về một đối tượng outputs, cho phép chúng ta tính toán giá trị hàm mất mát hoặc đánh giá kết quả.
The code sets various training configurations, including the maximum number of training epochs (MAX_EPOCHS), the number of devices to use (devices=1), the type of accelerator (accelerator="gpu"), the maximum gradient clipping value (gradient_clip_val=0.1), the number of batches to accumulate gradients before updating weights (accumulate_grad_batches=8), and the frequency of logging training progress (log_every_n_steps=5).
3.4 Tạo các box bao quanh vật thể: Đường dẫn ảnh được chỉ định và được tải lên bằng thư viện Image của PIL Sau đó,ảnh được chuyển đổi thành một mảng NumPy để tiếp tục xử lý.
Categories được thiết lập để phân loại các loại đối tượng trong bộ dữ liệu, trong khi id2label là từ điển ánh xạ giữa các ID loại đối tượng và nhãn tương ứng Box_annotator là một phiên bản của lớp tiện ích BoxAnnotator, giúp hỗ trợ trong việc chú thích hộp cho các đối tượng.
Các chú thích cho ảnh được tải lên thông qua phương thức imgToAnns của bộ dữ liệu COCO Ảnh được đọc lại bằng cv2.imread của OpenCV Đoạn mã thực hiện suy luận với mô hình đã được huấn luyện trước Ảnh đã tải được tiền xử lý và đưa vào mô hình Kết quả được xử lý sau bằng phương thức post_process_object_detection, giúp loại bỏ các phát hiện có độ tin cậy thấp và áp dụng non-maximum suppression (NMS) để loại bỏ các hộp chồng chéo Kết quả cuối cùng được lưu trong biến results, giúp tăng độ chính xác và hiệu suất của hệ thống phát hiện đối 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.
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, giúp sắp xếp và trình bày thông tin một cách rõ ràng và dễ hiểu Phương thức with_nms đóng vai trò quan trọng trong việc áp dụng Non-Maximum Suppression (NMS) cho các phát hiện, đồng thời đặt một ngưỡng tối thiểu cho điểm tin cậy, giúp loại bỏ các phát hiện không đáng tin cậy và tăng độ chính xác của kết quả.
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 trong quy trình là sử dụng phương thức box_annotator.annotate để chú thích ảnh với các hộp giới hạn và nhãn của các đối tượng được phát hiện Kết quả sẽ được hiển thị thông qua phương thức sv.show_frame_in_notebook.
Kết quả
4.1 Phương pháp đánh giá Models:
IoU (Intersection over Union) là một chỉ số quan trọng trong lĩnh vực Computer Vision, dùng để đo lường độ chính xác của các mô hình phân đoạn và phát hiện đối tượng Chỉ số này tính toán mức độ chồng lấp giữa dự đoán của mô hình và thực tế trong hình ảnh bằng cách chia diện tích phần chung cho diện tích tổng của hai vùng IoU thường được áp dụng để đánh giá chất lượng của các phân đoạn và phát hiện đối tượng, trở thành một trong những metric phổ biến nhất trong ngành này.
Giá trị IoU nằm trong khoảng từ 0 đến 1, với giá trị gần 1 cho thấy độ chính xác cao trong việc phát hiện đối tượng Tuy nhiên, giá trị IoU tối ưu phụ thuộc vào loại vật thể cần phát hiện, bao gồm kích thước, hình dáng và độ khó của đối tượng Đối với các đối tượng lớn như người, ô tô và xe đạp, IoU tốt cần đạt từ 0.5 đến 0.7, trong khi đối với các đối tượng nhỏ hơn như chó mèo, giá trị IoU có thể thấp hơn Cần lưu ý rằng việc so sánh giá trị IoU giữa các phương pháp phát hiện chỉ chính xác khi chúng được đánh giá trên cùng một tập dữ liệu và tiêu chí.
Chỉ số Average Precision (AP) là một tiêu chí quan trọng để đánh giá độ chính xác của mô hình phát hiện đối tượng Nó đo lường khả năng của mô hình trong việc dự đoán chính xác vị trí và độ tin cậy của các đối tượng được nhận diện trong hình ảnh.
Trong bài toán phát hiện cầu thủ bóng đá, mô hình DETR có khả năng phát hiện và phân loại cầu thủ trong ảnh Khi đánh giá trên các bức ảnh kiểm tra, một số cầu thủ sẽ được phát hiện và định vị Tuy nhiên, không phải tất cả các dự đoán đều chính xác, vì vậy cần thiết phải có chỉ số đánh giá để xác định độ chính xác của mô hình.
Trong bài viết này, AP được áp dụng để đánh giá độ chính xác của mô hình DETR trong việc phát hiện cầu thủ trong ảnh AP tính toán trung bình diện tích phủ lên các đối tượng (cầu thủ) với ngưỡng IoU đã chọn, sau đó xác định diện tích dưới đường cong Precision-Recall từ các dự đoán Giá trị AP cao cho thấy mô hình có khả năng phát hiện và định vị đối tượng tốt hơn.
Average recall là chỉ số quan trọng dùng để đánh giá hiệu suất của mô hình phát hiện đối tượng Chỉ số này được tính bằng cách lấy tổng số đối tượng được phát hiện chính xác chia cho tổng số đối tượng đúng có trong tập dữ liệu.
Trong việc đánh giá mô hình DETR cho tác vụ phát hiện cầu thủ bóng đá, average recall được sử dụng để đo lường khả năng phát hiện chính xác các cầu thủ trong hình ảnh Một giá trị average recall cao cho thấy mô hình có khả năng nhận diện hầu hết các đối tượng trong tập dữ liệu đầu vào Tuy nhiên, chỉ số này không xem xét vị trí chính xác của các bounding box được dự đoán, điều này được đánh giá thông qua Average Precision.
4.2 Kết quả chạy với DETR:
Kết quả thu được khá khả quan, cho phép nhận diện chính xác các cầu thủ trên sân Tuy nhiên, vẫn còn một số hạn chế trong việc nhận diện trọng tài thứ hai và bóng.
Giá trị IoU trong bài viết này được xác định trong khoảng từ 0,5 đến 0,95, cho thấy một đối tượng được coi là phát hiện đúng khi phần giao giữa nó và đối tượng thực tế đạt từ 50% đến 95% Kết quả đánh giá đạt 0.195, cho thấy độ chính xác của mô hình phát hiện đối tượng chỉ khoảng 19.5% so với thực tế Về Average Recall, maxDets xác định số lượng tối đa đối tượng mà mô hình có thể phát hiện cho mỗi hình ảnh, trong trường hợp này là 1.
Kết quả đánh giá với các giá trị tham số hiện tại là 0.112, cho thấy tỷ lệ đối tượng được phát hiện đúng trong toàn bộ kích thước đối tượng trong bộ dữ liệu chỉ đạt khoảng 11.2% Tỷ lệ này khá thấp và có thể được cải thiện thông qua việc nâng cao mô hình phát hiện đối tượng hoặc điều chỉnh các tham số của mô hình.
4.3 Kết quả chạy khi so sánh với Deformable DETR:
4.3.1 Định nghĩa Model Deformable DETR:
Deformable DETR (Detection Transformer with Deformable Attention) is the latest object detection model developed by Facebook AI Research (FAIR) This model combines the advanced techniques of DETR and Deformable Convolutional Networks (DCN) for enhanced image processing and object detection capabilities.
Figure 1: Illustration of the proposed Deformable DETR object detector
DETR is an image processing model that utilizes Transformers for object detection, completely eliminating the reliance on Region Proposal Networks (RPN) found in Faster R-CNN This advancement enhances both the processing speed and accuracy of the model.
Figure 2: Illustration of the proposed deformable attention module
Deformable DETR có khoảng 65 triệu tham số và được đào tạo trên các bộ dữ liệu nổi tiếng như COCO và Pascal VOC Thời gian huấn luyện mô hình này thường kéo dài từ vài ngày đến một tuần, tùy thuộc vào cấu hình máy tính cụ thể.
Deformable convolution là một phiên bản nâng cao của convolution truyền thống trong mạng Convolutional Neural Network (CNN) Khác với convolution thông thường, deformable convolution cho phép kernel (bộ lọc) linh hoạt hơn khi áp dụng lên các vùng của ảnh, từ đó tạo ra các đặc trưng phong phú và chính xác hơn.
Deformable convolution là một kỹ thuật cho phép mô hình điều chỉnh hình dạng của kernel convolution để phù hợp với hình dạng cụ thể của đối tượng trong ảnh Thay vì sử dụng một kernel cố định, deformable convolution cho phép các điểm trong kernel di chuyển tương đối với vị trí gốc, dựa trên thông tin đặc trưng của vùng quan tâm.
Cách thức hoạt động của deformable convolution bao gồm các bước sau: