Ultralytics YOLO27:
Get Started

RT-DETR của Baidu: Bộ phát hiện đối tượng thời gian thực dựa trên Transformer thị giác#

Tổng quan#

Real-Time Detection Transformer (RT-DETR), do Baidu phát triển, là bộ phát hiện đối tượng end-to-end tiên tiến, mang lại hiệu năng thời gian thực đồng thời duy trì độ chính xác cao. Model dựa trên ý tưởng của DETR (framework không cần NMS), đồng thời giới thiệu backbone dựa trên tích chập và bộ mã hóa lai hiệu quả để đạt tốc độ thời gian thực. RT-DETR xử lý hiệu quả các đặc trưng đa tỷ lệ bằng cách tách biệt tương tác trong cùng tỷ lệ với hợp nhất xuyên tỷ lệ. Model có khả năng thích ứng cao, hỗ trợ điều chỉnh linh hoạt tốc độ suy luận bằng cách sử dụng các lớp decoder khác nhau mà không cần huấn luyện lại. RT-DETR hoạt động xuất sắc trên các backend tăng tốc như CUDA với TensorRT, vượt trội hơn nhiều bộ phát hiện đối tượng thời gian thực khác.



Xem: Cách sử dụng RT-DETR của Baidu để phát hiện đối tượng | Inference và benchmark với Ultralytics 🚀

Tổng quan kiến trúc model Baidu RT-DETR Tổng quan về RT-DETR của Baidu. Sơ đồ kiến trúc model RT-DETR cho thấy ba giai đoạn cuối của backbone {S3, S4, S5} là đầu vào của encoder. Bộ mã hóa lai hiệu quả chuyển đổi các đặc trưng đa tỷ lệ thành chuỗi đặc trưng ảnh thông qua tương tác đặc trưng trong cùng tỷ lệ (AIFI) và module hợp nhất đặc trưng xuyên tỷ lệ (CCFM). Cơ chế chọn query nhận biết IoU được dùng để chọn một số lượng cố định đặc trưng ảnh làm query đối tượng ban đầu cho decoder. Cuối cùng, decoder cùng các đầu dự đoán phụ tối ưu lặp lại query đối tượng để tạo ra các box và điểm tin cậy (nguồn).

Tính năng chính#

  • Bộ mã hóa lai hiệu quả: RT-DETR của Baidu sử dụng bộ mã hóa lai hiệu quả để xử lý các đặc trưng đa tỷ lệ bằng cách tách biệt tương tác trong cùng tỷ lệ với hợp nhất xuyên tỷ lệ. Thiết kế độc đáo dựa trên Vision Transformer này giúp giảm chi phí tính toán và cho phép phát hiện đối tượng theo thời gian thực.
  • Chọn query nhận biết IoU: RT-DETR của Baidu cải thiện quá trình khởi tạo query đối tượng bằng cách sử dụng cơ chế chọn query nhận biết IoU. Nhờ đó, model tập trung vào những đối tượng phù hợp nhất trong cảnh, tăng độ chính xác phát hiện.
  • Tốc độ suy luận có thể điều chỉnh: RT-DETR của Baidu hỗ trợ điều chỉnh linh hoạt tốc độ suy luận bằng cách sử dụng các lớp decoder khác nhau mà không cần huấn luyện lại. Khả năng thích ứng này hỗ trợ triển khai thực tế trong nhiều tình huống phát hiện đối tượng thời gian thực.
  • Framework không cần NMS: Dựa trên DETR, RT-DETR loại bỏ nhu cầu hậu xử lý ức chế phi cực đại, giúp đơn giản hóa pipeline phát hiện và có khả năng cải thiện hiệu quả.
  • Phát hiện không cần anchor: Là một bộ phát hiện không cần anchor, RT-DETR đơn giản hóa quy trình phát hiện và có thể cải thiện khả năng tổng quát hóa trên các bộ dữ liệu khác nhau.

Model được tiền huấn luyện#

Ultralytics Python API cung cấp các model RT-DETR PaddlePaddle được huấn luyện trước với nhiều kích thước khác nhau:

  • RT-DETR-L: 53.0% AP trên COCO val2017, 114 FPS trên GPU T4
  • RT-DETR-X: 54.8% AP trên COCO val2017, 74 FPS trên GPU T4

Ngoài ra, Baidu đã phát hành RTDETRv2 vào tháng 7 năm 2024, tiếp tục cải tiến kiến trúc ban đầu với các chỉ số hiệu năng tốt hơn.

Ví dụ sử dụng#

Ví dụ này cung cấp các ví dụ đơn giản về huấn luyện và suy luận RT-DETR. Để xem tài liệu đầy đủ về các chế độ này và các chế độ khác, hãy xem các trang tài liệu Dự đoán, Huấn luyện, Đánh giá và Xuất. Các model cũng có thể được huấn luyện trên GPU đám mây thông qua Ultralytics Platform.

Ví dụ
from ultralytics import RTDETR

# Tải model RT-DETR-l được huấn luyện trước trên COCO
model = RTDETR("rtdetr-l.pt")

