Gekissimo.net - Opi ansaitsemaan rahaa webilläsi Internetissä!

Opetusohjelma mukautettujen objektien tunnistusmallien rakentamiseen detektion avulla

Seuraava artikkeli auttaa sinua: Opetusohjelma mukautettujen objektien tunnistusmallien rakentamiseen detektion avulla

Saatavilla on monia työkaluja, jotka auttavat rakentamaan huippuluokan tietokonenäkösovelluksia. Jotkut työkalut tarjoavat valmiita sovelluksia ilman mukauttamisvaihtoehtoa, kun taas toiset tarjoavat vaihtoehtoja sovellusten rakentamiseen tyhjästä. Kohteiden havaitsemiseen kuvista on saatavilla monia työkaluja ja paketteja. Nyt jos meidän on rakennettava objektintunnistusmalli omiin tarpeisiimme, siitä tulee haaste. Detecto, python-paketti, tarjoaa ominaisuuksia mukautettujen objektien tunnistusmallien rakentamiseen vaatimusten mukaisesti. Tässä artikkelissa aiomme keskustella siitä, kuinka voimme rakentaa mukautettuja objektien pidätysmalleja Detecton avulla. Tärkeimmät tässä artikkelissa käsiteltävät kohdat on lueteltu alla.

Sisällysluettelo

  1. Mikä on Detecto?
  2. Mukautetun kohteen tunnistusmallin rakentaminen
    1. Tuodaan tietoja
    2. Tietojen esikäsittely
    3. Mallin koulutus
    4. Objektien nimien ennustaminen

Aloitetaan ymmärtämällä Detecto.

Mikä on Detecto?

Detecto on avoimen lähdekoodin kirjasto tietokonenäön ohjelmointiin, joka auttaa meitä sovittamaan viimeisimmän tekniikan tietokonenäkö- ja esineentunnistusmalleja kuvatietoihimme. Yksi tämän paketin hienoista asioista on se, että voimme sovittaa nämä mallit hyvin harvoilla koodiriveillä. Esimerkeissä he ovat osoittaneet meille, kuinka voimme sovittaa nämä mallit käyttämällä vain neljää tai viittä koodiriviä.

On olemassa erilaisia ​​ominaisuuksia, kuten päätelmien tekeminen still-kuvien ja videoiden avulla tai siirtooppimismallien sovittaminen tämän kirjaston mukana tulevien mukautettujen tietojemme avulla. Pytorch on kirjasto, joka on Detecto-kirjaston perusta, joten mallien siirtäminen näiden kirjastojen välillä on helppoa. Perustoteutuksesta sovellukseen, edistyneitä tekniikoita tietokonenäköprojekteissa voidaan suorittaa tämän kirjaston avulla. Voimme yksinkertaisesti asentaa Detecto-kirjaston ympäristöömme käyttämällä seuraavia koodirivejä.

!pip install detecto

Asennuksesta huomaamme myös, että tämä kirjasto sisältää myös tietokonenäkökirjastoja, kuten open-cv, torchvision ja pillow.

Yksi tärkeimmistä asioista on se, että voimme kouluttaa tietokonenäkömallejamme sekä CPU:ssa että GPU:ssa, mutta on suositeltavaa käyttää GPU:ta tietokonenäkömallien harjoittamiseen, jotta prosessi nopeutuu, koska mallien koko on niin paljon suurempi.

🔥 Empfohlen:  Technics luopui 50-vuotisjuhlapäiväänsä SL-1200 levysoittimesta

Etsitkö täydellistä arkistoa tietotieteessä käytettävistä Python-kirjastoista, katso tästä.

Mukautetun objektintunnistusmallin rakentaminen

Tämä kirjasto väittää, että voimme kouluttaa mallin mukautetulle tietojoukolle käyttämällä alla olevia 5 koodiriviä

from detecto.core import Model, Dataset dataset = Dataset(‘custom_dataset/’) model = Malli([‘dog’, ‘cat’, ‘rabbit’]) malli.sovitus(tietojoukko) malli.ennustus(…)

