Các phương pháp hay nhất về Machine Learning và mẹo đào tạo mô hình
Giới thiệu
Một trong những bước quan trọng nhất khi làm việc trong một dự án thị giác máy tính là đào tạo mô hình. Trước khi đạt đến bước này, bạn cần xác định mục tiêu của mình và thu thập và chú thích dữ liệu của bạn. Sau khi xử lý sơ bộ dữ liệu để đảm bảo dữ liệu sạch sẽ và nhất quán, bạn có thể chuyển sang đào tạo mô hình của mình.
Xem: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and [Mixed Precision](https://www.ultralytics.com/glossary/mixed-precision)
Vậy, đào tạo mô hình là gì? Đào tạo mô hình là quá trình dạy mô hình của bạn nhận ra các mẫu trực quan và đưa ra dự đoán dựa trên dữ liệu của bạn. Nó ảnh hưởng trực tiếp đến hiệu suất và độ chính xác của ứng dụng của bạn. Trong hướng dẫn này, chúng tôi sẽ đề cập đến các phương pháp hay nhất, kỹ thuật tối ưu hóa và mẹo khắc phục sự cố để giúp bạn đào tạo các mô hình thị giác máy tính của mình một cách hiệu quả.
How to Train a Machine Learning Model
Một mô hình thị giác máy tính được đào tạo bằng cách điều chỉnh các tham số bên trong của nó để giảm thiểu lỗi. Ban đầu, mô hình được cung cấp một tập hợp lớn các hình ảnh được gắn nhãn. Nó đưa ra dự đoán về những gì có trong những hình ảnh này và các dự đoán được so sánh với nhãn hoặc nội dung thực tế để tính toán lỗi. Những lỗi này cho thấy các dự đoán của mô hình cách xa các giá trị thực như thế nào.
During training, the model iteratively makes predictions, calculates errors, and updates its parameters through a process called backpropagation. In this process, the model adjusts its internal parameters (weights and biases) to reduce the errors. By repeating this cycle many times, the model gradually improves its accuracy. Over time, it learns to recognize complex patterns such as shapes, colors, and textures.
This learning process makes it possible for the computer vision model to perform various tasks, including object detection, instance segmentation, and image classification. The ultimate goal is to create a model that can generalize its learning to new, unseen images so that it can accurately understand visual data in real-world applications.
Bây giờ chúng ta đã biết những gì đang xảy ra đằng sau hậu trường khi chúng ta đào tạo một mô hình, hãy xem xét các điểm cần xem xét khi đào tạo một mô hình.
Đào tạo về bộ dữ liệu lớn
Có một vài khía cạnh khác nhau để suy nghĩ khi bạn dự định sử dụng một tập dữ liệu lớn để đào tạo một mô hình. Ví dụ: bạn có thể điều chỉnh kích thước lô, kiểm soát GPU sử dụng, chọn sử dụng đào tạo đa cấp, v.v. Hãy xem qua từng tùy chọn này một cách chi tiết.
Kích thước lô và GPU Sử dụng
Khi đào tạo các mô hình trên các tập dữ liệu lớn, hãy sử dụng hiệu quả GPU là chìa khóa. Kích thước lô là một yếu tố quan trọng. Đó là số lượng mẫu dữ liệu mà một mô hình học máy xử lý trong một lần lặp đào tạo duy nhất. Sử dụng kích thước lô tối đa được hỗ trợ bởi GPU, bạn hoàn toàn có thể tận dụng khả năng của nó và giảm thời gian đào tạo mô hình. Tuy nhiên, bạn muốn tránh hết GPU trí nhớ. Nếu bạn gặp lỗi bộ nhớ, hãy giảm dần kích thước lô cho đến khi mô hình hoạt động trơn tru.
With respect to YOLO11, you can set the batch_size
tham số trong Cấu hình đào tạo để phù hợp với GPU khả năng. Ngoài ra, cài đặt batch=-1
in your training script will automatically determine the batch size that can be efficiently processed based on your device's capabilities. By fine-tuning the batch size, you can make the most of your GPU resources and improve the overall training process.
Đào tạo tập hợp con
Đào tạo tập hợp con là một chiến lược thông minh liên quan đến việc đào tạo mô hình của bạn trên một tập dữ liệu nhỏ hơn đại diện cho tập dữ liệu lớn hơn. Nó có thể tiết kiệm thời gian và nguồn lực, đặc biệt là trong quá trình phát triển và thử nghiệm mô hình ban đầu. Nếu bạn đang thiếu thời gian hoặc thử nghiệm với các cấu hình mô hình khác nhau, đào tạo tập hợp con là một lựa chọn tốt.
When it comes to YOLO11, you can easily implement subset training by using the fraction
thông số. Tham số này cho phép bạn chỉ định phần nào của tập dữ liệu sẽ sử dụng để đào tạo. Ví dụ: cài đặt fraction=0.1
sẽ đào tạo mô hình của bạn trên 10% dữ liệu. Bạn có thể sử dụng kỹ thuật này để lặp lại nhanh chóng và điều chỉnh mô hình của mình trước khi cam kết đào tạo mô hình bằng tập dữ liệu đầy đủ. Đào tạo tập hợp con giúp bạn tiến bộ nhanh chóng và xác định sớm các vấn đề tiềm ẩn.
Đào tạo đa quy mô
Đào tạo đa cấp độ là một kỹ thuật cải thiện khả năng khái quát hóa mô hình của bạn bằng cách đào tạo nó trên các hình ảnh có kích thước khác nhau. Mô hình của bạn có thể học cách phát hiện các đối tượng ở các quy mô và khoảng cách khác nhau và trở nên mạnh mẽ hơn.
For example, when you train YOLO11, you can enable multiscale training by setting the scale
thông số. Tham số này điều chỉnh kích thước của hình ảnh đào tạo theo một yếu tố cụ thể, mô phỏng các đối tượng ở các khoảng cách khác nhau. Ví dụ: cài đặt scale=0.5
sẽ giảm một nửa kích thước hình ảnh, trong khi scale=2.0
sẽ nhân đôi nó. Việc định cấu hình tham số này cho phép mô hình của bạn trải nghiệm nhiều tỷ lệ hình ảnh khác nhau và cải thiện khả năng phát hiện của nó trên các kích thước và kịch bản đối tượng khác nhau.
Caching
Bộ nhớ đệm là một kỹ thuật quan trọng để nâng cao hiệu quả của việc đào tạo các mô hình học máy. Bằng cách lưu trữ hình ảnh được xử lý sẵn trong bộ nhớ, bộ nhớ đệm làm giảm thời gian GPU dành thời gian chờ dữ liệu được tải từ đĩa. Mô hình có thể liên tục nhận dữ liệu mà không bị chậm trễ do hoạt động I / O đĩa.
Caching can be controlled when training YOLO11 using the cache
thông số:
cache=True
: Lưu trữ hình ảnh tập dữ liệu trong RAM, cung cấp tốc độ truy cập nhanh nhất nhưng với chi phí sử dụng bộ nhớ tăng lên.cache='disk'
: Lưu trữ hình ảnh trên đĩa, chậm hơn RAM nhưng nhanh hơn so với tải dữ liệu mới mỗi lần.cache=False
: Vô hiệu hóa bộ nhớ đệm, dựa hoàn toàn vào I / O đĩa, đây là tùy chọn chậm nhất.
Đào tạo chính xác hỗn hợp
Mixed precision training uses both 16-bit (FP16) and 32-bit (FP32) floating-point types. The strengths of both FP16 and FP32 are leveraged by using FP16 for faster computation and FP32 to maintain precision where needed. Most of the neural network's operations are done in FP16 to benefit from faster computation and lower memory usage. However, a master copy of the model's weights is kept in FP32 to ensure accuracy during the weight update steps. You can handle larger models or larger batch sizes within the same hardware constraints.
To implement mixed precision training, you'll need to modify your training scripts and ensure your hardware (like GPUs) supports it. Many modern deep learning frameworks, such as Tensorflow, offer built-in support for mixed precision.
Mixed precision training is straightforward when working with YOLO11. You can use the amp
gắn cờ trong cấu hình đào tạo của bạn. Khung cảnh amp=True
cho phép đào tạo Độ chính xác hỗn hợp tự động (AMP). Đào tạo chính xác hỗn hợp là một cách đơn giản nhưng hiệu quả để tối ưu hóa quy trình đào tạo mô hình của bạn.
Trọng lượng được đào tạo trước
Using pretrained weights is a smart way to speed up your model's training process. Pretrained weights come from models already trained on large datasets, giving your model a head start. Transfer learning adapts pretrained models to new, related tasks. Fine-tuning a pre-trained model involves starting with these weights and then continuing training on your specific dataset. This method of training results in faster training times and often better performance because the model starts with a solid understanding of basic features.
Các pretrained
parameter makes transfer learning easy with YOLO11. Setting pretrained=True
sẽ sử dụng trọng lượng được đào tạo trước mặc định hoặc bạn có thể chỉ định đường dẫn đến mô hình được đào tạo trước tùy chỉnh. Sử dụng tạ được đào tạo trước và học chuyển tiếp một cách hiệu quả giúp tăng khả năng của mô hình và giảm chi phí đào tạo.
Các kỹ thuật khác cần xem xét khi xử lý một tập dữ liệu lớn
Có một vài kỹ thuật khác cần xem xét khi xử lý một tập dữ liệu lớn:
- Learning Rate Schedulers: Implementing learning rate schedulers dynamically adjusts the learning rate during training. A well-tuned learning rate can prevent the model from overshooting minima and improve stability. When training YOLO11, the
lrf
Tham số giúp quản lý việc lên lịch tỷ lệ học tập bằng cách đặt tỷ lệ học tập cuối cùng là một phần nhỏ của tỷ lệ ban đầu. - Đào tạo phân tán: Để xử lý các tập dữ liệu lớn, đào tạo phân tán có thể là một yếu tố thay đổi cuộc chơi. Bạn có thể giảm thời gian đào tạo bằng cách phân tán khối lượng công việc đào tạo trên nhiều GPU hoặc máy.
Số lượng kỷ nguyên để đào tạo
Khi đào tạo một mô hình, một kỷ nguyên đề cập đến một lần hoàn thành thông qua toàn bộ tập dữ liệu đào tạo. Trong một kỷ nguyên, mô hình xử lý từng ví dụ trong tập đào tạo một lần và cập nhật các tham số của nó dựa trên thuật toán học tập. Nhiều kỷ nguyên thường cần thiết để cho phép mô hình tìm hiểu và tinh chỉnh các tham số của nó theo thời gian.
A common question that comes up is how to determine the number of epochs to train the model for. A good starting point is 300 epochs. If the model overfits early, you can reduce the number of epochs. If overfitting does not occur after 300 epochs, you can extend the training to 600, 1200, or more epochs.
However, the ideal number of epochs can vary based on your dataset's size and project goals. Larger datasets might require more epochs for the model to learn effectively, while smaller datasets might need fewer epochs to avoid overfitting. With respect to YOLO11, you can set the epochs
tham số trong kịch bản đào tạo của bạn.
Dừng lại sớm
Dừng sớm là một kỹ thuật có giá trị để tối ưu hóa đào tạo mô hình. Bằng cách theo dõi hiệu suất xác thực, bạn có thể tạm dừng đào tạo khi mô hình ngừng cải thiện. Bạn có thể tiết kiệm tài nguyên tính toán và ngăn chặn overfitting.
The process involves setting a patience parameter that determines how many epochs to wait for an improvement in validation metrics before stopping training. If the model's performance does not improve within these epochs, training is stopped to avoid wasting time and resources.
For YOLO11, you can enable early stopping by setting the patience parameter in your training configuration. For example, patience=5
Có nghĩa là quá trình đào tạo sẽ dừng lại nếu không có cải thiện về số liệu xác thực trong 5 kỷ nguyên liên tiếp. Sử dụng phương pháp này đảm bảo quá trình đào tạo vẫn hiệu quả và đạt được hiệu suất tối ưu mà không cần tính toán quá mức.
Lựa chọn giữa đào tạo đám mây và cục bộ
Có hai tùy chọn để đào tạo mô hình của bạn: đào tạo đám mây và đào tạo cục bộ.
Đào tạo đám mây cung cấp khả năng mở rộng và phần cứng mạnh mẽ và lý tưởng để xử lý các bộ dữ liệu lớn và các mô hình phức tạp. Các nền tảng như Google Đám mây, AWS và Azure cung cấp quyền truy cập theo yêu cầu vào GPU và TPU hiệu suất cao, tăng tốc thời gian đào tạo và cho phép thử nghiệm với các mô hình lớn hơn. Tuy nhiên, đào tạo đám mây có thể tốn kém, đặc biệt là trong thời gian dài và việc truyền dữ liệu có thể làm tăng thêm chi phí và độ trễ.
Đào tạo địa phương cung cấp khả năng kiểm soát và tùy chỉnh tốt hơn, cho phép bạn điều chỉnh môi trường của mình theo nhu cầu cụ thể và tránh chi phí đám mây liên tục. Nó có thể tiết kiệm hơn cho các dự án dài hạn và vì dữ liệu của bạn luôn tại chỗ, nên nó an toàn hơn. Tuy nhiên, phần cứng cục bộ có thể có những hạn chế về tài nguyên và yêu cầu bảo trì, điều này có thể dẫn đến thời gian đào tạo lâu hơn cho các mô hình lớn.
Chọn một trình tối ưu hóa
An optimizer is an algorithm that adjusts the weights of your neural network to minimize the loss function, which measures how well the model is performing. In simpler terms, the optimizer helps the model learn by tweaking its parameters to reduce errors. Choosing the right optimizer directly affects how quickly and accurately the model learns.
Bạn cũng có thể tinh chỉnh các thông số trình tối ưu hóa để cải thiện hiệu suất mô hình. Điều chỉnh tốc độ học tập đặt kích thước của các bước khi cập nhật thông số. Để ổn định, bạn có thể bắt đầu với tốc độ học tập vừa phải và giảm dần theo thời gian để cải thiện việc học lâu dài. Ngoài ra, việc thiết lập động lượng xác định mức độ ảnh hưởng của các bản cập nhật trong quá khứ đối với các bản cập nhật hiện tại. Giá trị chung cho động lượng là khoảng 0,9. Nó thường cung cấp một sự cân bằng tốt.
Trình tối ưu hóa phổ biến
Các trình tối ưu hóa khác nhau có những điểm mạnh và điểm yếu khác nhau. Chúng ta hãy xem qua một vài trình tối ưu hóa phổ biến.
-
SGD (Stochastic Gradient Descent):
- Cập nhật các tham số mô hình bằng cách sử dụng gradient của hàm mất liên quan đến các tham số.
- Đơn giản và hiệu quả nhưng có thể chậm hội tụ và có thể bị mắc kẹt trong mức tối thiểu cục bộ.
-
Adam (Ước tính thời điểm thích ứng):
- Kết hợp lợi ích của cả SGD với động lượng và RMSProp.
- Điều chỉnh tốc độ học tập cho từng tham số dựa trên ước tính khoảnh khắc đầu tiên và thứ hai của độ dốc.
- Rất thích hợp cho dữ liệu ồn ào và độ dốc thưa thớt.
- Efficient and generally requires less tuning, making it a recommended optimizer for YOLO11.
-
RMSProp (Nhân giống bình phương trung bình gốc):
- Điều chỉnh tốc độ học tập cho mỗi tham số bằng cách chia gradient cho trung bình chạy của độ lớn của các gradient gần đây.
- Helps in handling the vanishing gradient problem and is effective for recurrent neural networks.
For YOLO11, the optimizer
tham số cho phép bạn chọn từ các trình tối ưu hóa khác nhau, bao gồm SGD, Adam, AdamW, NAdam, RAdam và RMSProp hoặc bạn có thể đặt nó thành auto
để lựa chọn tự động dựa trên cấu hình mô hình.
Kết nối với cộng đồng
Trở thành một phần của cộng đồng những người đam mê thị giác máy tính có thể giúp bạn giải quyết vấn đề và học nhanh hơn. Dưới đây là một số cách để kết nối, nhận trợ giúp và chia sẻ ý tưởng.
Tài nguyên cộng đồng
- GitHub Issues: Visit the YOLO11 GitHub repository and use the Issues tab to ask questions, report bugs, and suggest new features. The community and maintainers are very active and ready to help.
- Ultralytics Máy chủ Discord: Tham gia Ultralytics Máy chủ Discord để trò chuyện với những người dùng và nhà phát triển khác, nhận hỗ trợ và chia sẻ kinh nghiệm của bạn.
Tài liệu chính thức
- Ultralytics YOLO11 Documentation: Check out the official YOLO11 documentation for detailed guides and helpful tips on various computer vision projects.
Sử dụng các tài nguyên này sẽ giúp bạn giải quyết các thách thức và cập nhật các xu hướng và thực tiễn mới nhất trong cộng đồng thị giác máy tính.
Những điểm chính
Training computer vision models involves following good practices, optimizing your strategies, and solving problems as they arise. Techniques like adjusting batch sizes, mixed precision training, and starting with pre-trained weights can make your models work better and train faster. Methods like subset training and early stopping help you save time and resources. Staying connected with the community and keeping up with new trends will help you keep improving your model training skills.
FAQ
Làm thế nào tôi có thể cải thiện GPU Sử dụng khi đào tạo một tập dữ liệu lớn với Ultralytics YOLO?
Để cải thiện GPU Sử dụng, đặt batch_size
parameter in your training configuration to the maximum size supported by your GPU. This ensures that you make full use of the GPU's capabilities, reducing training time. If you encounter memory errors, incrementally reduce the batch size until training runs smoothly. For YOLO11, setting batch=-1
Trong tập lệnh đào tạo của bạn sẽ tự động xác định kích thước lô tối ưu để xử lý hiệu quả. Để biết thêm thông tin, hãy tham khảo Cấu hình đào tạo.
What is mixed precision training, and how do I enable it in YOLO11?
Mixed precision training utilizes both 16-bit (FP16) and 32-bit (FP32) floating-point types to balance computational speed and precision. This approach speeds up training and reduces memory usage without sacrificing model accuracy. To enable mixed precision training in YOLO11, set the amp
tham số đến True
trong cấu hình đào tạo của bạn. Điều này kích hoạt đào tạo Độ chính xác hỗn hợp tự động (AMP). Để biết thêm chi tiết về kỹ thuật tối ưu hóa này, hãy xem Cấu hình đào tạo.
How does multiscale training enhance YOLO11 model performance?
Multiscale training enhances model performance by training on images of varying sizes, allowing the model to better generalize across different scales and distances. In YOLO11, you can enable multiscale training by setting the scale
tham số trong cấu hình đào tạo. Chẳng hạn scale=0.5
giảm một nửa kích thước hình ảnh, trong khi scale=2.0
tăng gấp đôi nó. Kỹ thuật này mô phỏng các đối tượng ở các khoảng cách khác nhau, làm cho mô hình mạnh mẽ hơn trong các tình huống khác nhau. Để biết cài đặt và biết thêm chi tiết, hãy xem Cấu hình đào tạo.
How can I use pre-trained weights to speed up training in YOLO11?
Using pre-trained weights can significantly reduce training times and improve model performance by starting from a model that already understands basic features. In YOLO11, you can set the pretrained
tham số đến True
hoặc chỉ định đường dẫn đến trọng lượng được đào tạo trước tùy chỉnh trong cấu hình đào tạo của bạn. Cách tiếp cận này, được gọi là học chuyển giao, tận dụng kiến thức từ các bộ dữ liệu lớn để thích ứng với nhiệm vụ cụ thể của bạn. Tìm hiểu thêm về tạ được đào tạo trước và lợi thế của chúng Ở đây.
What is the recommended number of epochs for training a model, and how do I set this in YOLO11?
The number of epochs refers to the complete passes through the training dataset during model training. A typical starting point is 300 epochs. If your model overfits early, you can reduce the number. Alternatively, if overfitting isn't observed, you might extend training to 600, 1200, or more epochs. To set this in YOLO11, use the epochs
tham số trong kịch bản đào tạo của bạn. Để được tư vấn thêm về việc xác định số kỷ nguyên lý tưởng, hãy tham khảo phần này trên Số kỷ nguyên.