Chuyển đến nội dung

Huấn luyện YOLOv5 trên dữ liệu tùy chỉnh

📚 Hướng dẫn này giải thích cách huấn luyện bộ dữ liệu tùy chỉnh của riêng bạn bằng mô hình YOLOv5 🚀. Huấn luyện các mô hình tùy chỉnh là một bước cơ bản để điều chỉnh các giải pháp thị giác máy tính cho các ứng dụng thực tế cụ thể ngoài phát hiện đối tượng chung.

Trước Khi Bắt Đầu

Trước tiên, hãy đảm bảo bạn đã thiết lập môi trường cần thiết. Sao chép kho lưu trữ YOLOv5 và cài đặt các dependency cần thiết từ requirements.txt. Một Python>=3.8.0 môi trường với PyTorch>=1.8 là điều cần thiết. Các mô hình và bộ dữ liệu được tự động tải xuống từ YOLOv5 mới nhất phát hành nếu chúng không được tìm thấy cục bộ.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

Huấn Luyện Trên Dữ Liệu Tùy Chỉnh

Sơ đồ vòng lặp học tập chủ động của Ultralytics hiển thị việc thu thập dữ liệu, gắn nhãn, đào tạo, triển khai và thu thập các trường hợp đặc biệt

Phát triển một mô hình phát hiện đối tượng tùy chỉnh là một quá trình lặp đi lặp lại:

  1. Thu thập & Sắp xếp hình ảnh: Thu thập hình ảnh liên quan đến nhiệm vụ cụ thể của bạn. Dữ liệu đa dạng, chất lượng cao là rất quan trọng. Xem hướng dẫn của chúng tôi về Thu thập và Chú giải dữ liệu.
  2. Gắn nhãn đối tượng: Chú thích chính xác các đối tượng bạn quan tâm trong hình ảnh của mình.
  3. Huấn luyện mô hình: Sử dụng dữ liệu đã được gắn nhãn để huấn luyện mô hình YOLOv5 của bạn. Tận dụng transfer learning bằng cách bắt đầu với các trọng số đã được huấn luyện trước.
  4. Triển khai & Dự đoán: Sử dụng mô hình đã huấn luyện để suy luận trên dữ liệu mới, chưa từng thấy.
  5. Thu thập các trường hợp đặc biệt: Xác định các tình huống mà mô hình hoạt động kém (các trường hợp đặc biệt) và thêm dữ liệu tương tự vào tập dữ liệu của bạn để cải thiện độ mạnh mẽ. Lặp lại quy trình.

Ultralytics HUB cung cấp một giải pháp không cần code, được sắp xếp hợp lý cho toàn bộ chu trình các hoạt động machine learning (MLOps) này, bao gồm quản lý bộ dữ liệu, huấn luyện mô hình và triển khai.

Cấp phép

Ultralytics cung cấp hai tùy chọn cấp phép để phù hợp với các tình huống sử dụng đa dạng:

  • Giấy phép AGPL-3.0: Giấy phép mã nguồn mở được OSI phê duyệt này lý tưởng cho sinh viên, nhà nghiên cứu và những người đam mê hợp tác mở và chia sẻ kiến thức. Nó yêu cầu các sản phẩm phái sinh phải được chia sẻ theo cùng một giấy phép. Xem tệp LICENSE để biết đầy đủ chi tiết.
  • Giấy phép doanh nghiệp: Được thiết kế cho các ứng dụng thương mại, giấy phép này cho phép tích hợp liền mạch phần mềm Ultralytics và các mô hình AI vào các sản phẩm và dịch vụ thương mại mà không có các quy định nguồn mở của AGPL-3.0. Nếu dự án của bạn yêu cầu triển khai thương mại, hãy yêu cầu Giấy phép doanh nghiệp.

Tìm hiểu thêm về các tùy chọn cấp phép của chúng tôi trên trang Cấp phép Ultralytics.

Trước khi bắt đầu quá trình huấn luyện, việc chuẩn bị bộ dữ liệu là rất cần thiết.

1. Tạo Dataset

