Objectdetectie en instantiesegmentatie in Python met Detectron2 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Objectdetectie en instantiesegmentatie in Python met Detectron2

Introductie

Objectdetectie is een groot gebied in computervisie en een van de belangrijkste toepassingen van computervisie "in het wild". Aan de ene kant kan het worden gebruikt om autonome systemen te bouwen die agenten door omgevingen navigeren - of het nu robots zijn die taken uitvoeren of zelfrijdende auto's, maar dit vereist kruising met andere velden. Anomaliedetectie (zoals defecte producten op een lijn), het lokaliseren van objecten in afbeeldingen, gezichtsdetectie en verschillende andere toepassingen van objectdetectie kunnen echter worden uitgevoerd zonder andere velden te kruisen.

Objectdetectie is niet zo gestandaardiseerd als beeldclassificatie, vooral omdat de meeste nieuwe ontwikkelingen doorgaans worden gedaan door individuele onderzoekers, beheerders en ontwikkelaars, in plaats van door grote bibliotheken en frameworks. Het is moeilijk om de benodigde hulpprogrammascripts in een framework als TensorFlow of PyTorch te verpakken en de API-richtlijnen te handhaven die de ontwikkeling tot dusver hebben geleid.

Dit maakt objectdetectie iets complexer, doorgaans uitgebreider (maar niet altijd) en minder benaderbaar dan beeldclassificatie. Een van de belangrijkste voordelen van deel uitmaken van een ecosysteem is dat het je een manier biedt om niet te zoeken naar nuttige informatie over goede praktijken, tools en benaderingen om te gebruiken. Met objectdetectie moeten de meesten veel meer onderzoek doen naar het landschap van het veld om een โ€‹โ€‹goede grip te krijgen.

Meta AI's Detectron2 - instantiesegmentatie en objectdetectie

Detector2 is Meta AI (voorheen FAIR - Facebook AI Research)'s open source objectdetectie-, segmentatie- en pose-schattingspakket - alles in รฉรฉn. Gegeven een invoerafbeelding kan het de labels, begrenzingsvakken, betrouwbaarheidsscores, maskers en skeletten van objecten retourneren. Dit is goed weergegeven op de pagina van de repository:

Het is bedoeld om te gebruiken als een bibliotheek waarop je onderzoeksprojecten kunt bouwen. Het biedt een model dierentuin waarbij de meeste implementaties afhankelijk zijn van Mask R-CNN en R-CNN's in het algemeen, naast RetinaNet. Ze hebben ook een behoorlijke documentatie. Laten we een voorbeeld-inferentiescript uitvoeren!

Laten we eerst de afhankelijkheden installeren:

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

Vervolgens importeren we de Detectron2-hulpprogramma's - dit is waar kennis van het framework-domein een rol speelt. U kunt een detector bouwen met behulp van de DefaultPredictor class, door een configuratieobject door te geven dat het instelt. De Visualizer biedt ondersteuning bij het visualiseren van resultaten. MetadataCatalog en DatasetCatalog behoren tot de data-API van Detectron2 en bieden informatie over ingebouwde datasets en hun metadata.

Laten we de klassen en functies importeren die we gaan gebruiken:

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

gebruik requests, zullen we een afbeelding downloaden en opslaan op onze lokale schijf:

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

Dit resulteert in:

Objectdetectie en instantiesegmentatie in Python met Detectron2 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Nu laden we de configuratie, voeren we eventueel wijzigingen door (de modellen draaien standaard op GPU, dus als je geen GPU hebt, moet je het apparaat in de configuratie op 'cpu' zetten):

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


Hier specificeren we welk model we willen uitvoeren vanaf de model_zoo. We hebben een segmentatiemodel voor instanties geรฏmporteerd, gebaseerd op de Mask R-CNN-architectuur en met een ResNet50-backbone. Afhankelijk van wat u wilt bereiken (sleutelpuntdetectie, instantiesegmentatie, panoptische segmentatie of objectdetectie), laadt u in het juiste model.

