Ultralytics YOLO27:

YOLOv3 và YOLOv3u#

Tổng quan#

Tài liệu này trình bày tổng quan về ba model nhận diện đối tượng có liên quan chặt chẽ, gồm YOLOv3, YOLOv3-UltralyticsYOLOv3u.

  1. YOLOv3: Đây là phiên bản thứ ba của thuật toán nhận diện đối tượng You Only Look Once (YOLO). Được Joseph Redmon phát triển ban đầu, YOLOv3 cải tiến so với các phiên bản tiền nhiệm bằng cách giới thiệu các tính năng như dự đoán đa tỷ lệ và ba kích thước kernel detection khác nhau.

  2. YOLOv3-Ultralytics: Đây là bản cài đặt PyTorch của Ultralytics cho YOLOv3, được duy trì trong kho lưu trữ ultralytics/yolov3. Bản cài đặt này giữ nguyên kiến trúc dựa trên anchor ban đầu đồng thời bổ sung thêm nhiều model được huấn luyện trước và khả năng tùy chỉnh dễ dàng hơn.

  3. YOLOv3u: Đây là phiên bản cập nhật của YOLOv3-Ultralytics, tích hợp split head không anchor và không objectness được sử dụng trong các model YOLOv8. YOLOv3u duy trì cùng kiến trúc backbone và neck như YOLOv3, nhưng sử dụng detection head đã được cập nhật từ YOLOv8.

Banner model nhận diện đối tượng YOLOv3

Tính năng chính#

  • YOLOv3: Giới thiệu việc sử dụng ba tỷ lệ khác nhau cho detection, tận dụng ba kích thước kernel detection khác nhau: 13x13, 26x26 và 52x52. Điều này cải thiện đáng kể độ chính xác detection đối với các đối tượng có kích thước khác nhau. Ngoài ra, YOLOv3 bổ sung các tính năng như dự đoán đa nhãn cho mỗi bounding box và một mạng trích xuất đặc trưng tốt hơn.

  • YOLOv3u: Model được cập nhật này tích hợp split head không anchor và không objectness từ YOLOv8. Bằng cách loại bỏ nhu cầu sử dụng anchor box và điểm objectness được định nghĩa trước, thiết kế detection head này có thể cải thiện khả năng phát hiện các đối tượng có kích thước và hình dạng khác nhau của model. Nhờ đó, YOLOv3u trở nên mạnh mẽ và chính xác hơn cho các tác vụ nhận diện đối tượng.

Các task và mode được hỗ trợ#

YOLOv3 được thiết kế chuyên biệt cho các tác vụ nhận diện đối tượng. Ultralytics hỗ trợ ba biến thể của YOLOv3: yolov3u, yolov3-tinyuyolov3-sppu. u trong tên cho biết các model này sử dụng head không anchor của YOLOv8, không giống kiến trúc ban đầu vốn dựa trên anchor. Các model này nổi tiếng nhờ hiệu quả trong nhiều tình huống thực tế, cân bằng giữa độ chính xác và tốc độ. Mỗi biến thể cung cấp các tính năng và tối ưu hóa riêng, phù hợp với nhiều ứng dụng khác nhau.

Cả ba model đều hỗ trợ một bộ mode toàn diện, đảm bảo tính linh hoạt trong nhiều giai đoạn triển khai model và phát triển. Các mode này gồm Inference, Validation, TrainingExport, cung cấp cho người dùng một bộ công cụ hoàn chỉnh để thực hiện hiệu quả các tác vụ nhận diện đối tượng.

Loại modelPretrained weightCác tác vụ được hỗ trợTrainingValidationInferenceExport
YOLOv3(u)yolov3u.ptPhát hiện đối tượng
YOLOv3-Tiny(u)yolov3-tinyu.ptPhát hiện đối tượng
YOLOv3-SPP(u)yolov3-sppu.ptPhát hiện đối tượng

Bảng này cung cấp cái nhìn tổng quan nhanh về khả năng của từng biến thể YOLOv3, làm nổi bật tính linh hoạt và mức độ phù hợp của chúng với nhiều tác vụ và mode vận hành khác nhau trong quy trình nhận diện đối tượng.

Ví dụ sử dụng#

Ví dụ này cung cấp các ví dụ đơn giản về training và inference với YOLOv3. Để xem tài liệu đầy đủ về các mode này và các mode khác, hãy xem các trang tài liệu Predict, Train, ValExport.