Các mô hình YOLOv5 yêu cầu dữ liệu được gắn nhãn để tìm hiểu các đặc điểm trực quan của các lớp đối tượng. Tổ chức bộ dữ liệu của bạn một cách chính xác là chìa khóa.

1.1 Tạo dataset.yaml

Tệp cấu hình bộ dữ liệu (ví dụ: coco128.yaml) phác thảo cấu trúc của bộ dữ liệu, tên lớp và đường dẫn đến thư mục hình ảnh. COCO128 đóng vai trò như một tập dữ liệu mẫu nhỏ, bao gồm 128 hình ảnh đầu tiên từ bộ COCO tập dữ liệu. Nó hữu ích để nhanh chóng kiểm tra quy trình huấn luyện và chẩn đoán các vấn đề tiềm ẩn như overfitting.

Hàm dataset.yaml cấu trúc tệp bao gồm:

  • path: Thư mục gốc chứa bộ dữ liệu.
  • train, val, test: Đường dẫn tương đối từ path đến các thư mục chứa hình ảnh hoặc tệp văn bản liệt kê đường dẫn hình ảnh cho bộ đào tạo, xác thực và thử nghiệm.
  • names: Một từ điển ánh xạ các chỉ số lớp (bắt đầu từ 0) đến tên lớp tương ứng của chúng.

Dưới đây là cấu trúc cho coco128.yaml (xem trên GitHub):

# Dataset root directory relative to the yolov5 directory
path: coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

1.2 Tận dụng các mô hình để gắn nhãn tự động

Mặc dù việc gán nhãn thủ công bằng các công cụ là một phương pháp phổ biến, nhưng quá trình này có thể tốn thời gian. Những tiến bộ gần đây trong các mô hình nền tảng mang lại khả năng tự động hóa hoặc bán tự động hóa quy trình chú thích, có khả năng tăng tốc đáng kể việc tạo tập dữ liệu. Dưới đây là một vài ví dụ về các mô hình có thể hỗ trợ tạo nhãn:

  • Google Gemini: Các mô hình đa phương thức lớn như Gemini sở hữu khả năng hiểu hình ảnh mạnh mẽ. Chúng có thể được nhắc để xác định và định vị các đối tượng trong hình ảnh, tạo ra các bounding box hoặc mô tả có thể được chuyển đổi thành nhãn định dạng YOLO. Khám phá tiềm năng của nó trong notebook hướng dẫn được cung cấp.
  • SAM2 (Segment Anything Model 2): Các mô hình nền tảng tập trung vào phân đoạn, như SAM2, có thể xác định và phân định các đối tượng với độ chính xác cao. Mặc dù chủ yếu dùng để phân đoạn, nhưng các mặt nạ thu được thường có thể được chuyển đổi thành chú thích hộp giới hạn phù hợp cho các tác vụ phát hiện đối tượng.
  • YOLOWorld: Mô hình này cung cấp khả năng phát hiện từ vựng mở. Bạn có thể cung cấp mô tả văn bản về các đối tượng bạn quan tâm và YOLOWorld có thể định vị chúng trong hình ảnh mà không cần đào tạo trước về các lớp cụ thể đó. Điều này có thể được sử dụng làm điểm khởi đầu để tạo nhãn ban đầu, sau đó có thể được tinh chỉnh.

Sử dụng các mô hình này có thể cung cấp một bước "gắn nhãn trước", giảm bớt nỗ lực thủ công cần thiết. Tuy nhiên, điều quan trọng là phải xem xét và tinh chỉnh các nhãn được tạo tự động để đảm bảo tính chính xác và nhất quán, vì chất lượng ảnh hưởng trực tiếp đến hiệu suất của mô hình YOLOv5 đã được đào tạo của bạn. Sau khi tạo (và có khả năng tinh chỉnh) nhãn của bạn, hãy đảm bảo chúng tuân thủ định dạng YOLO: một *.txt tệp trên mỗi ảnh, với mỗi dòng đại diện cho một đối tượng như class_index x_center y_center width height (tọa độ được chuẩn hóa, lớp được lập chỉ mục từ 0). Nếu một hình ảnh không có đối tượng quan tâm nào, thì không có *.txt tệp là cần thiết.

