Làm cách nào để đào tạo Tập dữ liệu tùy chỉnh với YOLOv5?

Làm cách nào để đào tạo Tập dữ liệu tùy chỉnh với YOLOv5?

Nút nguồn: 1953267

Giới thiệu

Chúng ta đã thấy một số thuật ngữ hoa mỹ dành cho AI và học sâu, chẳng hạn như mô hình được đào tạo trước, học chuyển giao, v.v. Hãy để tôi hướng dẫn bạn một công nghệ được sử dụng rộng rãi và là một trong những công nghệ quan trọng và hiệu quả nhất: Học chuyển giao với YOLOv5.

Bạn Chỉ Nhìn Một Lần, hay YOLO là một trong những phương pháp nhận dạng đối tượng dựa trên học sâu được sử dụng rộng rãi nhất. Sử dụng tập dữ liệu tùy chỉnh, bài viết này sẽ chỉ cho bạn cách đào tạo một trong những biến thể gần đây nhất của nó, YOLOv5.

Mục tiêu học tập 

  1. Bài viết này sẽ tập trung chủ yếu vào việc đào tạo mô hình YOLOv5 trên triển khai tập dữ liệu tùy chỉnh.
  2. Chúng ta sẽ xem các mô hình được đào tạo trước là gì và xem học tập chuyển giao là gì.
  3. Chúng ta sẽ hiểu YOLOv5 là gì và tại sao chúng ta sử dụng phiên bản 5 của YOLO.

Vì vậy, không lãng phí thời gian, hãy bắt đầu với quá trình

Mục lục

  1. Các mô hình được đào tạo trước
  2. Chuyển giao học tập
  3. Điều gì và tại sao YOLOv5?
  4. Các bước liên quan đến học tập chuyển giao
  5. Thực hiện
  6. Một số thách thức mà bạn có thể đối mặt
  7. Kết luận

Người mẫu được đào tạo trước

Bạn có thể đã nghe các nhà khoa học dữ liệu sử dụng rộng rãi thuật ngữ “mô hình được đào tạo trước”. Sau khi giải thích chức năng của mô hình/mạng học sâu, tôi sẽ giải thích thuật ngữ này. Mô hình học sâu là mô hình chứa nhiều lớp xếp chồng lên nhau để phục vụ một mục đích duy nhất, chẳng hạn như phân loại, phát hiện, v.v. Mạng học sâu học bằng cách khám phá các cấu trúc phức tạp trong dữ liệu được cung cấp cho chúng và lưu các trọng số trong một tệp. sau đó được sử dụng để thực hiện các tác vụ tương tự. Các mô hình được đào tạo trước là các mô hình Deep Learning đã được đào tạo. Điều đó có nghĩa là họ đã được đào tạo trên một tập dữ liệu khổng lồ chứa hàng triệu hình ảnh.

Đây là cách TensorFlow trang web xác định các mô hình được đào tạo trước: Mô hình được đào tạo trước là một mạng đã lưu trước đó đã được đào tạo trên một tập dữ liệu lớn, điển hình là trong tác vụ phân loại hình ảnh quy mô lớn.

Một số được tối ưu hóa cao và cực kỳ hiệu quả người mẫu được đào tạo trước đều có sẵn trên internet. Các mô hình khác nhau được sử dụng để thực hiện các nhiệm vụ khác nhau. Một số mô hình được đào tạo trước là VGG-16, VGG-19, YOLOv5, YOLOv3 và ResNet 50.

Việc sử dụng mô hình nào phụ thuộc vào nhiệm vụ bạn muốn thực hiện. Ví dụ, nếu tôi muốn thực hiện một phát hiện đối tượng nhiệm vụ, tôi sẽ sử dụng mô hình YOLOv5.

Chuyển giao học tập

Chuyển giao học tập là kỹ thuật quan trọng nhất giúp giảm bớt nhiệm vụ của một nhà khoa học dữ liệu. Đào tạo một người mẫu là một nhiệm vụ nặng nề và tốn thời gian; nếu một mô hình được đào tạo từ đầu, nó thường không cho kết quả tốt lắm. Ngay cả khi chúng tôi đào tạo một mô hình tương tự như mô hình được đào tạo trước, nó sẽ không hoạt động hiệu quả và có thể mất hàng tuần để đào tạo một mô hình. Thay vào đó, chúng ta có thể sử dụng các mô hình được đào tạo trước và sử dụng các trọng số đã học bằng cách đào tạo chúng trên tập dữ liệu tùy chỉnh để thực hiện một tác vụ tương tự. Những mô hình này có hiệu quả cao và tinh tế về mặt kiến ​​trúc và hiệu suất, đồng thời chúng đã vươn lên dẫn đầu bằng cách thể hiện tốt hơn trong các cuộc thi khác nhau. Các mô hình này được đào tạo trên lượng dữ liệu rất lớn, khiến chúng trở nên đa dạng hơn về kiến ​​thức.

