Technologia komputerowego wykrywania obiektów jest niezbędna w wielu zastosowaniach. Używamy go w robotyce, sprzęcie monitorującym, samojezdnych samochodach i wielu innych obszarach. Dzięki temu możemy znaleźć i rozpoznać pewne rzeczy na zdjęciu lub filmie.
Jeden z najbardziej znanych algorytmy identyfikacji obiektów to YOLO (Patrzysz tylko raz) zestaw modeli. Te modele są tworzone przez Ultralytics spółka z ograniczoną odpowiedzialnością
Najnowsza wersja tej serii to YOLOv5. Jest to najszybszy i najdokładniejszy model identyfikacji obiektów na rynku. Zdolność modelu do uogólniania na nowe dane została znacznie ulepszona. Ponadto zawiera wiele funkcji, które sprawiają, że działa lepiej niż wcześniejsze iteracje.
YOLOv5 doskonale nadaje się do aplikacji czasu rzeczywistego, ponieważ może przetwarzać obrazy z szybkością do 1000 klatek na sekundę na jednym GPU.
W tym artykule przedstawimy YOLOv5 i omówimy szczegóły obszarów jego zastosowania.
Podróż YOLO: od YOLO do YOLOv5
Joseph Redmon i in. pierwotnie wprowadził YOLO, zestaw modeli identyfikacji obiektów, w 2016 roku. Początkowy model YOLO mógł identyfikować obiekty w czasie rzeczywistym. Miał jednak niską celność w porównaniu z innymi modelami w tamtym czasie.
Na przestrzeni lat wydano kilka ulepszonych wersji YOLO. I wreszcie Ultralytics LLC stworzyło najnowszą edycję serii YOLO, YOLOv5.
YOLOv5 to najdokładniejszy i najszybszy obecnie dostępny model identyfikacji obiektów.
Ważne funkcje
Pudełka kotwiczne
YOLOv5 przewiduje obwiednie dla obiektów na obrazie za pomocą kotwic. Model przewiduje, które z wielu wstępnie zdefiniowanych ramek o różnych współczynnikach proporcji najlepiej pasuje do elementu na obrazie za pomocą ramek kotwicznych. Są to predefiniowane pola.
I umożliwiają YOLOv5 dokładne rozpoznawanie i znajdowanie przedmiotów na obrazie.
Powiększanie danych mozaikowych
Podczas treningu YOLOv5 stosuje metodę zwaną mozaiką powiększanie danych. Aby wywołać świeże zdjęcia treningowe, nasz model losowo łączy fragmenty kilku zdjęć. W rezultacie model staje się bardziej odporny i niezawodny. W związku z tym może uogólniać na nowe dane i zmniejszać nadmierne dopasowanie.
Unikalny potok szkoleniowy
Unikalny proces szkoleniowy, który łączy nadzorowane i uczenie się bez nadzoru Jest używane.
W ten sposób model uczy się z mniejszej próby i skutecznie wykorzystuje nieoznakowane dane wejściowe. Zwiększa to wydajność modelu i zwiększa jego zdolność do uogólniania na nowe dane wejściowe.
Warstwy resztkowe i nieresztkowe
Architektura YOLOv5 łączy warstwy resztkowe i nieresztkowe. Pozwalając na przepływ gradientów przez warstwy, warstwy szczątkowe pomagają modelowi w nauce trudnych funkcji. Ponadto warstwy nieresztkowe zapewniają modelowi pełniejszy obraz obrazu wejściowego. Dzięki temu YOLOv5 może działać bardziej precyzyjnie i efektywnie.
Jak korzystać z YOLOv5
Instalacja
Instalację YOLOv5 można szybko zakończyć za pomocą pip. Pip to menedżer pakietów Pythona. Ogólne procedury instalacji YOLOv5 są następujące:
1- Zainstaluj PyTorch: Ponieważ YOLOv5 jest oparty na frameworku PyTorch, musisz najpierw zainstalować PyTorch.
pip install torch torchvision
2. Zainstaluj CUDA: Musisz zainstalować CUDA, jeśli zamierzasz uruchomić YOLOv5 na GPU.
3. Zainstaluj YOLOv5: Po skonfigurowaniu PyTorch i CUDA użyj następującego polecenia, aby pobrać YOLOv5.
pip install yolov5
4-Po zainstalowaniu YOLOv5 musisz pobrać wstępnie wytrenowane ciężary. Wstępnie wytrenowane wagi są dostępne w repozytorium GitHub Ultralytics.
Przejdź do części strony „wagi”, przewijając w dół. Możesz pobrać wstępnie wytrenowane ciężary z listy, którą znajdziesz tutaj.
5. Wybierz ciężary, które są już wytrenowane i najlepiej pasują do Twojego przypadku użycia. Zestaw danych lub konkretna wersja YOLOv5, której wagi zostały nauczone, może zostać wykorzystana do zawężenia listy.
6- Po wybraniu odpowiednich ciężarów wybierz ciężar, klikając znajdujący się obok przycisk „Pobierz”. Wagi będą dostępne do pobrania jako. pliki pt.
7- Przenieś pobrane wagi do katalogu. Tutaj będzie działał twój skrypt wykrywania.
8- W tym momencie możesz uruchomić wykrywanie obiektów na swoich zdjęciach lub filmach przy użyciu wstępnie wytrenowanych wag w skrypcie wykrywania.
Przygotuj dane
Musisz wykonać następujące czynności, aby przygotować dane do użycia z YOLOv5:
1. Zbierz dane: Pierwszym krokiem jest zebranie potrzebnych danych obrazu lub wideo wykrywanie obiektów. Rzeczy, które chcesz wykryć, powinny być obecne na zdjęciach lub filmach.
2- Sformatuj dane: Możesz po prostu zaimportować zdjęcia do skryptu, jeśli ich używasz. Jeśli planujesz użyć jednego z nich, musisz zamienić film w serię zdjęć. Możesz wyodrębnić klatki z filmu za pomocą biblioteki, takiej jak OpenCV.
import cv2
img = cv2.imread('path/to/image')
Dzięki bibliotece OpenCV możesz użyć następującego polecenia, aby zamienić wideo w serię obrazów:
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. Oznacz dane: Musisz oznaczyć dane, jeśli używasz swojego zestawu danych. Rysowanie obwiedni wokół elementów, które chcesz zidentyfikować w każdej klatce obrazu. Jest to proces etykietowania danych. Możesz użyć kilku narzędzi, które pomogą ci w tej operacji, w tym LabelImg i RectLabel.
4- Musisz podzielić dane na zestawy treningowe i testowe po ich oznaczeniu. Ma to kluczowe znaczenie dla oceny skuteczności Twojego modelu.
5. Na koniec może być konieczne wstępne przetworzenie danych przed szkoleniem lub testowaniem. Może to obejmować skalowanie zdjęć lub filmów, standaryzację wartości pikseli lub stosowanie metod powiększania danych.
Po wykonaniu tych kroków Twoje dane są gotowe.
Uruchom skrypt wykrywający
Oto ilustracja skryptu wykrywającego, który analizuje obraz i znajduje obiekty.
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))
Przetwarzanie końcowe
Niemaksymalne tłumienie jest jedną z najczęstszych technik przetwarzania końcowego stosowanych w wykrywaniu obiektów (NMS). Używamy NMS w celu wyeliminowania nakładających się ramek ograniczających dla tego samego obiektu. Aby wykonać NMS na wykryciach, możemy użyć metody cv2.dnn.NMSBoxes() biblioteki OpenCV.
Oto przykład przetwarzania wykrytych danych za pomocą NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indeksy = cv2.dnn.NMSBoxes(wykrycia, ufności, conf_thres, nms_thres)
Wizualizacja
W przypadku wizualizacji możemy ponownie skorzystać z biblioteki typu OpenCV. Możemy wyświetlić obwiednie wokół wykrytych obiektów na obrazie źródłowym lub wideo. Aby narysować obwiednie obrazu, użyj metody cv2.rectangle(). Oto jak wyświetlić wykrycia na oryginalnym obrazie:
importuj cv2
# Draw the bounding boxes on the image
dla I w indeksach:
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
Konsultacje
YOLOv5 to silny model identyfikacji obiektów. Dlatego możemy go wykorzystać w wielu rzeczywistych scenariuszach. Jednym z najbardziej znanych zastosowań są samochody samojezdne. YOLOv5 może identyfikować przedmioty w czasie rzeczywistym, takie jak samochody i sygnalizacja świetlna.
W systemach nadzoru możemy używać YOLOv5 do rozpoznawania i śledzenia obiektów w strumieniach wideo na żywo. Co więcej, YOLOv5 może być wielkim atutem w robotyce. Może pomóc robotom wykryć i zrozumieć otoczenie. Jest to niezwykle ważne w przypadku czynności takich jak nawigacja i manipulacja.
YOLOv5 może być również wykorzystywany w każdej branży wymagającej wykrywania obiektów, takiej jak handel detaliczny, sport, medycyna i bezpieczeństwo.
Wnioski
Wreszcie, YOLOv5 to najnowsza i wyrafinowana wersja rodziny YOLO wykrywanie obiektów modele
. Ponadto można śmiało powiedzieć, że jest to najdokładniejszy dostępny model wykrywania obiektów. Dzięki wysokiej dokładności i szybkości możesz śmiało wybrać go do swoich projektów wykrywania obiektów.
Reski Agus
Tworzę pierwszy dziennik o wykrywaniu pojazdu z yolov5 i ta strona pomaga mi szukać informacji na ten temat.
Bardzo interesuje mnie AI.
jeśli możesz, mam wiele pytań dotyczących AI, może możesz mi pomóc
Dziękuje