Định dạng YOLO *.txt thông số kỹ thuật của tệp là chính xác:

  • Một hàng cho mỗi hộp giới hạn đối tượng.
  • Mỗi hàng phải chứa: class_index x_center y_center width height.
  • Tọa độ phải là đã chuẩn hóa về một phạm vi từ 0 đến 1. Để đạt được điều này, hãy chia các giá trị pixel của x_centerwidth theo tổng chiều rộng của hình ảnh và chia y_centerheight theo tổng chiều cao của hình ảnh.
  • Chỉ số lớp được đánh số từ 0 (ví dụ: lớp đầu tiên được biểu thị bằng 0, cái thứ hai bởi 1, v.v.).

Ảnh ví dụ với hai người và một chiếc cà vạt được chú thích

Tệp nhãn tương ứng với hình ảnh trên, chứa hai đối tượng 'người' (chỉ số lớp 0) và một đối tượng 'tie' (chỉ số lớp 27), sẽ trông như thế này:

Ví dụ về nội dung tệp nhãn định dạng YOLO cho ảnh đã chú thích

1.3 Sắp xếp thư mục

Cấu trúc của bạn các bộ dữ liệu thư mục như hình minh họa bên dưới. Theo mặc định, YOLOv5 dự đoán thư mục bộ dữ liệu (ví dụ: /coco128) nằm trong một /datasets thư mục nằm liền kề với thư mục /yolov5 thư mục kho lưu trữ.

YOLOv5 tự động định vị các nhãn cho mỗi hình ảnh bằng cách thay thế phiên bản cuối cùng của /images/ trong đường dẫn hình ảnh với /labels/. Ví dụ:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

Cấu trúc thư mục được đề xuất là:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

Sơ đồ hiển thị cấu trúc thư mục bộ dữ liệu YOLOv5 được đề xuất

2. Chọn một Mô hình

Chọn một mô hình được huấn luyện trước để bắt đầu quá trình huấn luyện. Bắt đầu với các trọng số được huấn luyện trước giúp tăng tốc đáng kể quá trình học và cải thiện hiệu suất so với việc huấn luyện từ đầu. YOLOv5 cung cấp nhiều kích cỡ mô hình khác nhau, mỗi kích cỡ cân bằng tốc độ và độ chính xác khác nhau. Ví dụ: YOLOv5s là mô hình nhỏ thứ hai và nhanh nhất, phù hợp với các môi trường bị hạn chế về tài nguyên. Tham khảo bảng README để so sánh chi tiết tất cả các mô hình có sẵn.

Biểu đồ so sánh các mô hình YOLOv5 cho thấy kích thước, tốc độ và độ chính xác

3. Huấn luyện

Bắt đầu huấn luyện mô hình sử dụng train.py script. Các đối số thiết yếu bao gồm:

  • --img: Xác định đầu vào kích thước hình ảnh (ví dụ: --img 640). Kích thước lớn hơn thường mang lại độ chính xác tốt hơn nhưng đòi hỏi nhiều bộ nhớ GPU hơn.
  • --batch: Xác định kích thước lô (ví dụ: --batch 16). Chọn kích thước lớn nhất mà GPU của bạn có thể xử lý.
  • --epochs: Chỉ định tổng số lần huấn luyện epochs (ví dụ: --epochs 100). Một epoch đại diện cho một lượt duyệt đầy đủ trên toàn bộ tập dữ liệu huấn luyện.
  • --data: Đường dẫn đến dataset.yaml tệp (ví dụ: --data coco128.yaml).
  • --weights: Đường dẫn đến tệp weights ban đầu. Sử dụng weights đã được huấn luyện trước (ví dụ: --weights yolov5s.pt) được đặc biệt khuyến nghị để hội tụ nhanh hơn và cho kết quả vượt trội. Để huấn luyện từ đầu (không nên trừ khi bạn có một bộ dữ liệu rất lớn và các nhu cầu cụ thể), hãy sử dụng --weights '' --cfg yolov5s.yaml.

Các trọng số đã được huấn luyện trước sẽ tự động được tải xuống từ phiên bản YOLOv5 mới nhất nếu không tìm thấy cục bộ.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Tối ưu hóa Tốc độ Huấn luyện