Missä ensimmäisellä rivillä tuomme mallin ja tietojoukon moduulin. Toinen rivi on datan esiintymän määrittämiseen, kolmas rivi mallien ilmentämiseen ja neljäs rivi mallin kouluttamiseen tai sovittamiseen tietoihin ja viimeinen rivi kertoo meille mallin ennusteen.

Kokeillaan tätä kirjastoa kerran, koska kirjastossa on useita ominaisuuksia yllä olevassa osiossa annettujen sijaan.

Tuodaan tietoja

Tässä osiossa aiomme nähdä, kuinka voimme käyttää tätä kirjastoa tietojoukolle koulutetun kuvaluokittimen tekemiseen. Joten ennen kuin aloitamme mitään, meidän on hankittava tietojoukko, ja minulla on täältä koirien kuvia. Detecton kehittäjät ovat jo merkinneet tämän tietojoukon, ja meidän on vain tuotava se ympäristöömme. Tässä tietojoukossa on 300 merkittyä kuvaa kultaisista noutaja- ja chihuahuakoirista. Otetaan tiedot ensin.

Olen ladannut tiedot tästä linkistä ja ladannut ne asemaani. Tämän lukemista varten olen ladannut sen asemaan ja luen nämä tiedot sen jälkeen, kun asema on asennettu kannettavaan. Asennus voidaan tehdä käyttämällä seuraavia koodirivejä.

google.colab-tuontiasemasta drive.mount(‘/content/drive’)

Asetetaan nyt hakemisto työhakemistoksi, johon olemme lähettäneet tiedot

tuonti os.chdir(‘/content/drive/MyDrive/Yugesh/Objektin tunnistus 5 rivillä koodia käyttämällä Detecto/dog_dataset’)

Tarkastetaan kansio, jonka saimme latauksestamme.

!ls

Lähtö:

Tässä näemme, että meillä on kolme kansiota ja yksi tiedosto hakemistossamme. Tarkastetaan jokaisen kansion sisältö.

!ls kuvat

Lähtö:

Näin kuvat ovat kuvakansiossa.

!ls train_labels

Lähtö:

Yllä oleva tulos edustaa train_lables-kansiossa olevia XML-tiedostoja.

!ls val_labels

Lähtö:

Yllä oleva tulos edustaa XML-tiedostoja, jotka meillä on val_lables-kansiossa. Tämän kirjaston avulla meillä on utlis, jota voidaan käyttää XML-tiedostojen muuntamiseen CSV-tiedostoiksi.

🔥 Empfohlen:  Kasvata kiinteistöliiketoimintaasi Pinterestin avulla

from detecto import utils detecto.utils.xml_to_csv(‘train_labels’, ‘train.csv’) detecto.utils.xml_to_csv(‘val_labels’, ‘val.csv’)

Lähtö:

Tässä olemme muuntaneet tunnisteet XML-muodossa CSV-muotoon. Visualisoidaan kuva kuvatiedoista.

tuonti matplotlib.pyplot muodossa plt tuonti matplotlib.image as img image = img.imread(‘images/n02085620_8611.jpg’) plt.imshow(image) plt.show()

Lähtö:

Täällä näemme suurimman osan hankituista tiedoistamme.

Esikäsittele tiedot

Jotta voimme työskennellä tämän kirjaston kanssa, meidän on esikäsiteltävä tiedot kirjaston apuohjelmien mukaisesti. Tässä osiossa tarkastellaan, kuinka voimme tehdä tämän käyttämällä Detecto-kirjastoa. Tässä osiossa suoritamme seuraavan esikäsittelyn:

  • Kuvan muunnos
  • Kuvien ja tarrojen yhdistäminen
  • Kuvan merkitseminen

Aloitetaan kuvien muuntamisesta

from torchvision tuonti muunnokset detekto import core transform_img = transforms.Compose([
transforms.ToPILImage(),
transforms.Resize(800),
transforms.RandomHorizontalFlip(0.5),
transforms.ToTensor(),
utils.normalize_transform(),
])

