Detectarea obiectelor și segmentarea instanțelor în Python cu Detectron2 PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Detectarea obiectelor și segmentarea instanțelor în Python cu Detectron2

Introducere

Detectarea obiectelor este un domeniu larg în viziunea computerizată și una dintre cele mai importante aplicații ale vederii computerizate „în sălbăticie”. La un capăt, poate fi folosit pentru a construi sisteme autonome care navighează agenții prin medii – fie că este vorba de roboți care execută sarcini sau de mașini care se conduc singure, dar acest lucru necesită intersecția cu alte domenii. Cu toate acestea, detectarea anomaliilor (cum ar fi produsele defecte pe o linie), localizarea obiectelor în cadrul imaginilor, detectarea facială și diverse alte aplicații ale detectării obiectelor se pot face fără a intersecta alte câmpuri.

Detectarea obiectelor nu este la fel de standardizată precum clasificarea imaginilor, în principal pentru că majoritatea noilor dezvoltări sunt realizate de obicei de către cercetători, întreținerii și dezvoltatori individuali, mai degrabă decât de biblioteci și cadre mari. Este dificil să împachetați scripturile utilitare necesare într-un cadru precum TensorFlow sau PyTorch și să mențineți ghidurile API care au ghidat dezvoltarea până acum.

Acest lucru face ca detectarea obiectelor să fie oarecum mai complexă, de obicei mai pronunțată (dar nu întotdeauna) și mai puțin accesibilă decât clasificarea imaginilor. Unul dintre avantajele majore de a fi într-un ecosistem este că vă oferă o modalitate de a nu căuta informații utile despre bunele practici, instrumente și abordări de utilizat. Cu detectarea obiectelor – majoritatea trebuie să facă mult mai multe cercetări asupra peisajului câmpului pentru a obține o bună prindere.

Detectron2 de la Meta AI – Segmentarea instanțelor și detectarea obiectelor

Detectron2 este pachetul Meta AI (fost FAIR – Facebook AI Research) cu sursă deschisă de detectare a obiectelor, segmentare și estimare a poziției – totul într-unul. Având în vedere o imagine de intrare, poate returna etichetele, casetele de delimitare, scorurile de încredere, măștile și scheletele obiectelor. Acest lucru este bine reprezentat pe pagina depozitului:

Este menit să fie folosit ca o bibliotecă pe deasupra căreia puteți construi proiecte de cercetare. Oferă o model de grădină zoologică cu majoritatea implementărilor bazându-se pe Mask R-CNN și R-CNN în general, alături de RetinaNet. Au și un destul de decent documentaţie. Să rulăm un script de inferență exemplu!

Mai întâi, să instalăm dependențele:

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

În continuare, vom importa utilitățile Detectron2 – aici intră în joc cunoștințele domeniului cadru. Puteți construi un detector folosind DefaultPredictor clasa, prin trecerea unui obiect de configurare care o configurează. The Visualizer oferă suport pentru vizualizarea rezultatelor. MetadataCatalog și DatasetCatalog aparțin API-ului de date al Detectron2 și oferă informații despre seturile de date încorporate, precum și metadatele acestora.

Să importăm clasele și funcțiile pe care le vom folosi:

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

Utilizarea requests, vom descărca o imagine și o vom salva pe unitatea noastră locală:

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

Rezultă:

Detectarea obiectelor și segmentarea instanțelor în Python cu Detectron2 PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Acum, încărcăm configurația, efectuăm modificări dacă este necesar (modelele rulează implicit pe GPU, așa că dacă nu aveți un GPU, veți dori să setați dispozitivul la „cpu” în configurație):

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


Aici, specificăm ce model am dori să rulăm de la model_zoo. Am importat un model de segmentare a instanțelor, bazat pe arhitectura Mask R-CNN și cu o coloană vertebrală ResNet50. În funcție de ceea ce doriți să realizați (detecția punctelor cheie, segmentarea instanțelor, segmentarea panoptică sau detectarea obiectelor), veți încărca în modelul corespunzător.