💡 Sử dụng --cache ram hoặc --cache disk để lưu trữ hình ảnh bộ dữ liệu trong bộ nhớ cache RAM hoặc đĩa cục bộ. Điều này giúp tăng tốc đáng kể quá trình huấn luyện, đặc biệt khi các hoạt động I/O (Đầu vào/Đầu ra) của tập dữ liệu là một nút thắt cổ chai. Lưu ý rằng điều này đòi hỏi RAM hoặc dung lượng đĩa đáng kể.

Lưu trữ Dữ liệu cục bộ

💡 Luôn huấn luyện bằng cách sử dụng các bộ dữ liệu được lưu trữ cục bộ. Truy cập dữ liệu từ các ổ đĩa mạng (như Google Drive) hoặc bộ nhớ từ xa có thể chậm hơn đáng kể và cản trở hiệu suất huấn luyện. Sao chép bộ dữ liệu của bạn vào ổ SSD cục bộ thường là cách tốt nhất.

Tất cả các đầu ra huấn luyện, bao gồm trọng số và nhật ký, được lưu trong runs/train/ thư mục. Mỗi phiên đào tạo tạo một thư mục con mới (ví dụ: runs/train/exp, runs/train/exp2, v.v.). Để có trải nghiệm thực tế và tương tác, hãy khám phá phần huấn luyện trong các notebook hướng dẫn chính thức của chúng tôi: Mở Trong Colab Mở Trong Kaggle

4. Trực quan hóa

YOLOv5 tích hợp liền mạch với nhiều công cụ khác nhau để trực quan hóa tiến trình huấn luyện, đánh giá kết quả và theo dõi hiệu suất theo thời gian thực.

Ghi nhật ký và trực quan hóa bằng Comet 🌟 MỚI

Comet được tích hợp đầy đủ để theo dõi thử nghiệm toàn diện. Trực quan hóa các chỉ số trực tiếp, lưu siêu tham số, quản lý bộ dữ liệu và điểm kiểm tra mô hình, đồng thời phân tích dự đoán mô hình bằng Comet Custom Panels tương tác.

Bắt đầu rất đơn giản:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

Tìm hiểu sâu hơn về các tính năng được hỗ trợ trong Hướng dẫn tích hợp Comet. Tìm hiểu thêm về khả năng của Comet từ tài liệu. Hãy thử Comet Colab Notebook để có bản demo trực tiếp: Mở Trong Colab

Giao diện người dùng Comet hiển thị các số liệu và hình ảnh trực quan về quá trình huấn luyện YOLOv5

Ghi nhật ký và tự động hóa bằng ClearML 🌟 MỚI

Tích hợp ClearML cho phép theo dõi thử nghiệm chi tiết, quản lý phiên bản bộ dữ liệu và thậm chí thực thi từ xa các lần chạy huấn luyện. Kích hoạt ClearML với các bước đơn giản sau:

  • Cài đặt gói: pip install clearml
  • Khởi tạo ClearML: Chạy clearml-init một lần để kết nối với máy chủ ClearML của bạn (tự lưu trữ hoặc bậc miễn phí).

ClearML tự động thu thập các chi tiết thử nghiệm, tải lên mô hình, so sánh, các thay đổi mã chưa cam kết và các gói đã cài đặt, đảm bảo khả năng tái tạo hoàn toàn. Bạn có thể dễ dàng lên lịch các tác vụ huấn luyện trên các agent từ xa và quản lý các phiên bản tập dữ liệu bằng ClearML Data. Khám phá Hướng dẫn tích hợp ClearML để biết chi tiết toàn diện.

Giao diện người dùng Quản lý Thử nghiệm ClearML hiển thị biểu đồ và nhật ký cho một lần chạy huấn luyện YOLOv5

Ghi nhật ký cục bộ

Kết quả huấn luyện được tự động ghi lại bằng cách sử dụng TensorBoard và được lưu dưới dạng CSV các tệp trong thư mục thử nghiệm cụ thể (ví dụ:) runs/train/exp). Dữ liệu được ghi lại bao gồm:

  • Mất mát trong quá trình huấn luyện và xác thực, cùng các chỉ số hiệu suất.
  • Hình ảnh sample_images hiển thị các phương pháp tăng cường đã được áp dụng (như mosaics).
  • Nhãn ground truth cùng với các dự đoán mô hình để kiểm tra trực quan.
  • Các số liệu đánh giá chính như đường cong Precision-Recall (PR).
  • Ma trận nhầm lẫn để phân tích chi tiết hiệu suất theo từng lớp.