Nyt käyttämällä yllä olevaa toimintoa ja Detecton ydintoimintoa, muunnetaan kuvat ja yhdistetään ja merkitään junakuvat.

dataset = detecto.core.Dataset(‘train.csv’, ‘images/’, transform=transform_img)

Täällä olemme suorittaneet suurimman osan esikäsittelystä yhdellä koodirivillä. Visualisoidaan yksi merkitty kuva.

from detecto import visualize image, information = dataset[50]
detecto.visualize.show_labeled_image(kuva, tieto[‘boxes’]tiedot[‘labels’])

Lähtö:

Täällä yllä olevista koodeista voimme nähdä, kuinka käytämme Detectoa kuvien visualisointiin ja kuvien esikäsittelyyn.

Mallin koulutus

Tietojen esikäsittelyn jälkeen olemme valmiita kouluttamaan malliamme. Tässä artikkelissa aiomme käyttää Faster-RCNN-resnet50-mallia tiedoissamme. Koulutusprosessi voidaan suorittaa kahdessa seuraavassa vaiheessa.

  • Instantating data loader
  • Muodostuvat ja sopivat mallit.

Instantating data loader

Datan sovittamiseksi malliin meidän on instantoitava objekti lataajaksemme, joka voi säilyttää tiedot. Käyttämällä alla olevaa koodia voimme tehdä tämän.

dataloader = detecto.core.DataLoader(dataset) dataloader

Lähtö:

Tässä näemme, että yllä oleva objekti on Detecto.core-moduuli.

Näyttävä ja sopiva malli

Tässä osiossa syötämme tiedonlatausinstanssin kuvan luokittelijaan. Tarkkuuden mittaamiseksi meidän on lisättävä tarroja validointikuvatietoihimme. Se voi käyttää seuraavia koodeja.

validation_data = detecto.core.Dataset(‘val.csv’, ‘images/’)

Nyt meidän on saatava malli tietämään, mitkä ovat tiedoissamme olevat luokat. Voimme tehdä tämän samalla kun instantoimme mallia.

🔥 Empfohlen:  Laajenna sisältömarkkinointistrategiaasi mobiilivideomarkkinoinnin avulla

luokat = [‘Chihuahua’, ‘golden_retriever’]
luokitin = ydin. Malli(kategoriat)

Lähtö:

Nyt olemme valmiita sovittamaan tämän mallin harjoitustietoihimme ja validointitietoihimme.

historia = classifier.fit(dataloader, validation_data, epochs = 20, verbose = True)

Lähtö:

Tulosteessa näemme, että olemme harjoitelleet malliamme 20 aikakaudella. Piirretään tappiot mallista.

plt.plot(historia)

Lähtö:

Tässä nähdään, että mallien menetys on vähentynyt aikakausien myötä.

Objektien nimien ennustaminen

Nyt voimme piirtää objektin nimien ennusteita käyttämällä koulutettua malliamme. Tätä varten poimimme ensin joitakin kuvia tiedoista käyttämällä seuraavia koodeja.

kuvat = []
i:lle alueella (0,36,3): kuva,_ = validointitiedot[i]
images.apppend(image) image.shape

Lähtö:

Nyt voimme käyttää Detectoa kuvien visualisointiin.

visualize.plot_prediction_grid(luokitus, kuvat, dim=(4, 3), figsize=(16, 12))

Lähtö:

Yllä olevasta lähdöstä voimme nähdä, kuinka malli on havainnut ja antanut nimikkeen kuvissa oleville kohteille.

Viimeiset sanat

Tässä artikkelissa olemme keskustelleet Detectosta, joka on kirjasto tietokonenäön ohjelmointiin ja mallintamiseen helposti ja tehokkaasti. Tämän ohella olemme nähneet, kuinka voimme käyttää sitä mukautetun esineen pidätysmallin rakentamiseen nopeasti ja helposti. Rakensimme esineentunnistusmallin ja testasimme sitä kuvissa olevien esineiden nimikkeiden ennustamiseksi.

Viitteet