# Hiển thị thông tin model (không bắt buộc)
model.info()

# Huấn luyện model trên dataset mẫu COCO8 trong 100 epoch
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Chạy suy luận bằng model RT-DETR-l trên ảnh 'bus.jpg'
results = model("path/to/bus.jpg")
Huấn luyện có tính xác định

Đặt deterministic=False khi huấn luyện RT-DETR trên CUDA với PyTorch 2.0 trở lên. Cơ chế attention biến dạng của model sử dụng F.grid_sample, vốn không có backward CUDA mang tính xác định, do đó deterministic=True không thể giúp quá trình chạy tái lập được và có thể làm giảm thông lượng huấn luyện. seed vẫn kiểm soát việc khởi tạo trọng số, thứ tự dữ liệu và lấy mẫu tăng cường dữ liệu.

Đánh đổi khi tăng tốc suy luận

Trọng số RT-DETR được huấn luyện trước hỗ trợ hai thiết lập tại thời điểm suy luận để giảm độ trễ mà không cần huấn luyện lại:

  • eval_idx: Dừng giải mã sớm. Với decoder 6 lớp mặc định, hãy dùng chỉ số bắt đầu từ 0 (0–5). eval_idx=5 sử dụng tất cả các lớp; eval_idx=3 sử dụng 4 lớp. Trên GPU T4 với TensorRT v10.11, RT-DETR-L cải thiện từ 8.0 ms / 52.7 mAP lên 7.4 ms / 52.5 mAP khi dùng 4 lớp.
  • num_queries: Giảm số lượng query đối tượng (mặc định: 300). Giảm xuống 100 có thể đạt 7.4 ms / 51.7 mAP trên COCO trong cùng cấu hình. Với các bộ dữ liệu có ít đối tượng hơn trong mỗi ảnh, mức giảm mAP thường nhỏ hơn, nhưng hãy giữ giá trị này cao hơn số lượng đối tượng tối đa dự kiến trong mỗi ảnh.

Cả hai thiết lập đều có thể làm giảm mAP — hãy đánh giá sự đánh đổi trên bộ dữ liệu của bạn trước khi triển khai.

from ultralytics import RTDETR

rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]

# Chọn một hoặc cả hai thiết lập sau khi đánh giá sự đánh đổi giữa tốc độ và độ chính xác.
head.decoder.eval_idx = 3  # Sử dụng 4 trong 6 lớp decoder.
head.num_queries = 100  # Sử dụng ít query đối tượng hơn.

results = rtdetr("path/to/image.jpg")

# Quá trình export sử dụng cùng thiết lập decoder và query, bao gồm cả khi export sang TensorRT.
rtdetr.export(format="engine", device=0, quantize=16)

Các tác vụ và chế độ được hỗ trợ#

Bảng này trình bày các loại model, trọng số được huấn luyện trước cụ thể, những tác vụ mà từng model hỗ trợ và các chế độ được hỗ trợ (Huấn luyện, Validation, Dự đoán, Export), được đánh dấu bằng emoji ✅.

Loại modelWeights pretrainedCác tác vụ được hỗ trợHuấn luyệnValidationSuy luậnExport
RT-DETR cỡ lớnrtdetr-l.ptPhát hiện đối tượng✅✅✅✅
RT-DETR cỡ cực lớnrtdetr-x.ptPhát hiện đối tượng✅✅✅✅
Các biến thể chỉ có kiến trúc

rtdetr-resnet50.yaml và rtdetr-resnet101.yaml chỉ được cung cấp dưới dạng kiến trúc YAML. Ultralytics chỉ phát hành trọng số được huấn luyện trước cho rtdetr-l và rtdetr-x. Khởi tạo các biến thể ResNet từ YAML (ví dụ: RTDETR("rtdetr-resnet50.yaml")) rồi huấn luyện hoặc fine-tune khi cần.

Các trường hợp sử dụng phù hợp nhất#

RT-DETR đặc biệt phù hợp với các ứng dụng đòi hỏi cả độ chính xác cao và hiệu năng thời gian thực:

Trích dẫn và lời cảm ơn#

Nếu sử dụng RT-DETR của Baidu trong nghiên cứu hoặc phát triển, vui lòng trích dẫn bài báo gốc:

