Objektien tunnistus ja ilmentymien segmentointi Pythonissa Detectron2 PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Objektin tunnistus ja ilmentymien segmentointi Pythonissa Detectron2:n kanssa

esittely

Objektien havaitseminen on laaja kenttä tietokonenäössä ja yksi tärkeimmistä tietokonenäön sovelluksista "luonnossa". Toisaalta sen avulla voidaan rakentaa autonomisia järjestelmiä, jotka navigoivat agentteja ympäristöissä – olipa kyse tehtäviä suorittavista roboteista tai itseohjautuvista autoista, mutta tämä vaatii risteyksiä muiden kenttien kanssa. Kuitenkin poikkeamien havaitseminen (kuten vialliset tuotteet linjalla), kohteiden paikantaminen kuvissa, kasvojen tunnistus ja monet muut esineentunnistuksen sovellukset voidaan tehdä leikkaamatta muita kenttiä.

Objektien tunnistus ei ole yhtä standardoitua kuin kuvien luokittelu, lähinnä siksi, että useimmat uudet kehitystyöt ovat tyypillisesti yksittäisten tutkijoiden, ylläpitäjien ja kehittäjien tekemiä suurten kirjastojen ja kehysten sijaan. Tarvittavia apuohjelmia on vaikea pakata TensorFlow- tai PyTorchin kaltaisiin puitteisiin ja ylläpitää kehitystä tähän asti ohjaaneita API-ohjeita.

Tämä tekee objektien havaitsemisesta jonkin verran monimutkaisempaa, tyypillisesti monisanaisempaa (mutta ei aina) ja vähemmän lähestyttävää kuin kuvien luokittelu. Yksi ekosysteemissä olemisen suurimmista eduista on, että se tarjoaa tavan olla etsimättä hyödyllistä tietoa hyvistä käytännöistä, työkaluista ja lähestymistavoista. Kohteen havaitseminen – useimpien on tutkittava enemmän kentän maisemaa saadakseen hyvän otteen.

Meta AI:n Detectron2 – Instanssisegmentointi ja objektien tunnistus

Ilmaisin 2 on Meta AI:n (aiemmin FAIR – Facebook AI Research) avoimen lähdekoodin objektintunnistus-, segmentointi- ja asennonestimointipaketti – kaikki yhdessä. Kun syötekuva on annettu, se voi palauttaa objektien tarrat, rajoitusruudut, luottamuspisteet, maskit ja luurangot. Tämä on hyvin edustettuna arkiston sivulla:

Se on tarkoitettu käytettäväksi kirjastona, jonka päälle voi rakentaa tutkimusprojekteja. Se tarjoaa a malli eläintarha useimmat toteutukset perustuvat Mask R-CNN:iin ja R-CNN:ihin yleensä RetinaNetin rinnalla. Heillä on myös melko kunnollinen dokumentointi. Suoritetaan esimerkillinen johtopäätös!

Asenna ensin riippuvuudet:

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

Seuraavaksi tuomme Detectron2-apuohjelmat – tässä kehysverkkotunnuksia koskeva tieto tulee esiin. Voit rakentaa ilmaisimen käyttämällä DefaultPredictor luokkaa, välittämällä konfigurointiobjektin, joka määrittää sen. The Visualizer tarjoaa tukea tulosten visualisointiin. MetadataCatalog ja DatasetCatalog kuuluvat Detectron2:n datasovellusliittymään ja tarjoavat tietoa sisäänrakennetuista tietojoukoista sekä niiden metatiedoista.

Tuodaan luokat ja funktiot, joita käytämme:

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

Käyttäminen requests, lataamme kuvan ja tallennamme sen paikalliselle asemallemme:

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

Tämä johtaa:

Objektien tunnistus ja ilmentymien segmentointi Pythonissa Detectron2 PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Nyt lataamme kokoonpanon, teemme muutoksia tarvittaessa (mallit toimivat oletuksena GPU:lla, joten jos sinulla ei ole GPU:ta, laitteelle kannattaa asettaa konfiguraatiossa "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")


Tässä määritämme, mitä mallia haluamme käyttää model_zoo. Olemme tuoneet ilmentymien segmentointimallin, joka perustuu Mask R-CNN -arkkitehtuuriin ja jossa on ResNet50-runkoverkko. Riippuen siitä, mitä haluat saavuttaa (avainpisteen tunnistus, ilmentymien segmentointi, panoptinen segmentointi tai objektin tunnistus), lataat oikean mallin.