Ví dụ về kết quả ghi nhật ký cục bộ bao gồm biểu đồ và ảnh ghép từ quá trình huấn luyện YOLOv5

Hàm results.csv tệp được cập nhật sau mỗi epoch và được vẽ dưới dạng results.png sau khi quá trình huấn luyện kết thúc. Bạn cũng có thể vẽ bất kỳ results.csv tệp theo cách thủ công bằng cách sử dụng hàm tiện ích được cung cấp:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

Ví dụ về biểu đồ results.png hiển thị các số liệu huấn luyện như mAP, độ chính xác, độ thu hồi và loss theo epochs

5. Các Bước Tiếp Theo

Sau khi hoàn thành quá trình huấn luyện, điểm kiểm tra mô hình hoạt động tốt nhất (best.pt) được lưu và sẵn sàng để triển khai hoặc tinh chỉnh thêm. Các bước tiếp theo tiềm năng bao gồm:

Môi trường được hỗ trợ

Ultralytics cung cấp các môi trường sẵn sàng sử dụng được trang bị các phần phụ thuộc thiết yếu như CUDA, cuDNN, PythonPyTorch, tạo điều kiện khởi đầu suôn sẻ.

Trạng thái dự án

YOLOv5 Continuous Integration Status Badge

Huy hiệu này cho biết rằng tất cả các bài kiểm tra GitHub Actions Tích hợp liên tục (CI) của YOLOv5 đều vượt qua thành công. Các bài kiểm tra CI nghiêm ngặt này bao gồm các chức năng cốt lõi, bao gồm huấn luyện, xác thực, suy luận, xuấtđiểm chuẩn, trên các hệ điều hành macOS, Windows và Ubuntu. Các bài kiểm tra được thực hiện tự động sau mỗi 24 giờ và sau mỗi lần commit code, đảm bảo tính ổn định nhất quán và hiệu suất tối ưu.

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

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

Làm cách nào để huấn luyện YOLOv5 trên bộ dữ liệu tùy chỉnh của tôi?

Huấn luyện YOLOv5 trên một bộ dữ liệu tùy chỉnh bao gồm một số bước chính:

  1. Chuẩn bị Bộ dữ liệu của bạn: Thu thập hình ảnh và tạo chú thích. Đảm bảo chú thích ở định dạng yêu cầu định dạng YOLO. Sắp xếp hình ảnh và nhãn vào train/val/ (và tùy chọn test/) directories. Cân nhắc sử dụng các mô hình như Google Gemini, SAM2, hoặc YOLOWorld để hỗ trợ hoặc tự động hóa quy trình gắn nhãn (xem Phần 1.2).
  2. Thiết Lập Môi Trường Của Bạn: Sao chép kho lưu trữ YOLOv5 và cài đặt các зависимостей bằng cách sử dụng pip install -r requirements.txt.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Tạo Cấu hình Tập Dữ Liệu: Xác định đường dẫn bộ dữ liệu, số lượng lớp và tên lớp trong dataset.yaml tập tin.
  4. Bắt Đầu Huấn Luyện: Thực thi phương thức train.py script, cung cấp đường dẫn đến dataset.yaml, trọng số được huấn luyện trước mong muốn (ví dụ: yolov5s.pt), kích thước ảnh, kích thước lô và số lượng epochs.
    python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
    

Tại sao tôi nên sử dụng Ultralytics HUB để huấn luyện các mô hình YOLO của mình?

