Wnioskowanie o wykrywaniu obiektów w Pythonie z YOLOv5 i PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wnioskowanie o wykrywaniu obiektów w Pythonie za pomocą YOLOv5 i PyTorch

Wprowadzenie

Detekcja obiektów to duże pole widzenia komputerowego i jedno z ważniejszych zastosowań widzenia komputerowego „na wolności”. Z jednej strony może być używany do budowania autonomicznych systemów, które nawigują agentów przez środowiska – czy to roboty wykonujące zadania, czy samojezdne samochody, ale wymaga to skrzyżowania z innymi polami. Jednak wykrywanie anomalii (takich jak wadliwe produkty na linii), lokalizowanie obiektów na obrazach, wykrywanie twarzy i różne inne zastosowania wykrywania obiektów można wykonać bez przecinania innych pól.

Wykrywanie obiektów nie jest tak ustandaryzowane jak klasyfikacja obrazów, głównie dlatego, że większość nowych rozwiązań jest zazwyczaj wykonywana przez indywidualnych badaczy, opiekunów i programistów, a nie przez duże biblioteki i frameworki. Trudno jest spakować niezbędne skrypty narzędziowe w frameworku takim jak TensorFlow lub PyTorch i zachować wytyczne API, które do tej pory kierowały rozwojem.

To sprawia, że ​​wykrywanie obiektów jest nieco bardziej złożone, zazwyczaj bardziej szczegółowe (ale nie zawsze) i mniej przystępne niż klasyfikacja obrazów. Jedną z głównych korzyści płynących z bycia w ekosystemie jest to, że pozwala nie szukać przydatnych informacji na temat dobrych praktyk, narzędzi i podejść do wykorzystania. Z wykrywaniem obiektów – większość ludzi musi przeprowadzić o wiele więcej badań nad krajobrazem pola, aby uzyskać dobrą przyczepność.

Na szczęście dla mas — firma Ultralytics opracowała prosty, bardzo wydajny i piękny interfejs API do wykrywania obiektów wokół swojej implementacji YOLOv5.

W tym krótkim przewodniku będziemy wykonywać wykrywanie obiektów w Pythonie z YOLOv5 zbudowanym przez Ultralytics w PyTorch, przy użyciu zestawu wstępnie wytrenowanych wag wyszkolonych na MS COCO.

YLOv5

YOLO (patrzysz tylko raz) to metodologia, a także rodzina modeli zbudowanych do wykrywania obiektów. Od momentu powstania w 2015 r. YOLOv1, YOLOv2 (YOLO9000) i YOLOv3 zostały zaproponowane przez tego samego autora (autorów) – a społeczność głębokiego uczenia kontynuowała postępy z otwartymi źródłami w kolejnych latach.

Ultralytics' YOLOv5 to pierwsza implementacja YOLO na dużą skalę w PyTorch, dzięki której jest bardziej dostępna niż kiedykolwiek wcześniej, ale głównym powodem, dla którego YOLOv5 zyskało taki przyczółek, jest również pięknie prosty i potężny interfejs API zbudowany wokół niego. Projekt odrzuca niepotrzebne szczegóły, umożliwiając jednocześnie dostosowywanie praktycznie wszystkich użytecznych formatów eksportu i wykorzystuje niesamowite praktyki, które sprawiają, że cały projekt jest zarówno wydajny, jak i optymalny, jak to tylko możliwe. To naprawdę przykład piękna implementacji oprogramowania open source i tego, jak napędza świat, w którym żyjemy.

Projekt zapewnia wstępnie wytrenowane wagi dotyczące MS COCO, podstawowego zbioru danych o obiektach w kontekście, który można wykorzystać zarówno do porównywania, jak i budowania ogólnych systemów wykrywania obiektów – ale co najważniejsze, można go wykorzystać do przeniesienia ogólnej wiedzy o obiektach w kontekście do niestandardowych zbiory danych.

Wykrywanie obiektów za pomocą YOLOv5

Zanim przejdziesz dalej, upewnij się, że masz torch i torchvision zainstalowany:

! python -m pip install torch torchvision

YOLOv5 ma szczegółową, bezsensowną dokumentację i pięknie prosty interfejs API, jak pokazano w samym repozytorium i w następującym przykładzie:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Drugi argument hub.load() Metoda określa wagi, których chcemy użyć. Wybierając gdziekolwiek pomiędzy yolov5n do yolov5l6 – ładujemy na wstępnie wytrenowane odważniki MS COCO. W przypadku modeli niestandardowych:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

W każdym razie – po przejściu danych wejściowych przez model, zwracany obiekt zawiera pomocne metody interpretacji wyników, a my postanowiliśmy render() je, co zwraca tablicę NumPy, którą możemy wrzucić do imshow() połączenie. Daje to ładnie sformatowane:

Zapisywanie wyników jako plików

Możesz zapisać wyniki wnioskowania jako plik, używając results.save() metoda:

results.save(save_dir='results')

Spowoduje to utworzenie nowego katalogu, jeśli jeszcze go nie ma, i zapisanie tego samego obrazu, który właśnie narysowaliśmy jako plik.

Wycinanie obiektów