Ví dụ

Các model *.pt được huấn luyện trước bằng PyTorch, cũng như các tệp cấu hình *.yaml, có thể được truyền vào class YOLO() để tạo một instance model trong Python:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3u model
model = YOLO("yolov3u.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv3u model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Trích dẫn và ghi nhận đóng góp#

Nếu sử dụng YOLOv3 trong nghiên cứu, vui lòng trích dẫn các bài báo YOLO ban đầu và repository YOLOv3 của Ultralytics:

Trích dẫn
@article{redmon2018yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal={arXiv preprint arXiv:1804.02767},
  year={2018}
}

Xin cảm ơn Joseph Redmon và Ali Farhadi đã phát triển YOLOv3 ban đầu.

FAQ#

  • YOLOv3 là phiên bản thứ ba của thuật toán YOLO (You Only Look Once) nhận diện đối tượng do Joseph Redmon phát triển, nổi tiếng nhờ khả năng cân bằng giữa độ chính xác và tốc độ, đồng thời sử dụng ba tỷ lệ khác nhau (13x13, 26x26 và 52x52) cho detection. YOLOv3-Ultralytics là bản điều chỉnh YOLOv3 của Ultralytics, bổ sung hỗ trợ cho nhiều model pretrained hơn và giúp tùy chỉnh model dễ dàng hơn. YOLOv3u là biến thể nâng cấp của YOLOv3-Ultralytics, tích hợp split head không anchor và không objectness từ YOLOv8, cải thiện độ mạnh mẽ và độ chính xác của detection đối với các đối tượng có kích thước khác nhau. Để biết thêm chi tiết về các biến thể, hãy tham khảo loạt YOLOv3.

  • Training model YOLOv3 bằng Ultralytics rất đơn giản. Bạn có thể training model bằng Python hoặc CLI:

    Ví dụ
    from ultralytics import YOLO
    
    # Load a COCO-pretrained YOLOv3u model
    model = YOLO("yolov3u.pt")
    
    # Train the model on the COCO8 example dataset for 100 epochs
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Để xem thêm các tùy chọn và hướng dẫn training toàn diện hơn, hãy truy cập tài liệu mode Train.

  • YOLOv3u cải tiến YOLOv3 và YOLOv3-Ultralytics bằng cách tích hợp split head không anchor và không objectness được sử dụng trong các model YOLOv8. Nâng cấp này loại bỏ nhu cầu sử dụng anchor box và điểm objectness được định nghĩa trước, nâng cao khả năng phát hiện chính xác hơn các đối tượng có kích thước và hình dạng khác nhau. Điều này khiến YOLOv3u trở thành lựa chọn tốt hơn cho các tác vụ nhận diện đối tượng phức tạp và đa dạng. Để biết thêm thông tin, hãy tham khảo phần Tính năng chính.

  • Bạn có thể thực hiện inference bằng các model YOLOv3 thông qua script Python hoặc lệnh CLI:

    Ví dụ
    from ultralytics import YOLO
    
    # Load a COCO-pretrained YOLOv3u model
    model = YOLO("yolov3u.pt")
    
    # Run inference with the YOLOv3u model on the 'bus.jpg' image
    results = model("path/to/bus.jpg")

    Tham khảo tài liệu mode Inference để biết thêm chi tiết về cách chạy các model YOLO.

  • YOLOv3, YOLOv3-Tiny và YOLOv3-SPP chủ yếu hỗ trợ các tác vụ nhận diện đối tượng. Các model này có thể được sử dụng trong nhiều giai đoạn triển khai và phát triển model, chẳng hạn như Inference, Validation, Training và Export. Để xem đầy đủ các tác vụ được hỗ trợ cùng thông tin chuyên sâu hơn, hãy truy cập tài liệu về tác vụ Nhận diện đối tượng.

  • Nếu sử dụng YOLOv3 trong nghiên cứu, vui lòng trích dẫn các bài báo YOLO ban đầu và repository YOLOv3 của Ultralytics. Ví dụ trích dẫn BibTeX:

    Trích dẫn
    @article{redmon2018yolov3,
      title={YOLOv3: An Incremental Improvement},
      author={Redmon, Joseph and Farhadi, Ali},
      journal={arXiv preprint arXiv:1804.02767},
      year={2018}
    }

    Để biết thêm chi tiết về trích dẫn, hãy tham khảo phần Trích dẫn và Lời cảm ơn.

Bình luận