Ultralytics HUB là một nền tảng toàn diện được thiết kế để đơn giản hóa toàn bộ vòng đời phát triển mô hình YOLO, thường là không cần viết bất kỳ dòng code nào. Các lợi ích chính bao gồm:

  • Huấn Luyện Đơn Giản Hóa: Dễ dàng huấn luyện các mô hình bằng cách sử dụng các môi trường được cấu hình sẵn và giao diện người dùng trực quan.
  • Quản lý dữ liệu tích hợp: Tải lên, kiểm soát phiên bản và quản lý bộ dữ liệu của bạn một cách hiệu quả trong nền tảng.
  • Giám sát theo thời gian thực: Theo dõi tiến trình huấn luyện và trực quan hóa các số liệu hiệu suất bằng các công cụ tích hợp như Comet hoặc TensorBoard.
  • Tính năng cộng tác: Tạo điều kiện làm việc nhóm thông qua các tài nguyên dùng chung, công cụ quản lý dự án và chia sẻ mô hình dễ dàng.
  • Triển khai không cần code: Triển khai trực tiếp các mô hình đã huấn luyện tới nhiều mục tiêu khác nhau.

Để có hướng dẫn thực tế, hãy xem bài đăng trên blog của chúng tôi: Cách huấn luyện các mô hình tùy chỉnh của bạn với Ultralytics HUB.

Làm cách nào để chuyển đổi dữ liệu đã được chú thích của tôi sang định dạng YOLOv5?

Cho dù bạn chú thích thủ công hay sử dụng các công cụ tự động (như những công cụ được đề cập trong Phần 1.2), các nhãn cuối cùng phải ở định dạng YOLO format cụ thể mà YOLOv5 yêu cầu:

  • Tạo một cái .txt tệp cho mỗi ảnh. Tên tệp phải khớp với tên tệp ảnh (ví dụ: image1.jpg tương ứng với image1.txt). Đặt các tệp này vào labels/ thư mục song song với images/ thư mục (ví dụ: ../datasets/mydataset/labels/train/).
  • Mỗi dòng trong một .txt tệp đại diện cho một chú thích đối tượng và tuân theo định dạng: class_index center_x center_y width height.
  • Tọa độ (center_x, center_y, width, height) phải là đã chuẩn hóa (giá trị từ 0.0 đến 1.0) so với kích thước của ảnh.
  • Chỉ số lớp là bắt đầu từ 0 (lớp đầu tiên là 0, cái thứ hai là 1, v.v.).

Nhiều công cụ chú giải thủ công cung cấp khả năng xuất trực tiếp sang định dạng YOLO. Nếu sử dụng các mô hình tự động, bạn sẽ cần các tập lệnh hoặc quy trình để chuyển đổi đầu ra của chúng (ví dụ: tọa độ hộp giới hạn, mặt nạ phân đoạn) thành định dạng văn bản được chuẩn hóa cụ thể này. Đảm bảo cấu trúc bộ dữ liệu cuối cùng của bạn tuân thủ theo ví dụ được cung cấp trong hướng dẫn. Để biết thêm chi tiết, hãy xem Hướng dẫn Thu thập và Chú giải Dữ liệu của chúng tôi.

Các tùy chọn cấp phép để sử dụng YOLOv5 trong các ứng dụng thương mại là gì?

Ultralytics cung cấp giấy phép linh hoạt phù hợp với các nhu cầu khác nhau:

  • Giấy phép AGPL-3.0: Giấy phép mã nguồn mở này phù hợp cho nghiên cứu học thuật, các dự án cá nhân và các tình huống mà việc tuân thủ mã nguồn mở là chấp nhận được. Nó quy định rằng các sửa đổi và các sản phẩm phái sinh cũng phải được mở nguồn theo AGPL-3.0. Xem lại chi tiết Giấy phép AGPL-3.0.
  • Giấy phép doanh nghiệp: Một giấy phép thương mại được thiết kế cho các doanh nghiệp tích hợp YOLOv5 vào các sản phẩm hoặc dịch vụ độc quyền. Giấy phép này loại bỏ các nghĩa vụ nguồn mở của AGPL-3.0, cho phép phân phối nguồn đóng. Truy cập trang cấp phép của chúng tôi để biết thêm chi tiết hoặc yêu cầu Giấy phép doanh nghiệp.

Chọn giấy phép phù hợp nhất với các yêu cầu và mô hình phân phối của dự án bạn.



📅 Đã tạo 1 năm trước ✏️ Cập nhật 2 tháng trước

Bình luận