Eindelijk kunnen we hiermee een voorspeller construeren cfg en voer het uit op de ingangen! De Visualizer class wordt gebruikt om voorspellingen op de afbeelding te tekenen (in dit geval gesegmenteerde instanties, klassen en begrenzingsvakken:

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

Dit resulteert uiteindelijk in:

Bekijk onze praktische, praktische gids voor het leren van Git, met best-practices, door de industrie geaccepteerde normen en bijgevoegd spiekbriefje. Stop met Googlen op Git-commando's en eigenlijk leren het!

Objectdetectie en instantiesegmentatie in Python met Detectron2 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Verder gaan - Praktisch diep leren voor computervisie

Je leergierige karakter maakt dat je verder wilt gaan? We raden aan om onze Type cursus: "Praktisch diep leren voor computervisie met Python".

Objectdetectie en instantiesegmentatie in Python met Detectron2 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Nog een cursus computervisie?

We zullen geen classificatie van MNIST-cijfers of MNIST-mode doen. Ze hebben lang geleden hun deel gediend. Te veel leermiddelen zijn gericht op basisgegevenssets en basisarchitecturen voordat geavanceerde black-box-architecturen de last van de prestaties op zich nemen.

We willen ons concentreren op demystificatie, uitvoerbaarheid, begrip, intuรฏtie en echte projecten. Willen leren hoe je kan een verschil maken? We nemen je mee op een reis van de manier waarop onze hersenen afbeeldingen verwerken tot het schrijven van een onderzoeksclassificatie voor diep leren voor borstkanker tot diepgaande leernetwerken die 'hallucineren', je de principes en theorie leren door middel van praktisch werk, en je uitrusten met de knowhow en tools om een โ€‹โ€‹expert te worden in het toepassen van deep learning om computervisie op te lossen.

Wat zit erin?

  • De eerste principes van visie en hoe computers kunnen worden geleerd om te "zien"
  • Verschillende taken en toepassingen van computervisie
  • De tools van het vak die uw werk gemakkelijker maken
  • Datasets zoeken, maken en gebruiken voor computervisie
  • De theorie en toepassing van convolutionele neurale netwerken
  • Omgaan met domeinverschuiving, gelijktijdig voorkomen en andere vooroordelen in datasets
  • Overdragen Leren en de trainingstijd en computerbronnen van anderen gebruiken in uw voordeel
  • Het bouwen en trainen van een state-of-the-art classifier voor borstkanker
  • Hoe je een gezonde dosis scepsis toepast op mainstream ideeรซn en de implicaties begrijpt van algemeen aanvaarde technieken?
  • De "conceptruimte" van een ConvNet visualiseren met t-SNE en PCA
  • Casestudy's van hoe bedrijven computervisietechnieken gebruiken om betere resultaten te behalen
  • Correcte modelevaluatie, visualisatie van de latente ruimte en het identificeren van de aandacht van het model
  • Domeinonderzoek doen, eigen datasets verwerken en modeltesten opzetten
  • Geavanceerde architecturen, de voortgang van ideeรซn, wat ze uniek maakt en hoe ze te implementeren
  • KerasCV โ€“ een WIP-bibliotheek voor het maken van ultramoderne pijplijnen en modellen
  • Hoe papers te ontleden en te lezen en ze zelf te implementeren?
  • Modellen selecteren afhankelijk van uw toepassing
  • Een end-to-end machine learning-pijplijn maken
  • Landschap en intuรฏtie bij objectdetectie met snellere R-CNN's, RetinaNets, SSD's en YOLO
  • Instantie en semantische segmentatie
  • Realtime objectherkenning met YOLOv5
  • YOLOv5-objectdetectoren trainen
  • Werken met Transformers met KerasNLP (industriรซle WIP-bibliotheek)
  • Transformers integreren met ConvNets om bijschriften van afbeeldingen te genereren
  • DeepDream

Conclusie

Instantiesegmentatie gaat een stap verder dan semantische segmentatie en merkt het kwalitatieve verschil op tussen individuele instanties van een klasse (persoon 1, persoon 2, enz...) in plaats van alleen of ze tot een klasse behoren. In zekere zin is het classificatie op pixelniveau.

In deze korte handleiding hebben we snel bekeken hoe Detectron2 instantiesegmentatie en objectdetectie eenvoudig en toegankelijk maakt via hun API, met behulp van een Mask R-CNN.

Tijdstempel:

Meer van Stapelmisbruik