În cele din urmă, putem construi un predictor cu aceasta cfg și rulați-l pe intrări! The Visualizer clasa este folosită pentru a desena predicții asupra imaginii (în acest caz, instanțele segmentate, clase și casete de delimitare:

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

În cele din urmă, aceasta are ca rezultat:

Consultați ghidul nostru practic și practic pentru a învăța Git, cu cele mai bune practici, standarde acceptate de industrie și fisa de cheat incluse. Opriți căutarea pe Google a comenzilor Git și de fapt învăţa aceasta!

Detectarea obiectelor și segmentarea instanțelor în Python cu Detectron2 PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Mergând mai departe – Învățare profundă practică pentru viziunea computerizată

Natura ta curios te face să vrei să mergi mai departe? Vă recomandăm să verificați Curs: „Învățare profundă practică pentru viziunea computerizată cu Python”.

Detectarea obiectelor și segmentarea instanțelor în Python cu Detectron2 PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Un alt curs de Computer Vision?

Nu vom face clasificarea cifrelor MNIST sau a modei MNIST. Și-au servit rolul cu mult timp în urmă. Prea multe resurse de învățare se concentrează pe seturile de date de bază și pe arhitecturile de bază înainte de a lăsa arhitecturile avansate de tip cutie neagră să asume povara performanței.

Vrem să ne concentrăm asupra demistificare, practic, înţelegere, intuiţie și proiecte reale. Vreau sa invat cum poți face o diferență? Vă vom duce într-o plimbare de la modul în care creierul nostru procesează imaginile până la scrierea unui clasificator de învățare profundă de nivel de cercetare pentru cancerul de sân la rețele de învățare profundă care „halucinează”, învățându-vă principiile și teoria prin muncă practică, echipându-vă cu know-how și instrumente pentru a deveni un expert în aplicarea învățării profunde pentru a rezolva viziunea computerizată.

Ce e inauntru?

  • Primele principii ale vederii și modul în care computerele pot fi învățate să „vadă”
  • Diferite sarcini și aplicații ale vederii computerizate
  • Instrumentele meseriei care vă vor ușura munca
  • Găsirea, crearea și utilizarea seturilor de date pentru viziune computerizată
  • Teoria și aplicarea rețelelor neuronale convoluționale
  • Gestionarea deplasării de domeniu, apariției concomitente și a altor părtiniri în seturile de date
  • Transfer Învățați și utilizați timpul de instruire și resursele de calcul ale altora în beneficiul dumneavoastră
  • Construirea și formarea unui clasificator de ultimă generație pentru cancerul de sân
  • Cum să aplicați o doză sănătoasă de scepticism ideilor principale și să înțelegeți implicațiile tehnicilor adoptate pe scară largă
  • Vizualizarea unui „spațiu conceptual” al unui ConvNet folosind t-SNE și PCA
  • Studii de caz despre modul în care companiile folosesc tehnicile de viziune computerizată pentru a obține rezultate mai bune
  • Evaluarea corectă a modelului, vizualizarea spațiului latent și identificarea atenției modelului
  • Efectuarea cercetărilor de domeniu, procesarea propriilor seturi de date și stabilirea de teste de model
  • Arhitecturi de ultimă oră, progresul ideilor, ce le face unice și cum să le implementăm
  • KerasCV – o bibliotecă WIP pentru crearea de conducte și modele de ultimă generație
  • Cum să analizați și să citiți lucrările și să le implementați singur
  • Selectarea modelelor în funcție de aplicația dvs
  • Crearea unui canal de învățare automată de la capăt la capăt
  • Peisaj și intuiție în detectarea obiectelor cu R-CNN-uri mai rapide, RetinaNets, SSD-uri și YOLO
  • Instanță și segmentare semantică
  • Recunoașterea obiectelor în timp real cu YOLOv5
  • Instruirea detectoarelor de obiecte YOLOv5
  • Lucrul cu Transformers folosind KerasNLP (bibliotecă WIP puternică în industrie)
  • Integrarea Transformers cu ConvNets pentru a genera subtitrări ale imaginilor
  • Deepdream

Concluzie

Segmentarea instanțelor merge cu un pas dincolo de segmentarea semantică și observă diferența calitativă dintre instanțele individuale ale unei clase (persoana 1, persoana 2 etc...) și nu doar dacă aparțin uneia. Într-un fel – este o clasificare la nivel de pixeli.

În acest scurt ghid, am aruncat o privire rapidă asupra modului în care Detectron2 face segmentarea instanțelor și detectarea obiectelor ușoare și accesibile prin intermediul API-ului lor, folosind o mască R-CNN.

Timestamp-ul:

Mai mult de la Stackabuse