Objektide tuvastamine ja eksemplaride segmenteerimine Pythonis koos Detectron2 PlatoBlockchain andmeanalüüsiga. Vertikaalne otsing. Ai.

Objektide tuvastamine ja eksemplaride segmenteerimine Pythonis koos Detectron2-ga

Sissejuhatus

Objektide tuvastamine on arvutinägemise suur valdkond ja üks olulisemaid arvutinägemise rakendusi "looduses". Ühest otsast saab selle abil ehitada autonoomseid süsteeme, mis navigeerivad agente läbi keskkondade – olgu selleks ülesandeid täitvad robotid või isejuhtivad autod, kuid selleks on vaja ristumist teiste valdkondadega. Anomaaliate tuvastamist (nt defektsed tooted liinil), objektide asukoha määramist piltidel, näotuvastust ja mitmesuguseid muid objekti tuvastamise rakendusi saab aga teha ilma teisi välju ristumata.

Objektide tuvastamine ei ole nii standardiseeritud kui piltide klassifitseerimine, peamiselt seetõttu, et enamiku uutest arendustest teevad tavaliselt üksikud teadlased, hooldajad ja arendajad, mitte suured raamatukogud ja raamistikud. Raske on pakkida vajalikke utiliidi skripte raamistikku, nagu TensorFlow või PyTorch, ja säilitada API juhiseid, mis seni arendust juhtisid.

See muudab objektide tuvastamise mõnevõrra keerukamaks, tavaliselt paljusõnalisemaks (kuid mitte alati) ja vähem ligipääsetavaks kui piltide klassifitseerimine. Üks ökosüsteemis viibimise peamisi eeliseid on see, et see annab võimaluse mitte otsida kasulikku teavet heade tavade, tööriistade ja kasutusviiside kohta. Objektide tuvastamisega – enamik peab hea haarde saamiseks palju rohkem uurima põllu maastikku.

Meta AI Detectron2 – eksemplaride segmenteerimine ja objektide tuvastamine

Detectron2 on Meta AI (endine FAIR – Facebook AI Research) avatud lähtekoodiga objektide tuvastamise, segmenteerimise ja poosi hindamise pakett – kõik ühes. Sisendkujutise korral võib see tagastada objektide sildid, piirdekastid, usaldusskoorid, maskid ja skeletid. See on hästi esindatud hoidla lehel:

See on mõeldud kasutamiseks raamatukoguna, mille peale saate ehitada uurimisprojekte. See pakub a mudel loomaaed enamik rakendusi tugineb RetinaNeti kõrval Mask R-CNN-ile ja R-CNN-idele üldiselt. Neil on ka päris korralik dokumentatsioon. Käivitame näitliku järeldusskripti!

Esmalt installime sõltuvused:

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

Järgmisena impordime Detectron2 utiliidid – siin tulevad mängu raamistiku-domeeni teadmised. Saate konstrueerida detektori kasutades DefaultPredictor klassis, edastades selle seadistava konfiguratsiooniobjekti. The Visualizer pakub tuge tulemuste visualiseerimiseks. MetadataCatalog ja DatasetCatalog kuuluvad Detectron2 andmete API-sse ja pakuvad teavet nii sisseehitatud andmekogumite kui ka nende metaandmete kohta.

Impordime kasutatavad klassid ja funktsioonid:

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

Kasutamine requests, laadime alla pildi ja salvestame selle kohalikule kettale:

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

Selle tulemuseks on:

Objektide tuvastamine ja eksemplaride segmenteerimine Pythonis koos Detectron2 PlatoBlockchain andmeanalüüsiga. Vertikaalne otsing. Ai.

Nüüd laadime konfiguratsiooni, vajadusel rakendame muudatusi (mudelid töötavad vaikimisi GPU-ga, nii et kui teil pole GPU-d, peaksite seadma seadme konfiguratsioonis "CPU"):

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


Siin täpsustame, millist mudelit soovime käivitada model_zoo. Oleme importinud eksemplari segmenteerimismudeli, mis põhineb Mask R-CNN arhitektuuril ja millel on ResNet50 selgroog. Sõltuvalt sellest, mida soovite saavutada (võtmepunkti tuvastamine, eksemplari segmenteerimine, panoptiline segmenteerimine või objekti tuvastamine), laadite sisse sobiva mudeli.

