Zaznavanje objektov in segmentacija primerkov v Pythonu z Detectron2 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Odkrivanje objektov in segmentacija primerkov v Pythonu z Detectron2

Predstavitev

Zaznavanje predmetov je obsežno področje računalniškega vida in ena pomembnejših aplikacij računalniškega vida »v naravi«. Na eni strani se lahko uporablja za gradnjo avtonomnih sistemov, ki krmarijo agente skozi okolja – naj bodo to roboti, ki opravljajo naloge, ali samovozeči avtomobili, vendar to zahteva presečišče z drugimi področji. Vendar pa je zaznavanje nepravilnosti (kot so okvarjeni izdelki na liniji), lociranje predmetov na slikah, zaznavanje obrazov in različne druge aplikacije zaznavanja predmetov mogoče izvesti brez presekanja drugih področij.

Zaznavanje objektov ni tako standardizirano kot klasifikacija slik, predvsem zato, ker večino novega razvoja običajno opravijo posamezni raziskovalci, vzdrževalci in razvijalci, ne pa velike knjižnice in ogrodja. Težko je zapakirati potrebne pomožne skripte v ogrodje, kot sta TensorFlow ali PyTorch, in vzdrževati smernice API-ja, ki so usmerjale dosedanji razvoj.

Zaradi tega je zaznavanje objektov nekoliko bolj zapleteno, običajno bolj podrobno (vendar ne vedno) in manj dostopno kot klasifikacija slik. Ena od glavnih prednosti bivanja v ekosistemu je, da vam omogoča, da ne iščete koristnih informacij o dobrih praksah, orodjih in pristopih za uporabo. Z zaznavanjem predmetov – večina mora veliko bolj raziskati pokrajino polja, da se dobro oprime.

Meta AI's Detectron2 – Segmentacija primerkov in zaznavanje predmetov

Detektron2 je odprtokodni paket Meta AI (prej FAIR – Facebook AI Research) za odkrivanje, segmentacijo in ocenjevanje položaja – vse v enem. Glede na vhodno sliko lahko vrne oznake, omejevalne okvire, ocene zaupanja, maske in skelete predmetov. To je dobro predstavljeno na strani skladišča:

Namenjen je uporabi kot knjižnica, na vrhu katere lahko gradite raziskovalne projekte. Ponuja a model živalskega vrta pri čemer se večina implementacij zanaša na Mask R-CNN in R-CNN na splošno, poleg RetinaNet. Imajo tudi precej spodobno Dokumentacija. Zaženimo vzorčni sklepni skript!

Najprej namestimo odvisnosti:

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

Nato bomo uvozili pripomočke Detectron2 – tu pride v poštev znanje okvirne domene. Detektor lahko sestavite z uporabo DefaultPredictor razreda, tako da posredujete konfiguracijski objekt, ki ga nastavi. The Visualizer ponuja podporo za vizualizacijo rezultatov. MetadataCatalog in DatasetCatalog pripadajo podatkovnemu API-ju Detectron2 in ponujajo informacije o vgrajenih naborih podatkov ter njihovih metapodatkih.

Uvozimo razrede in funkcije, ki jih bomo uporabljali:

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

Uporaba requests, bomo prenesli sliko in jo shranili na naš lokalni pogon:

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))

Rezultat tega je:

Zaznavanje objektov in segmentacija primerkov v Pythonu z Detectron2 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Zdaj naložimo konfiguracijo, po potrebi izvedemo spremembe (modeli privzeto delujejo na GPE, tako da če nimate GPE, boste želeli nastaviti napravo na 'cpu' v konfiguraciji):

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")


Tukaj določimo, kateri model želimo izvajati model_zoo. Uvozili smo model segmentacije instance, ki temelji na arhitekturi Mask R-CNN in s hrbtenico ResNet50. Odvisno od tega, kaj želite doseči (zaznavanje ključnih točk, segmentacija primerkov, panoptična segmentacija ali zaznavanje objektov), ​​boste naložili ustrezen model.

Končno lahko s tem sestavimo napovedovalec cfg in ga zaženite na vhodih! The Visualizer razred se uporablja za risanje napovedi na sliki (v tem primeru segmentiranih primerkov, razredov in omejevalnih okvirjev:

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])