Lopuksi voimme rakentaa ennustajan tällä cfg ja suorita se tuloissa! The Visualizer luokkaa käytetään ennusteiden piirtämiseen kuvaan (tässä tapauksessa segmentoidut ilmentymät, luokat ja rajauslaatikot:

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

Lopulta tämä johtaa:

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

Objektien tunnistus ja ilmentymien segmentointi Pythonissa Detectron2 PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Jatketaan – Käytännön syvällistä oppimista tietokonenäköön

Utelias luonteesi saa sinut haluamaan pidemmälle? Suosittelemme tutustumaan meidän Kurssi: "Käytännön syvällinen oppiminen tietokonenäön käyttöön Pythonilla".

Objektien tunnistus ja ilmentymien segmentointi Pythonissa Detectron2 PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Toinen tietokonenäkökurssi?

Emme luokittele MNIST-numeroita tai MNIST-muotia. He palvelivat osansa kauan sitten. Liian monet oppimisresurssit keskittyvät perustietosarjoihin ja perusarkkitehtuureihin, ennen kuin edistyneiden black-box-arkkitehtuurien annetaan kantaa suoritustaakka.

Haluamme keskittyä demystifikaatio, käytännöllisyys, ymmärtäminen, intuitio ja oikeita projekteja. Haluan oppia miten voitko vaikuttaa? Viemme sinut matkalle aivomme prosessoinnista kuvien tutkimiseen rintasyövän syväoppimisluokittajan kirjoittamiseen syväoppimisverkostoihin, jotka "halusinoivat", opettaen sinulle periaatteita ja teoriaa käytännön työssä ja varustamalla tietotaitoa ja työkaluja tullaksesi asiantuntijaksi syväoppimisen soveltamisessa tietokonenäön ratkaisemiseen.

Mitä on sisällä?

  • Näön ensimmäiset periaatteet ja kuinka tietokoneet voidaan opettaa "näkemään"
  • Tietokonenäön eri tehtävät ja sovellukset
  • Ammatin työkalut, jotka helpottavat työtäsi
  • Tietokokonaisuuksien etsiminen, luominen ja hyödyntäminen tietokonenäköä varten
  • Konvoluutiohermoverkkojen teoria ja sovellus
  • Verkkotunnuksen siirtymisen, samanaikaisen esiintymisen ja muiden vääristymien käsittely tietojoukoissa
  • Siirrä Oppiminen ja muiden koulutusajan ja laskennallisten resurssien hyödyntäminen hyödyksesi
  • Huippuluokan rintasyövän luokittelijan rakentaminen ja kouluttaminen
  • Kuinka soveltaa tervettä annos skeptisyyttä valtavirran ideoihin ja ymmärtää laajalti käytettyjen tekniikoiden vaikutukset
  • ConvNetin "konseptitilan" visualisointi t-SNE:n ja PCA:n avulla
  • Tapaustutkimuksia siitä, kuinka yritykset käyttävät tietokonenäkötekniikoita parempien tulosten saavuttamiseksi
  • Oikea mallin arviointi, piilevän tilan visualisointi ja mallin huomion tunnistaminen
  • Toimialuetutkimuksen suorittaminen, omien tietojoukkojen käsittely ja mallitestien laatiminen
  • Huippuluokan arkkitehtuurit, ideoiden eteneminen, mikä tekee niistä ainutlaatuisia ja miten ne toteutetaan
  • KerasCV – WIP-kirjasto uusimpien putkien ja mallien luomiseen
  • Kuinka jäsentää ja lukea papereita ja toteuttaa ne itse
  • Mallien valinta sovelluksesi mukaan
  • Luodaan päästä päähän koneoppimisputki
  • Maisema ja intuitio kohteen havaitsemisessa nopeampien R-CNN-, RetinaNet-, SSD- ja YOLO-verkkojen avulla
  • Instanssi ja semanttinen segmentointi
  • Reaaliaikainen objektintunnistus YOLOv5:n avulla
  • YOLOv5-objektitunnistimien koulutus
  • Työskentely Transformersin kanssa KerasNLP:n (teollisuuden vahvuus WIP-kirjasto) avulla
  • Transformersin integrointi ConvNet-verkkojen kanssa kuvien tekstitysten luomiseksi
  • Deepdream

Yhteenveto

Ilmentymien segmentointi menee yhden askeleen semanttista segmentointia pidemmälle ja panee merkille laadullisen eron luokan yksittäisten esiintymien välillä (henkilö 1, henkilö 2 jne.) sen sijaan, että ne kuuluvat johonkin. Tavallaan – se on pikselitason luokitus.

Tässä lyhyessä oppaassa olemme tarkastelleet nopeasti, kuinka Detectron2 tekee ilmentymien segmentoinnista ja objektien havaitsemisesta helppoa ja saavutettavaa API:n kautta maskin R-CNN:n avulla.

Aikaleima:

Lisää aiheesta Stackabus