Lõpuks saame selle abil konstrueerida ennustaja cfg ja käivitage see sisenditel! The Visualizer klassi kasutatakse kujutisele prognooside joonistamiseks (antud juhul segmenteeritud eksemplarid, klassid ja piirdekastid:

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

Lõpuks annab see tulemuseks:

Tutvuge meie praktilise ja praktilise Giti õppimise juhendiga, mis sisaldab parimaid tavasid, tööstusharus aktsepteeritud standardeid ja kaasas olevat petulehte. Lõpetage Giti käskude guugeldamine ja tegelikult õppima seda!

Objektide tuvastamine ja eksemplaride segmenteerimine Pythonis koos Detectron2 PlatoBlockchain andmeanalüüsiga. Vertikaalne otsing. Ai.

Edasiminek – praktiline süvaõpe arvutinägemise jaoks

Sinu uudishimulik loomus tekitab sinus soovi minna kaugemale? Soovitame tutvuda meiega Kursus: "Praktiline süvaõpe arvutinägemise jaoks Pythoniga".

Objektide tuvastamine ja eksemplaride segmenteerimine Pythonis koos Detectron2 PlatoBlockchain andmeanalüüsiga. Vertikaalne otsing. Ai.

Veel üks arvutinägemise kursus?

Me ei klassifitseeri MNIST-i numbreid ega MNIST-moodi. Nad teenisid oma osa juba ammu. Liiga paljud õpperessursid keskenduvad põhiandmekogumitele ja põhiarhitektuuridele, enne kui lasevad täiustatud musta kasti arhitektuurid jõudluskoormuse enda kanda võtta.

Tahame keskenduda demüstifitseerimine, praktilisus, mõistmine, intuitsioon ja tõelisi projekte. Tahad õppida kuidas saate midagi muuta? Viime teid teele alates viisist, kuidas meie aju töötleb pilte, kuni rinnavähi süvaõppe klassifikaatori kirjutamiseni kuni süvaõppevõrgustikeni, mis "hallutsineerivad", õpetades teile põhimõtteid ja teooriat praktilise töö kaudu, varustades teid oskusteavet ja tööriistu, et saada eksperdiks süvaõppe rakendamisel arvutinägemise lahendamisel.

Mis seal sees on?

  • Nägemise esimesed põhimõtted ja see, kuidas arvuteid saab õpetada nägema
  • Arvutinägemise erinevad ülesanded ja rakendused
  • Tööriistad, mis muudavad teie töö lihtsamaks
  • Arvutinägemise andmestike otsimine, loomine ja kasutamine
  • Konvolutsiooniliste närvivõrkude teooria ja rakendus
  • Domeeni nihke, koosesinemise ja muude andmekogumite eelarvamuste käsitlemine
  • Teisaldage õppimine ja teiste koolitusaja ja arvutusressursside kasutamine teie kasuks
  • Kaasaegse rinnavähi klassifikaatori ehitamine ja väljaõpe
  • Kuidas rakendada tervet annust skepsist peavoolu ideede suhtes ja mõista laialdaselt kasutusele võetud tehnikate mõju
  • ConvNeti "kontseptsiooniruumi" visualiseerimine t-SNE ja PCA abil
  • Juhtumiuuringud, kuidas ettevõtted kasutavad arvutinägemise tehnikaid paremate tulemuste saavutamiseks
  • Mudeli nõuetekohane hindamine, varjatud ruumi visualiseerimine ja mudeli tähelepanu tuvastamine
  • Domeeniuuringu läbiviimine, oma andmekogumite töötlemine ja mudelitestide loomine
  • Tipptasemel arhitektuurid, ideede edenemine, mis teeb need ainulaadseks ja kuidas neid ellu viia
  • KerasCV – WIP-teek tipptasemel torujuhtmete ja mudelite loomiseks
  • Kuidas töid sõeluda ja lugeda ning neid ise rakendada
  • Mudelite valimine sõltuvalt teie rakendusest
  • Täieliku masinõppe torujuhtme loomine
  • Maastik ja intuitsioon objektide tuvastamisel kiiremate R-CNN-ide, RetinaNetside, SSD-de ja YOLO-ga
  • Eksemplar ja semantiline segmenteerimine
  • Reaalajas objektituvastus YOLOv5-ga
  • YOLOv5 objektidetektorite koolitamine
  • Transformeritega töötamine KerasNLP-ga (tööstuse tugev WIP-teek)
  • Transformerite integreerimine ConvNetsiga, et luua piltide pealdised
  • Deepdream

Järeldus

Eksemplaride segmenteerimine läheb semantilisest segmentimisest sammu võrra kaugemale ja märgib pigem kvalitatiivset erinevust klassi üksikute eksemplaride vahel (isik 1, isik 2 jne), mitte ainult seda, kas nad kuuluvad ühte. Mõnes mõttes – see on pikslitaseme klassifikatsioon.

Selles lühikeses juhendis vaatasime lühidalt, kuidas Detectron2 muudab esinemisjuhtude segmentimise ja objektide tuvastamise nende API kaudu lihtsaks ja juurdepääsetavaks, kasutades maski R-CNN-i.

Ajatempel:

Veel alates Stackabus