Vì vậy, học chuyển giao về cơ bản có nghĩa là chuyển kiến ​​thức thu được bằng cách đào tạo mô hình trên dữ liệu trước đó để giúp mô hình học tốt hơn và nhanh hơn để thực hiện một nhiệm vụ khác nhưng tương tự.

Ví dụ: sử dụng YOLOv5 để phát hiện đối tượng, nhưng đối tượng là thứ gì đó khác với dữ liệu trước đó của đối tượng được sử dụng.

Điều gì và tại sao YOLOv5?

YOLOv5 là một mô hình được đào tạo trước, viết tắt của you only look once phiên bản 5 được sử dụng để phát hiện đối tượng theo thời gian thực và đã được chứng minh là có hiệu quả cao về độ chính xác và thời gian suy luận. Có các phiên bản YOLO khác, nhưng như người ta dự đoán, YOLOv5 hoạt động tốt hơn các phiên bản khác. YOLOv5 nhanh và dễ sử dụng. Nó dựa trên khung PyTorch, có cộng đồng lớn hơn Yolo v4 Darknet.

Yolov5

Bây giờ chúng ta sẽ xem xét kiến ​​trúc của YOLOv5.

Cấu trúc có thể trông khó hiểu, nhưng không thành vấn đề vì chúng ta không phải nhìn vào kiến ​​trúc mà thay vào đó trực tiếp sử dụng mô hình và trọng số.

Trong quá trình học chuyển giao, chúng tôi sử dụng tập dữ liệu tùy chỉnh, tức là dữ liệu mà mô hình chưa từng thấy trước đây HOẶC dữ liệu mà mô hình chưa được đào tạo. Vì mô hình đã được đào tạo trên một tập dữ liệu lớn nên chúng tôi đã có các trọng số. Giờ đây, chúng tôi có thể đào tạo mô hình cho một số kỷ nguyên trên dữ liệu mà chúng tôi muốn xử lý. Cần phải đào tạo vì mô hình đã nhìn thấy dữ liệu lần đầu tiên và sẽ cần một số kiến ​​thức để thực hiện nhiệm vụ.

Các bước liên quan đến học tập chuyển tiếp

Học chuyển đổi là một quy trình đơn giản và chúng tôi có thể thực hiện bằng một vài bước đơn giản:

  1. Chuẩn bị dữ liệu
  2. Định dạng phù hợp cho các chú thích
  3. Thay đổi một vài lớp nếu bạn muốn
  4. Đào tạo lại mô hình cho một vài lần lặp lại
  5. Xác thực/Kiểm tra

Chuẩn bị dữ liệu

Chuẩn bị dữ liệu có thể tốn thời gian nếu dữ liệu bạn chọn hơi lớn. Chuẩn bị dữ liệu có nghĩa là chú thích hình ảnh, đây là quá trình bạn gắn nhãn hình ảnh bằng cách tạo một hộp xung quanh đối tượng trong hình ảnh. Bằng cách này, tọa độ của đối tượng được đánh dấu sẽ được lưu trong một tệp, tệp này sau đó sẽ được đưa vào mô hình để đào tạo. Có một vài trang web, chẳng hạn như làm cho có nghĩa.ai roboflow.com, có thể giúp bạn gắn nhãn dữ liệu. 

Đây là cách bạn có thể chú thích dữ liệu cho mô hình YOLOv5 trên makesense.ai.

1. Truy cập https://www.makesense.ai/. 

2. Nhấp vào bắt đầu ở dưới cùng bên phải của màn hình.

Yolov5

3. Chọn hình ảnh bạn muốn gắn nhãn bằng cách nhấp vào hộp được đánh dấu ở giữa.

Tải hình ảnh bạn muốn chú thích và nhấp vào phát hiện đối tượng.
Yolov5

4. Sau khi tải hình ảnh, bạn sẽ được yêu cầu tạo nhãn cho các lớp khác nhau trong tập dữ liệu của mình.

Tôi đang phát hiện biển số xe, vì vậy nhãn duy nhất tôi sẽ sử dụng là “Biển số xe”. Bạn có thể tạo thêm nhãn bằng cách nhấn enter bằng cách nhấp vào nút '+' ở bên trái hộp thoại.

Sau khi bạn đã tạo tất cả các nhãn, hãy nhấp vào bắt đầu dự án.

Yolov5

Nếu bạn đã bỏ lỡ bất kỳ nhãn nào, bạn có thể chỉnh sửa chúng sau bằng cách nhấp vào hành động và sau đó chỉnh sửa nhãn.

