Wykrywanie obiektów i segmentacja instancji w Pythonie za pomocą Detectron2 PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wykrywanie obiektów i segmentacja instancji w Pythonie za pomocą Detectron2

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ść z nich musi przeprowadzić o wiele więcej badań nad krajobrazem pola, aby uzyskać dobrą przyczepność.

Meta AI's Detectron2 – segmentacja instancji i wykrywanie obiektów

Detektor2 to pakiet Meta AI (dawniej FAIR – Facebook AI Research) do wykrywania, segmentacji i szacowania pozy obiektów o otwartym kodzie źródłowym – wszystko w jednym. Biorąc pod uwagę obraz wejściowy, może zwrócić etykiety, ramki ograniczające, oceny ufności, maski i szkielety obiektów. Jest to dobrze reprezentowane na stronie repozytorium:

Ma służyć jako biblioteka, na której można budować projekty badawcze. Oferuje modelowy ogród zoologiczny przy czym większość wdrożeń opiera się na maskach R-CNN i ogólnie R-CNN, obok RetinaNet. Mają też całkiem przyzwoitą dokumentacja. Uruchommy przykładowy skrypt wnioskowania!

Najpierw zainstalujmy zależności:

$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'

Następnie zaimportujemy narzędzia Detectron2 – w tym miejscu w grę wchodzi wiedza o domenie frameworka. Możesz skonstruować detektor za pomocą DefaultPredictor klasy, przekazując obiekt konfiguracyjny, który ją konfiguruje. The Visualizer oferuje wsparcie dla wizualizacji wyników. MetadataCatalog i DatasetCatalog należą do API danych Detectron2 i oferują informacje o wbudowanych zestawach danych oraz ich metadanych.

Zaimportujmy klasy i funkcje, których będziemy używać:

import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog

Korzystanie z requests, pobierzemy obraz i zapiszemy go na naszym dysku lokalnym:

import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
    
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))

To skutkuje:

Wykrywanie obiektów i segmentacja instancji w Pythonie za pomocą Detectron2 PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Teraz ładujemy konfigurację, w razie potrzeby wprowadzamy zmiany (modele domyślnie działają na GPU, więc jeśli nie masz GPU, będziesz chciał ustawić urządzenie na 'cpu' w konfiguracji):

cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")


Tutaj określamy, z którego modelu chcemy uruchomić model_zoo. Zaimportowaliśmy model segmentacji instancji, oparty na architekturze Mask R-CNN i ze szkieletem ResNet50. W zależności od tego, co chcesz osiągnąć (wykrywanie punktów kluczowych, segmentacja instancji, segmentacja panoptyczna lub wykrywanie obiektów), załadujesz odpowiedni model.

Na koniec możemy skonstruować predyktor z tym cfg i uruchom go na wejściach! The Visualizer class służy do rysowania przewidywań na obrazie (w tym przypadku segmentowanych instancji, klas i ramek ograniczających:

predictor = DefaultPredictor(cfg)
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])

Ostatecznie skutkuje to:

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!

Wykrywanie obiektów i segmentacja instancji w Pythonie za pomocą Detectron2 PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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”.

Wykrywanie obiektów i segmentacja instancji w Pythonie za pomocą Detectron2 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

Segmentacja instancji wychodzi o krok poza segmentację semantyczną i zwraca uwagę na jakościową różnicę między poszczególnymi instancjami klasy (osoba 1, osoba 2 itd.), a nie tylko na to, czy należą do jednej. W pewnym sensie – to klasyfikacja na poziomie pikseli.

W tym krótkim przewodniku przyjrzeliśmy się, w jaki sposób Detectron2 sprawia, że ​​segmentacja instancji i wykrywanie obiektów jest łatwa i dostępna za pośrednictwem interfejsu API, przy użyciu maski R-CNN.

Znak czasu:

Więcej z Nadużycie stosu