Nazadnje to povzroči:

Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!

Zaznavanje objektov in segmentacija primerkov v Pythonu z Detectron2 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Naprej – Praktično poglobljeno učenje za računalniški vid

Ali zaradi vaše radovedne narave želite iti dlje? Priporočamo, da si ogledate naše Tečaj: »Praktično poglobljeno učenje za računalniški vid s Pythonom«.

Zaznavanje objektov in segmentacija primerkov v Pythonu z Detectron2 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Še en tečaj računalniškega vida?

Ne bomo izvajali klasifikacije števk MNIST ali načina MNIST. Svojo so že zdavnaj odslužili. Preveč učnih virov se osredotoča na osnovne nabore podatkov in osnovne arhitekture, preden prepusti naprednim arhitekturam črnih skrinjic breme zmogljivosti.

Želimo se osredotočiti na demistifikacija, praktičnosti, razumevanje, intuicija in pravi projekti. Želim se naučiti kako lahko kaj spremeniš? Popeljali vas bomo od načina, na katerega naši možgani obdelujejo slike, do pisanja raziskovalnega klasifikatorja globokega učenja za raka dojke do omrežij globokega učenja, ki »halucinirajo«, vas naučijo načel in teorije s praktičnim delom ter vas opremijo z znanje in izkušnje ter orodja, da postanete strokovnjak za uporabo globokega učenja za reševanje računalniškega vida.

Kaj je notri?

  • Prva načela vida in kako lahko računalnike naučimo "videti"
  • Različne naloge in aplikacije računalniškega vida
  • Strokovna orodja, ki vam bodo olajšala delo
  • Iskanje, ustvarjanje in uporaba naborov podatkov za računalniški vid
  • Teorija in uporaba konvolucijskih nevronskih mrež
  • Obravnava premikov domene, sopojavljanja in drugih pristranskosti v nizih podatkov
  • Prenos učenja in uporaba časa za usposabljanje in računalniških virov drugih v vašo korist
  • Izdelava in usposabljanje najsodobnejšega klasifikatorja raka dojke
  • Kako uporabiti zdrav odmerek skepticizma za glavne ideje in razumeti posledice splošno sprejetih tehnik
  • Vizualizacija »konceptnega prostora« ConvNet z uporabo t-SNE in PCA
  • Študije primerov o tem, kako podjetja uporabljajo tehnike računalniškega vida za doseganje boljših rezultatov
  • Pravilno vrednotenje modela, vizualizacija latentnega prostora in prepoznavanje pozornosti modela
  • Izvajanje domenskih raziskav, obdelava lastnih naborov podatkov in vzpostavljanje testov modelov
  • Vrhunske arhitekture, razvoj idej, kaj jih dela edinstvene in kako jih uresničiti
  • KerasCV – knjižnica WIP za ustvarjanje najsodobnejših cevovodov in modelov
  • Kako razčleniti in brati prispevke ter jih implementirati sami
  • Izbira modelov glede na vašo aplikacijo
  • Ustvarjanje cevovoda strojnega učenja od konca do konca
  • Pokrajina in intuicija pri zaznavanju predmetov s hitrejšimi R-CNN, RetinaNets, SSD in YOLO
  • Instančna in pomenska segmentacija
  • Prepoznavanje predmetov v realnem času z YOLOv5
  • Usposabljanje detektorjev predmetov YOLOv5
  • Delo s transformatorji z uporabo KerasNLP (industrijska knjižnica WIP)
  • Integracija Transformers s ConvNets za ustvarjanje napisov slik
  • Deepdream

zaključek

Segmentacija primerkov gre korak dlje od semantične segmentacije in ugotavlja kvalitativno razliko med posameznimi primerki razreda (oseba 1, oseba 2 itd.) namesto le tega, ali pripadajo enemu. Na nek način – to je klasifikacija na ravni slikovnih pik.

V tem kratkem vodniku smo na hitro pogledali, kako Detectron2 naredi segmentacijo primerkov in odkrivanje objektov enostavno in dostopno prek njihovega API-ja z uporabo maske R-CNN.

Časovni žig:

Več od Stackabuse