Trích dẫn
@misc{lv2023detrs,
      title={DETRs Beat YOLOs on Real-time Object Detection},
      author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
      year={2023},
      eprint={2304.08069},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Đối với RTDETRv2, bạn có thể trích dẫn bài báo năm 2024:

Trích dẫn
@misc{lv2024rtdetrv2,
      title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
      author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
      year={2024},
      eprint={2407.17140},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Chúng tôi xin ghi nhận đóng góp của Baidu và nhóm PaddlePaddle trong việc tạo và duy trì tài nguyên giá trị này cho cộng đồng thị giác máy tính. Chúng tôi vô cùng trân trọng đóng góp của họ cho lĩnh vực này thông qua việc phát triển bộ phát hiện đối tượng thời gian thực dựa trên Vision Transformer, RT-DETR.

Câu hỏi thường gặp#

  • RT-DETR (Real-Time Detection Transformer) của Baidu là bộ phát hiện đối tượng thời gian thực tiên tiến, được xây dựng trên kiến trúc Vision Transformer. Model xử lý hiệu quả các đặc trưng đa tỷ lệ bằng cách tách biệt tương tác trong cùng tỷ lệ với hợp nhất xuyên tỷ lệ thông qua bộ mã hóa lai hiệu quả. Bằng cách sử dụng cơ chế chọn query nhận biết IoU, model tập trung vào những đối tượng phù hợp nhất, qua đó tăng độ chính xác phát hiện. Khả năng điều chỉnh tốc độ suy luận bằng cách thay đổi các lớp decoder mà không cần huấn luyện lại giúp RT-DETR phù hợp với nhiều tình huống phát hiện đối tượng thời gian thực. Tìm hiểu thêm về các tính năng của RT-DETR trong bài báo RT-DETR trên arXiv.

  • Bạn có thể tận dụng Ultralytics Python API để sử dụng các model RT-DETR PaddlePaddle được huấn luyện trước. Ví dụ: để tải model RT-DETR-l được huấn luyện trước trên COCO val2017 và đạt FPS cao trên GPU T4, bạn có thể dùng ví dụ sau:

    Ví dụ
    from ultralytics import RTDETR
    
    # Tải model RT-DETR-l được huấn luyện trước trên COCO
    model = RTDETR("rtdetr-l.pt")
    
    # Hiển thị thông tin model (không bắt buộc)
    model.info()
    
    # Huấn luyện model trên dataset mẫu COCO8 trong 100 epoch
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
    
    # Chạy suy luận bằng model RT-DETR-l trên ảnh 'bus.jpg'
    results = model("path/to/bus.jpg")
  • RT-DETR của Baidu nổi bật nhờ bộ mã hóa lai hiệu quả và cơ chế chọn query nhận biết IoU, giúp giảm đáng kể chi phí tính toán mà vẫn duy trì độ chính xác cao. Khả năng độc đáo điều chỉnh tốc độ suy luận bằng cách sử dụng các lớp decoder khác nhau mà không cần huấn luyện lại mang lại tính linh hoạt đáng kể. Điều này khiến model đặc biệt phù hợp với các ứng dụng cần hiệu năng thời gian thực trên backend tăng tốc như CUDA với TensorRT, vượt trội hơn nhiều bộ phát hiện đối tượng thời gian thực khác. Kiến trúc transformer cũng giúp hiểu ngữ cảnh toàn cục tốt hơn so với các bộ phát hiện dựa trên CNN truyền thống.

  • RT-DETR của Baidu cho phép điều chỉnh linh hoạt tốc độ suy luận bằng cách sử dụng các lớp decoder khác nhau mà không cần huấn luyện lại. Khả năng thích ứng này rất quan trọng để mở rộng hiệu năng trên nhiều tác vụ phát hiện đối tượng thời gian thực. Dù bạn cần xử lý nhanh hơn khi yêu cầu độ chính xác thấp hơn hay muốn phát hiện chậm hơn nhưng chính xác hơn, RT-DETR đều có thể được điều chỉnh để đáp ứng nhu cầu cụ thể. Tính năng này đặc biệt hữu ích khi triển khai model trên các thiết bị có năng lực tính toán khác nhau.

  • Không. Với RT-DETR, max_det giới hạn số lượng dự đoán được trả về sau suy luận, nhưng không làm tăng số query đối tượng do decoder tạo ra. Các checkpoint RT-DETR được huấn luyện trước của Ultralytics sử dụng 300 query đối tượng, vì vậy chúng không thể trả về hơn 300 kết quả phát hiện cho mỗi ảnh, ngay cả khi bạn đặt max_det thành giá trị lớn hơn.

    Dùng max_det để giảm số kết quả phát hiện được trả về, chẳng hạn max_det=100, khi bạn chỉ cần ít dự đoán có độ tin cậy cao hơn. Nếu bộ dữ liệu của bạn có thể chứa hơn 300 đối tượng trong mỗi ảnh, hãy huấn luyện model RT-DETR tùy chỉnh với số lượng query decoder cao hơn (nq) trong YAML của model; thay đổi giá trị này trên checkpoint đã huấn luyện trước không tương đương và cần huấn luyện lại để model học các query bổ sung.

  • Có, model RT-DETR tương thích với nhiều chế độ Ultralytics, bao gồm huấn luyện, validation, dự đoán và export. Bạn có thể tham khảo tài liệu tương ứng để biết hướng dẫn chi tiết về cách sử dụng các chế độ này: Huấn luyện, Validation, Dự đoán và Export. Điều này đảm bảo quy trình toàn diện để phát triển và triển khai giải pháp phát hiện đối tượng. Framework Ultralytics cung cấp API nhất quán trên các kiến trúc model khác nhau, giúp bạn dễ dàng làm việc với model RT-DETR.

Bình luận