Możesz także wyciąć wykryte obiekty jako pojedyncze pliki. W naszym przypadku dla każdej wykrytej etykiety można wyodrębnić pewną liczbę obrazów. Można to łatwo osiągnąć za pomocą results.crop() metoda, która tworzy runs/detect/ katalog, z expN/crops (gdzie N wzrasta dla każdego przebiegu), w którym dla każdej etykiety tworzony jest katalog z przyciętymi obrazami:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Możesz również zweryfikować strukturę pliku wyjściowego za pomocą:

Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Liczenie obiektów

Domyślnie podczas wykrywania lub drukowania results obiekt – otrzymasz liczbę obrazów, na których w tym celu przeprowadzono wnioskowanie results obiekt (YOLOv5 działa również z partiami obrazów), jego rozdzielczość i liczba wykrytych etykiet:

print(results)

To skutkuje:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Wnioskowanie ze skryptami

Alternatywnie możesz uruchomić skrypt wykrywania, detect.py, klonując repozytorium YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

A potem bieganie:

$ python detect.py --source img.jpg

Alternatywnie możesz podać adres URL, plik wideo, ścieżkę do katalogu z wieloma plikami, glob w ścieżce do dopasowania tylko dla niektórych plików, link do YouTube lub dowolny inny strumień HTTP. Wyniki są zapisywane w runs/detect katalogiem.

Idąc dalej – praktyczne uczenie głębokie dla wizji komputerowej

Twoja dociekliwość sprawia, że ​​chcesz iść dalej? Zalecamy sprawdzenie naszego Kurs: „Praktyczne uczenie głębokie dla widzenia komputerowego z Pythonem”.

Wnioskowanie o wykrywaniu obiektów w Pythonie z YOLOv5 i PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Kolejny kurs na temat wizji komputerowej?

Nie będziemy robić klasyfikacji cyfr MNIST ani mody MNIST. Swoją rolę pełnili dawno temu. Zbyt wiele zasobów edukacyjnych koncentruje się na podstawowych zestawach danych i podstawowych architekturach, zanim zaawansowane architektury czarnoskrzynkowe poniosą ciężar wydajności.

Chcemy się skupić demistyfikacja, praktyczność, zrozumienie, intuicja i realne projekty. Chcieć się nauczyć w jaki sposób możesz zrobić różnicę? Zabierzemy Cię na przejażdżkę od sposobu, w jaki nasze mózgi przetwarzają obrazy, przez pisanie klasyfikatora głębokiego uczenia się na poziomie badań naukowych w zakresie raka piersi, do sieci głębokiego uczenia się, które „halucynują”, ucząc Cię zasad i teorii poprzez praktyczną pracę, wyposażając Cię w know-how i narzędzia, aby stać się ekspertem w stosowaniu uczenia głębokiego do rozwiązywania wizji komputerowych.

Co jest w środku?

  • Pierwsze zasady widzenia i jak nauczyć komputery „widzieć”
  • Różne zadania i zastosowania wizji komputerowej
  • Narzędzia handlu, które ułatwią Ci pracę
  • Znajdowanie, tworzenie i wykorzystywanie zbiorów danych do wizji komputerowej
  • Teoria i zastosowanie splotowych sieci neuronowych
  • Obsługa zmiany domeny, współwystępowania i innych błędów w zbiorach danych
  • Transfer uczenia się i wykorzystanie czasu szkolenia innych i zasobów obliczeniowych dla Twojej korzyści
  • Budowanie i szkolenie najnowocześniejszego klasyfikatora raka piersi
  • Jak zastosować zdrową dawkę sceptycyzmu do głównych idei i zrozumieć konsekwencje powszechnie stosowanych technik?
  • Wizualizacja „przestrzeni koncepcyjnej” ConvNet za pomocą t-SNE i PCA
  • Studia przypadków, w jaki sposób firmy wykorzystują techniki widzenia komputerowego do osiągania lepszych wyników
  • Właściwa ocena modelu, wizualizacja przestrzeni utajonej i identyfikacja uwagi modelu
  • Wykonywanie badań domenowych, przetwarzanie własnych zbiorów danych i tworzenie testów modelowych
  • Najnowocześniejsze architektury, progresja pomysłów, co czyni je wyjątkowymi i jak je wdrażać
  • KerasCV – biblioteka WIP do tworzenia najnowocześniejszych rurociągów i modeli
  • Jak analizować i czytać artykuły i samodzielnie je wdrażać
  • Wybór modeli w zależności od aplikacji
  • Tworzenie kompleksowego procesu uczenia maszynowego
  • Krajobraz i intuicja w wykrywaniu obiektów za pomocą szybszych sieci R-CNN, sieci RetinaNet, dysków SSD i YOLO
  • Segmentacja instancyjna i semantyczna
  • Rozpoznawanie obiektów w czasie rzeczywistym za pomocą YOLOv5
  • Szkolenie wykrywaczy obiektów YOLOv5
  • Praca z transformatorami przy użyciu KerasNLP (biblioteka przemysłowa WIP)
  • Integracja Transformers z ConvNets w celu generowania podpisów obrazów
  • DeepDream

Wnioski

W tym krótkim przewodniku przyjrzeliśmy się, jak wykonać wykrywanie obiektów za pomocą YOLOv5 zbudowanego przy użyciu PyTorch.

Znak czasu:

Więcej z Nadużycie stosu