5. Bắt đầu tạo một hộp giới hạn xung quanh đối tượng trong hình ảnh. Bài tập này ban đầu có thể hơi thú vị, nhưng với dữ liệu rất lớn, nó có thể gây mệt mỏi.

hộp giới hạn

6. Sau khi chú thích tất cả các hình ảnh, bạn cần lưu tệp chứa tọa độ của các hộp giới hạn cùng với lớp.

Vì vậy, bạn cần đi tới nút hành động và nhấp vào xuất chú thích, đừng quên chọn tùy chọn 'Gói zip chứa tệp ở định dạng YOLO', vì điều này sẽ lưu các tệp ở định dạng chính xác theo yêu cầu trong mô hình YOLO.

người mẫu YOLO

7. Đây là một bước quan trọng, vì vậy hãy làm theo nó một cách cẩn thận.

Sau khi bạn có tất cả các tệp và hình ảnh, hãy tạo một thư mục với bất kỳ tên nào. Nhấp vào thư mục và tạo thêm hai thư mục có tên hình ảnh và nhãn bên trong thư mục. Đừng quên đặt tên cho thư mục giống như trên, vì mô hình sẽ tự động tìm kiếm nhãn sau khi bạn cung cấp đường dẫn đào tạo trong lệnh.

Để cung cấp cho bạn ý tưởng về thư mục, tôi đã tạo một thư mục có tên 'CarsData' và trong thư mục đó có hai thư mục – 'hình ảnh' và 'nhãn'.

yolov5

Bên trong hai thư mục, bạn phải tạo thêm hai thư mục có tên là 'train' và 'val'. Trong thư mục hình ảnh, bạn có thể chia ảnh theo ý muốn nhưng phải cẩn thận khi tách nhãn vì nhãn phải trùng với ảnh bạn đã tách

8. Bây giờ hãy tạo một tệp zip của thư mục và tải nó lên ổ đĩa để chúng tôi có thể sử dụng nó trong colab.

Thực hiện

Bây giờ chúng ta sẽ đến phần thực hiện, phần này rất đơn giản nhưng phức tạp. Nếu bạn không biết chính xác những tệp cần thay đổi, bạn sẽ không thể đào tạo mô hình trên tập dữ liệu tùy chỉnh. 

Vì vậy, đây là các mã mà bạn nên tuân theo để đào tạo mô hình YOLOv5 trên tập dữ liệu tùy chỉnh

Tôi khuyên bạn nên sử dụng google colab cho hướng dẫn này vì nó cũng cung cấp GPU giúp tính toán nhanh hơn.

1. !git bản sao https://github.com/ultralytics/yolov5
Thao tác này sẽ tạo một bản sao của kho lưu trữ YOLOv5, một kho lưu trữ GitHub được tạo bởi ultralytics.

2. cd yolov5
Đây là lệnh shell dòng lệnh được sử dụng để thay đổi thư mục làm việc hiện tại thành thư mục YOLOv5.

3. !pip cài đặt -r tests.txt
Lệnh này sẽ cài đặt tất cả các gói và thư viện được sử dụng để đào tạo mô hình.

4. !giải nén '/content/drive/MyDrive/CarsData.zip'
Giải nén thư mục chứa hình ảnh và nhãn trong google colab

Đây là bước quan trọng nhất…

Bây giờ bạn đã thực hiện gần như tất cả các bước và cần viết thêm một dòng mã để đào tạo mô hình, nhưng trước đó, bạn cần thực hiện thêm một vài bước nữa và thay đổi một số thư mục để cung cấp đường dẫn cho tập dữ liệu tùy chỉnh của bạn và đào tạo mô hình của bạn trên dữ liệu đó.

Dưới đây là những gì bạn cần làm.

Sau khi thực hiện 4 bước trên bạn sẽ có thư mục yolov5 trong google colab của mình. Chuyển đến thư mục yolov5 và nhấp vào thư mục 'dữ liệu'. Bây giờ bạn sẽ thấy một thư mục có tên 'coco128.yaml'. 

yolov5

Hãy tiếp tục và tải xuống thư mục này.

Sau khi thư mục được tải xuống, bạn cần thực hiện một vài thay đổi đối với thư mục đó và tải nó trở lại cùng thư mục mà bạn đã tải xuống thư mục đó.

Bây giờ chúng ta hãy xem nội dung của tệp mà chúng ta đã tải xuống và nó sẽ giống như thế này.

yolov5

Chúng tôi sẽ tùy chỉnh tệp này theo tập dữ liệu và chú thích của chúng tôi.

Chúng tôi đã giải nén tập dữ liệu trên colab, vì vậy chúng tôi sẽ sao chép đường dẫn của hình ảnh xác thực và đào tạo của chúng tôi. Sau khi sao chép đường dẫn của hình ảnh đoàn tàu, sẽ nằm trong thư mục tập dữ liệu và trông giống như thế này '/content/yolov5/CarsData/images/train', hãy dán nó vào tệp coco128.yaml mà chúng tôi vừa tải xuống.

