Công nghệ phát hiện đối tượng của thị giác máy tính rất cần thiết cho nhiều ứng dụng. Chúng tôi sử dụng nó trong chế tạo người máy, thiết bị giám sát, ô tô tự lái và nhiều lĩnh vực khác. Do đó, chúng ta có thể tìm và nhận ra những thứ nhất định trong ảnh hoặc video.
Một trong những cái nổi tiếng nhất thuật toán nhận dạng đối tượng là YOLO (You Only Look Once) bộ mô hình. Những mô hình này được tạo ra bởi Công ty TNHH siêu phân tích
Phiên bản mới nhất của loạt bài này là YOLOv5. Và, nó là mô hình nhận dạng đối tượng nhanh nhất và chính xác nhất trên thị trường. Khả năng khái quát hóa dữ liệu mới của mô hình đã được cải thiện rất nhiều. Ngoài ra, nó chứa nhiều tính năng giúp nó hoạt động tốt hơn các lần lặp lại trước đó.
YOLOv5 rất lý tưởng cho các ứng dụng thời gian thực vì nó có thể xử lý hình ảnh với tốc độ lên tới 1000 khung hình mỗi giây trên một GPU.
Trong bài viết này, chúng tôi sẽ giới thiệu YOLOv5 và tìm hiểu chi tiết về các lĩnh vực ứng dụng của nó.
Hành trình YOLO: Từ YOLO đến YOLOv5
Joseph Redmon và cộng sự. lần đầu tiên giới thiệu YOLO, một tập hợp các mô hình nhận dạng đối tượng, vào năm 2016. Mô hình YOLO ban đầu có thể xác định các đối tượng trong thời gian thực. Tuy nhiên, nó có độ chính xác thấp khi so sánh với các mẫu khác vào thời điểm đó.
Một số phiên bản nâng cấp của YOLO đã được phát hành trong suốt những năm qua. Và cuối cùng, Ultralytics LLC đã tạo ra phiên bản mới nhất của sê-ri YOLO, YOLOv5.
YOLOv5 là mô hình nhận dạng đối tượng chính xác nhất và nhanh nhất hiện nay.
Những đặc điểm quan trọng
hộp neo
YOLOv5 dự đoán các hộp giới hạn cho các đối tượng trong hình ảnh bằng cách sử dụng các hộp neo. Mô hình dự đoán hộp nào trong số nhiều hộp được xác định trước với các tỷ lệ khung hình khác nhau phù hợp nhất với mục trong ảnh bằng hộp neo. Đây là những hộp được xác định trước.
Và, chúng cho phép YOLOv5 nhận dạng và tìm các mục trong ảnh một cách chính xác.
Tăng cường dữ liệu khảm
Khi đào tạo, YOLOv5 sử dụng một phương pháp được gọi là khảm tăng dữ liệu. Để phát triển các hình ảnh đào tạo mới, mô hình của chúng tôi kết hợp ngẫu nhiên các bản vá của một số ảnh. Kết quả là, mô hình trở nên đàn hồi và đáng tin cậy hơn. Do đó, nó có thể khái quát hóa thành dữ liệu mới và giảm tình trạng thừa.
Một quy trình đào tạo độc đáo
Một quy trình đào tạo độc đáo kết hợp giữa giám sát và học tập không giám sát Được sử dụng.
Do đó, mô hình học từ một mẫu nhỏ hơn và sử dụng đầu vào không được gắn nhãn một cách hiệu quả. Điều này làm tăng hiệu suất của mô hình và nâng cao khả năng tổng quát hóa các đầu vào mới.
Các lớp dư và không dư
Kiến trúc của YOLOv5 kết hợp các lớp dư và không dư. Bằng cách cho phép các gradient chảy qua các lớp, các lớp còn lại hỗ trợ mô hình học các tính năng khó. Ngoài ra, các lớp không dư giúp mô hình nắm bắt toàn diện hơn về hình ảnh đầu vào. Nhờ đó, YOLOv5 có thể hoạt động chính xác và hiệu quả hơn.
Cách sử dụng YOLOv5
của DINTEK
Quá trình cài đặt YOLOv5 có thể được hoàn tất nhanh chóng bằng cách sử dụng pip. Pip là một trình quản lý gói Python. Quy trình chung để cài đặt YOLOv5 như sau:
1- Cài đặt PyTorch: Vì YOLOv5 dựa trên khung PyTorch nên trước tiên bạn phải cài đặt PyTorch.
pip install torch torchvision
2. Cài đặt CUDA: Bạn phải cài đặt CUDA nếu định chạy YOLOv5 trên GPU.
3. Cài đặt YOLOv5: Sau khi thiết lập PyTorch và CUDA, hãy sử dụng lệnh sau để tải xuống YOLOv5.
pip install yolov5
4-Sau khi cài đặt YOLOv5, bạn phải tải xuống các trọng số được đào tạo trước. Các trọng số được đào tạo trước có sẵn trong repo Ultralytics GitHub.
Chuyển đến phần "trọng lượng" của trang web bằng cách cuộn xuống. Bạn có thể tải xuống các trọng lượng được đào tạo trước từ danh sách bạn có thể tìm thấy ở đây.
5. Chọn các trọng số đã được đào tạo và phù hợp nhất với trường hợp sử dụng của bạn. Tập dữ liệu hoặc phiên bản YOLOv5 cụ thể mà các trọng số đã được học có thể được sử dụng để thu hẹp danh sách.
6- Sau khi chọn trọng lượng phù hợp, hãy chọn trọng lượng bằng cách nhấp vào nút “Tải xuống” bên cạnh. Các trọng số sẽ có sẵn để tải xuống dưới dạng. tập tin pt.
7- Chuyển trọng lượng đã tải xuống vào thư mục. Đây là nơi tập lệnh phát hiện của bạn sẽ hoạt động.
8- Tại thời điểm này, bạn có thể chạy phát hiện đối tượng trên ảnh hoặc video của mình bằng cách sử dụng các trọng số được đào tạo trước trong tập lệnh phát hiện của mình.
Chuẩn bị dữ liệu
Bạn phải thực hiện các thao tác sau để dữ liệu sẵn sàng sử dụng với YOLOv5:
1. Thu thập dữ liệu: Bước đầu tiên là thu thập dữ liệu hình ảnh hoặc video bạn cần cho phát hiện đối tượng. Những thứ bạn muốn phát hiện phải có trong ảnh hoặc video.
2- Định dạng dữ liệu: Bạn chỉ có thể nhập ảnh vào tập lệnh của mình nếu bạn đang sử dụng chúng. Bạn phải biến một video thành một loạt ảnh nếu bạn định sử dụng một ảnh. Bạn có thể trích xuất khung hình từ phim bằng thư viện như OpenCV.
import cv2
img = cv2.imread('path/to/image')
Với thư viện OpenCV, bạn có thể sử dụng lệnh sau để biến một video thành một loạt hình ảnh:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. Gắn nhãn dữ liệu: Bạn phải gắn nhãn dữ liệu nếu bạn đang sử dụng tập dữ liệu của mình. Vẽ các hộp giới hạn xung quanh các mục bạn muốn xác định trong mỗi khung hình ảnh. Đó là quá trình dán nhãn dữ liệu. Bạn có thể sử dụng một số công cụ để hỗ trợ bạn thực hiện thao tác này, bao gồm LabelImg và RectLabel.
4- Bạn phải chia dữ liệu thành các tập huấn luyện và kiểm tra sau khi đã gắn thẻ. Điều này rất quan trọng để đánh giá mô hình của bạn hoạt động tốt như thế nào.
5. Cuối cùng, bạn có thể cần xử lý trước dữ liệu trước khi huấn luyện hoặc kiểm tra. Điều này có thể đòi hỏi phải chia tỷ lệ ảnh hoặc video, chuẩn hóa các giá trị pixel hoặc sử dụng các phương pháp để tăng cường dữ liệu.
Sau khi hoàn thành các bước này, dữ liệu của bạn đã sẵn sàng.
Chạy tập lệnh phát hiện
Dưới đây là minh họa về tập lệnh phát hiện phân tích ảnh và tìm đối tượng.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
Hậu xử lý
Triệt tiêu không tối đa là một trong những kỹ thuật hậu xử lý thường xuyên nhất được sử dụng trong phát hiện đối tượng (NMS). Chúng tôi sử dụng NMS để loại bỏ các hộp giới hạn chồng chéo cho cùng một đối tượng. Để thực thi NMS trên các phát hiện, chúng ta có thể sử dụng phương thức cv2.dnn.NMSBoxes() của thư viện OpenCV.
Đây là một ví dụ về cách phát hiện sau quá trình sử dụng NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indices = cv2.dnn.NMSBoxes(phát hiện, tâm sự, conf_thres, nms_thres)
Hình ảnh
Trong trường hợp trực quan hóa, chúng ta có thể sử dụng lại một thư viện như OpenCV. Chúng tôi có thể hiển thị các hộp giới hạn xung quanh các đối tượng được phát hiện trên ảnh hoặc video nguồn. Để vẽ các hộp giới hạn của hình ảnh, hãy sử dụng phương thức cv2.rectangle(). Dưới đây là cách xem các phát hiện trên ảnh gốc:
nhập cv2
# Draw the bounding boxes on the image
cho tôi trong các chỉ số:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
Ứng dụng
YOLOv5 là một mô hình nhận dạng đối tượng mạnh. Do đó, chúng ta có thể sử dụng nó trong nhiều tình huống trong thế giới thực. Một trong những ứng dụng nổi bật nhất là trong ô tô tự lái. YOLOv5 có thể xác định các vật phẩm trong thời gian thực như ô tô và đèn giao thông.
Trong các hệ thống giám sát, chúng tôi có thể sử dụng YOLOv5 để nhận dạng và theo dõi các đối tượng trong các luồng video trực tiếp. Hơn nữa, YOLOv5 có thể là một tài sản tuyệt vời trong chế tạo người máy. Nó có thể giúp robot phát hiện và hiểu môi trường xung quanh. Điều này cực kỳ quan trọng đối với các hoạt động như điều hướng và thao tác.
YOLOv5 cũng có thể được sử dụng trong bất kỳ ngành nào yêu cầu phát hiện đối tượng, chẳng hạn như bán lẻ, thể thao, y tế và bảo mật.
Kết luận
Cuối cùng, YOLOv5 là phiên bản tinh vi và mới nhất của gia đình YOLO phát hiện đối tượng mô hình
. Ngoài ra, công bằng mà nói đây là mô hình phát hiện đối tượng chính xác nhất hiện có. Nhờ độ chính xác và tốc độ cao, bạn có thể yên tâm chọn nó cho các dự án phát hiện đối tượng của mình.
Resky Agus
Tôi viết nhật ký đầu tiên về phương tiện phát hiện với yolov5 và trang web này giúp tôi tìm kiếm thông tin về điều đó.
Tôi rất quan tâm đến AI.
nếu bạn có thể tôi có rất nhiều câu hỏi về AI có thể bạn có thể giúp tôi
Cảm ơn bạn