Làm tương tự với các hình ảnh kiểm tra và xác nhận.

Bây giờ sau khi hoàn thành việc này, chúng ta sẽ đề cập đến số lớp như 'nc: 1'. Số lượng lớp, trong trường hợp này, chỉ là 1. Sau đó, chúng tôi sẽ đề cập đến tên như trong hình bên dưới. Xóa tất cả các lớp khác và phần nhận xét không cần thiết, sau đó tệp của chúng ta sẽ trông giống như thế này.

cười lớn

Lưu tệp này với bất kỳ tên nào bạn muốn. Tôi đã lưu tệp với tên customPath.yaml và bây giờ tải tệp này trở lại colab ở cùng nơi có coco128.yaml. 

Bây giờ chúng ta đã hoàn thành phần chỉnh sửa và sẵn sàng huấn luyện mô hình.

Chạy lệnh sau để đào tạo mô hình của bạn cho một vài tương tác trên tập dữ liệu tùy chỉnh của bạn.

Đừng quên thay đổi tên của tệp bạn đã tải lên ('customPath.yaml). Bạn cũng có thể thay đổi số lượng kỷ nguyên mà bạn muốn đào tạo mô hình. Trong trường hợp này, tôi sẽ chỉ đào tạo mô hình trong 3 kỷ nguyên.

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

Hãy ghi nhớ đường dẫn nơi bạn tải thư mục lên. Nếu đường dẫn bị thay đổi, thì các lệnh sẽ không hoạt động.

Sau khi bạn chạy lệnh này, mô hình của bạn sẽ bắt đầu đào tạo và bạn sẽ thấy một cái gì đó như thế này trên màn hình của mình.

cười lớn

cười lớn

Sau khi hoàn thành tất cả các kỷ nguyên, mô hình của bạn có thể được kiểm tra trên bất kỳ hình ảnh nào.

Bạn có thể thực hiện thêm một số tùy chỉnh trong tệp detect.py về những gì bạn muốn lưu và những gì bạn không thích, các vị trí phát hiện biển số xe, v.v.

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

Bạn có thể sử dụng lệnh này để kiểm tra dự đoán của mô hình trên một số hình ảnh.

Một số thách thức mà bạn có thể đối mặt

Mặc dù các bước được giải thích ở trên là chính xác nhưng vẫn có một số vấn đề bạn có thể gặp phải nếu không tuân thủ chính xác. 

  1. Con đường sai lầm: Đây có thể là một vấn đề đau đầu hoặc rắc rối. Nếu bạn đã nhập sai đường dẫn ở đâu đó trong quá trình đào tạo hình ảnh, có thể không dễ xác định và bạn sẽ không thể đào tạo mô hình.
  2. Định dạng nhãn sai: Đây là một vấn đề phổ biến mà mọi người gặp phải khi đào tạo YOLOv5. Mô hình chỉ chấp nhận một định dạng trong đó mọi hình ảnh đều có tệp văn bản riêng với định dạng mong muốn bên trong. Thông thường, một tệp định dạng XLS hoặc một tệp CSV đơn lẻ được đưa vào mạng, dẫn đến lỗi. Nếu bạn đang tải xuống dữ liệu từ đâu đó, thay vì chú thích từng hình ảnh, có thể có một định dạng tệp khác để lưu nhãn. Đây là một bài viết để chuyển đổi định dạng XLS sang định dạng YOLO. (liên kết sau khi hoàn thành bài viết).
  3. Đặt tên tệp không chính xác: Việc đặt tên tệp không chính xác sẽ lại dẫn đến lỗi. Hãy chú ý đến các bước trong khi đặt tên cho các thư mục và tránh lỗi này.

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu transfer learning là gì và mô hình được đào tạo trước. Chúng tôi đã tìm hiểu thời điểm và lý do sử dụng mô hình YOLOv5 cũng như cách đào tạo mô hình trên tập dữ liệu tùy chỉnh. Chúng tôi đã thực hiện từng bước, từ chuẩn bị tập dữ liệu đến thay đổi đường dẫn và cuối cùng đưa chúng vào mạng trong quá trình triển khai kỹ thuật và hiểu rõ các bước. Chúng tôi cũng đã xem xét các vấn đề thường gặp phải khi đào tạo YOLOv5 và giải pháp của họ. Tôi hy vọng bài viết này đã giúp bạn đào tạo YOLOv5 đầu tiên của mình trên tập dữ liệu tùy chỉnh và bạn thích bài viết này.

Dấu thời gian:

Thêm từ Phân tích Vidhya