Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services

Tietokonenäkö (CV) on yksi yleisimmistä koneoppimisen (ML) ja syväoppimisen sovelluksista. Käyttötapaukset vaihtelevat itse ajavista autoista, sisällön moderointiin sosiaalisen median alustoilla, syövän havaitsemiseen ja automaattiseen vikojen havaitsemiseen. Amazonin tunnistus on täysin hallittu palvelu, joka pystyy suorittamaan CV-tehtäviä, kuten objektien havaitsemisen, videosegmenttien havaitsemisen, sisällön moderoinnin ja paljon muuta, jotta saadaan tietoa tiedoista ilman aikaisempaa ML-kokemusta. Joissakin tapauksissa voidaan tarvita räätälöityä ratkaisua palvelun ohella tietyn ongelman ratkaisemiseksi.

Tässä postauksessa käsittelemme alueita, joissa CV:tä voidaan soveltaa tapauksiin, joissa esineiden asento, niiden sijainti ja suunta ovat tärkeitä. Yksi tällainen käyttötapa olisi asiakkaille suunnatut mobiilisovellukset, joissa vaaditaan kuvan lataus. Se voi johtua vaatimustenmukaisuudesta tai johdonmukaisen käyttökokemuksen tarjoamisesta ja sitoutumisen parantamisesta. Esimerkiksi verkkokaupan alustoilla tuotteiden esityskulmalla on vaikutusta tämän tuotteen ostoasteeseen. Yksi tällainen tapaus on auton sijainnin havaitseminen. Näytämme, kuinka voit yhdistää tunnettuja ML-ratkaisuja jälkikäsittelyyn ratkaistaksesi tämän ongelman AWS-pilvessä.

Käytämme syväoppimismalleja tämän ongelman ratkaisemiseksi. ML-algoritmien harjoitteleminen asennon estimointia varten vaatii paljon asiantuntemusta ja mukautettuja harjoitustietoja. Molemmat vaatimukset ovat vaikeita ja kalliita saavuttaa. Siksi esittelemme kaksi vaihtoehtoa: toisen, joka ei vaadi ML-asiantuntemusta ja käyttää Amazon Rekognitionia, ja toisen, joka käyttää Amazon Sage Maker kouluttaa ja ottaa käyttöön mukautetun ML-mallin. Ensimmäisessä vaihtoehdossa käytämme Amazon Rekognition -sovellusta auton renkaiden tunnistamiseen. Päättelemme sitten auton suunnan pyörien asennoista käyttämällä sääntöpohjaista järjestelmää. Toisessa vaihtoehdossa tunnistamme pyörät ja muut auton osat käyttämällä Detectron malli. Näitä käytetään jälleen päättämään auton sijainti sääntöpohjaisella koodilla. Toinen vaihtoehto vaatii ML-kokemusta, mutta on myös muokattavampi. Sitä voidaan käyttää kuvan jatkokäsittelyyn, esimerkiksi koko auton rajaamiseen. Molempia vaihtoehtoja voidaan harjoitella julkisesti saatavilla olevilla tietojoukoilla. Lopuksi näytämme, kuinka voit integroida tämän auton asennontunnistusratkaisun olemassa olevaan verkkosovellukseesi käyttämällä palveluita, kuten Amazon API -yhdyskäytävä ja AWS vahvistaa.

Ratkaisun yleiskatsaus

Seuraava kaavio kuvaa ratkaisuarkkitehtuuria.

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Ratkaisu koostuu Amplifyssa toimivasta verkkosovelluksesta, johon käyttäjä voi ladata kuvan ja hakea joko Amazon Rekognition -mallia tai mukautettua Detectron-mallia auton sijainnin tunnistamiseksi. Jokaiselle vaihtoehdolle isännöimme AWS Lambda toiminto API-yhdyskäytävän takana, joka on alttiina valesovelluksellemme. Määritimme Lambda-toimintomme toimimaan joko SageMakerissa tai Amazon Rekognitionissa koulutetun Detectron-mallin kanssa.

Edellytykset

Tätä kävelyä varten sinulla tulisi olla seuraavat edellytykset:

Luo palvelimeton sovellus Amazon Rekognitionin avulla

Ensimmäinen vaihtoehtomme osoittaa, kuinka voit havaita auton suunnan kuvista Amazon Rekognitionin avulla. Ajatuksena on käyttää Amazon Rekognitionia auton ja sen pyörien sijainnin tunnistamiseen ja suorittaa sitten jälkikäsittelyä auton suunnan johtamiseksi näistä tiedoista. Koko ratkaisu otetaan käyttöön Lambdalla, kuten kuvassa on esitetty Github-arkisto. Tämä kansio sisältää kaksi päätiedostoa: Docker-tiedoston, joka määrittää Docker-kuvan, joka toimii Lambda-toiminnossamme, ja app.py tiedosto, joka on Lambda-toiminnon päätulopiste:

def lambda_handler(event, context): body_bytes = json.loads(event["body"])["image"].split(",")[-1] body_bytes = base64.b64decode(body_bytes) rek = boto3.client('rekognition') response = rek.detect_labels(Image={'Bytes': body_bytes}, MinConfidence=80) angle, img = label_image(img_string=body_bytes, response=response) buffered = BytesIO() img.save(buffered, format="JPEG") img_str = "data:image/jpeg;base64," + base64.b64encode(buffered.getvalue()).decode('utf-8')

Lambda-funktio odottaa tapahtumaa, joka sisältää otsikon ja rungon, jossa rungon tulisi olla kuva, joka on merkittävä base64-dekoodatuksi objektiksi. Kuvan perusteella Amazon Rekognition detect_labels -toimintoa kutsutaan lambda-funktiosta käyttämällä Boto3. Funktio palauttaa yhden tai useamman tunnisteen jokaiselle kuvan objektille ja rajoitusruudun tiedot kaikille havaittuille objektitunnisteille osana vastausta sekä muita tietoja, kuten määritetyn nimiön luotettavuus, havaitun tarran esi-isat, mahdolliset tunnisteen aliakset ja luokat, joihin tunnistettu tarra kuuluu. Suoritamme toiminnon Amazon Rekognitionin palauttamien tarrojen perusteella label_image, joka laskee auton kulman havaituista pyöristä seuraavasti:

n_wheels = len(wheel_instances) wheel_centers = [np.array(_extract_bb_coords(wheel, img)).mean(axis=0)
for wheel in wheel_instances] wheel_center_comb = list(combinations(wheel_centers, 2))
vecs = [(k, pair[0] - pair[1]) for k,pair in enumerate(wheel_center_comb)]
vecs = sorted(vecs, key = lambda vec: np.linalg.norm(vec[1])) vec_rel = vecs[1] if n_wheels == 3 else vecs[0]
angle = math.degrees(math.atan(vec_rel[1][1]/vec_rel[1][0])) wheel_centers_rel = [tuple(wheel.tolist()) for wheel in
wheel_center_comb[vec_rel[0]]]

Huomaa, että sovellus edellyttää, että kuvassa on vain yksi auto, ja palauttaa virheilmoituksen, jos näin ei ole. Jälkikäsittely voidaan kuitenkin mukauttaa tarjoamaan tarkempia suuntakuvauksia, kattamaan useita autoja tai laskemaan monimutkaisempien kohteiden suunnan.

Paranna pyörän tunnistusta

Pyöräntunnistuksen tarkkuuden parantamiseksi edelleen voit käyttää Amazon Rekognition mukautetut etiketit. Samoin kuin hienosäätö SageMakerilla mukautetun ML-mallin kouluttamiseen ja käyttöönottoon, voit tuoda omat merkittyjä tietojasi, jotta Amazon Rekognition voi tuottaa sinulle mukautetun kuva-analyysimallin muutamassa tunnissa. Rekognition Custom Labels -tunnisteiden avulla tarvitset vain pienen joukon harjoituskuvia, jotka ovat omia käyttötapauksiasi, tässä tapauksessa autokuvia tietyissä kulmissa, koska se hyödyntää Amazon Rekognitionin olemassa olevia ominaisuuksia, joiden avulla voit harjoitella kymmenien miljoonien kuvien avulla. monia luokkia. Rekognition Custom Labels voidaan integroida vain muutamalla napsautuksella ja pienillä muokkauksilla Lambda-toimintoon, jota käytämme Amazon Rekognition -standardiratkaisussa.

Kouluta malli käyttämällä SageMaker-koulutustyötä

Toisessa vaihtoehdossamme koulutamme mukautetun syväoppimismallin SageMakerissa. Käytämme Detectron2-kehys autonosien segmentointiin. Näitä segmenttejä käytetään sitten päättämään auton sijainti.

Detectron2-kehys on kirjasto, joka tarjoaa huippuluokan tunnistus- ja segmentointialgoritmit. Detectron tarjoaa erilaisia ​​Mask R-CNN -malleja, jotka on koulutettu kuuluisalle COCO (Common Objects in Context) -tietojoukolle. Rakennamme auton esineiden tunnistusmallimme siirtooppimisen avulla hienosäätääksemme esikoulutetun Mask R-CNN -mallin autonosien segmentointi tietojoukko. Tämän tietojoukon avulla voimme kouluttaa mallin, joka pystyy havaitsemaan pyörät, mutta myös muut autonosat. Tätä lisätietoa voidaan edelleen käyttää korin kulman laskennassa suhteessa kuvaan.

Tietojoukko sisältää huomautettuja tietoja auton osista, joita käytetään esineiden havaitsemiseen ja semanttiseen segmentointitehtäviin: noin 500 kuvaa sedaneista, avoautoista ja urheiluautoista (SUV), otettuna useissa näkymissä (edestä, takaa ja sivulta). Jokaiseen kuvaan on merkitty 18 maskia ja rajoitusruutua, jotka edustavat auton eri osia, kuten renkaita, peilejä, valoja sekä etu- ja takalasia. Muokkasimme pyörien perusmerkintöjä siten, että jokaista pyörää pidetään yksittäisenä kohteena sen sijaan, että pidettäisiin kaikkia kuvassa olevia pyöriä yhtenä kohteena.

Käytämme Amazonin yksinkertainen tallennuspalvelu (Amazon S3) tallentaaksesi Detectron-mallin koulutukseen käytetyn tietojoukon yhdessä koulutettujen malliartefaktien kanssa. Lisäksi Docker-säiliö, joka toimii Lambda-toiminnossa, on tallennettu Amazonin elastisten säiliörekisteri (Amazon ECR). Lambda-toiminnon Docker-säilöä tarvitaan koodin suorittamiseen tarvittavien kirjastojen ja riippuvuuksien sisällyttämiseen. Vaihtoehtoisesti voisimme käyttää Lambda kerrokset, mutta se on rajoitettu 250 Mt:n purettuun käyttöönoton pakattuun kokokiintiöön, ja Lambda-toimintoon voidaan lisätä enintään viisi tasoa.

Ratkaisumme perustuu SageMakeriin: laajennamme esirakennettua SageMaker Docker -säiliöt PyTorchin suorittamiseksi mukautettua PyTorchiamme koulutuskoodi. Seuraavaksi käytämme SageMaker Python SDK:ta käärimään harjoituskuvan SageMaker PyTorch -estimaattoriksi seuraavien koodinpätkien mukaisesti:

d2_estimator = Estimator( image_uri=training_image_uri, role=role, sagemaker_session=sm_session, instance_count=1, instance_type=training_instance, output_path=f"s3://{session_bucket}/{prefix_model}", base_job_name=f"detectron2") d2_estimator.fit({ "training": training_channel, "validation": validation_channel, }, wait=True)

Lopuksi aloitamme koulutustyön soittamalla fit() toiminto luodussa PyTorch-estimaattorissa. Kun koulutus on päättynyt, koulutettu malliartefaktti tallennetaan Amazon S3:n istuntoämpäriin käytettäväksi päättelyputkessa.

Ota malli käyttöön SageMakerin ja päättelyputkien avulla

Käytämme myös SageMakeria isännöimään päätelmäpäätepistettä, joka käyttää mukautettua Detectron-malliamme. Täysi infrastruktuuri, jota käytetään ratkaisumme käyttöönotossa, on varustettu AWS CDK:lla. Voimme isännöidä mukautettua malliamme a SageMaker reaaliaikainen päätepiste soittamalla deploy PyTorch-estimaattorissa. Tämä on toinen kerta, kun laajennamme valmiiksi rakennettua SageMaker PyTorch -säilöä sisältämään PyTorch Detectronin. Käytämme sitä päättelykomentosarjan suorittamiseen ja koulutetun PyTorch-mallimme isännöimiseen seuraavasti:

model = PyTorchModel( name="d2-sku110k-model", model_data=d2_estimator.model_data, role=role, sagemaker_session=sm_session, entry_point="predict.py", source_dir="src", image_uri=serve_image_uri, framework_version="1.6.0") predictor = model.deploy( initial_instance_count=1, instance_type="ml.g4dn.xlarge", endpoint_name="detectron-endpoint", serializer=sagemaker.serializers.JSONSerializer(), deserializer=sagemaker.deserializers.JSONDeserializer(), wait=True)

Huomaa, että käytimme käyttöönotossa ml.g4dn.xlarge GPU:ta, koska se on pienin saatavilla oleva GPU ja riittää tähän esittelyyn. Kaksi komponenttia on määritettävä meidän päättelyskripti: mallin lastaus ja mallin tarjoilu. Toiminto model_fn() käytetään lataamaan koulutettu malli, joka on osa isännöityä Docker-säilöä ja löytyy myös Amazon S3:sta ja palauttaa malliobjektin, jota voidaan käyttää mallin palvelemiseen seuraavasti:

def model_fn(model_dir: str) -> DefaultPredictor: for p_file in Path(model_dir).iterdir(): if p_file.suffix == ".pth": path_model = p_file cfg = get_cfg() cfg.MODEL.WEIGHTS = str(path_model) return DefaultPredictor(cfg)

Toiminto predict_fn() suorittaa ennusteen ja palauttaa tuloksen. Sen lisäksi, että käytämme koulutettua malliamme, käytämme maskin R-CNN-mallin esikoulutettua versiota, joka on koulutettu COCO-tietojoukolla, poimimaan kuvan pääauton. Tämä on ylimääräinen jälkikäsittelyvaihe sellaisten kuvien käsittelyssä, joissa on useampi kuin yksi auto. Katso seuraava koodi:

def predict_fn(input_img: np.ndarray, predictor: DefaultPredictor) -> Mapping: pretrained_predictor = _get_pretraind_model() car_mask = get_main_car_mask(pretrained_predictor, input_img) outputs = predictor(input_img) fmt_out = { "image_height": input_object.shape[0], "image_width": input_object.shape[1], "pred_boxes": outputs["instances"].pred_boxes.tensor.tolist(), "scores": outputs["instances"].scores.tolist(), "pred_classes": outputs["instances"].pred_classes.tolist(), "car_mask": car_mask.tolist() } return fmt_out

Samoin kuin Amazon Rekognition -ratkaisussa, rajoituslaatikot ennustivat wheel luokka suodatetaan tunnistuslähdöistä ja syötetään jälkikäsittelymoduuliin korin sijainnin arvioimiseksi lähtöön nähden.

Lopuksi paransimme myös Detectron-ratkaisun jälkikäsittelyä. Se käyttää myös eri autonosien segmenttejä ratkaisun päättelemiseen. Esimerkiksi aina kun etupuskuri havaitaan, mutta takapuskuria ei ole, oletetaan, että meillä on etunäkymä autosta ja vastaava kulma lasketaan.

Yhdistä ratkaisusi verkkosovellukseen

Vaiheet mallin päätepisteiden yhdistämiseksi Amplifyyn ovat seuraavat:

  • Kloonaa AWS CDK -pinon luoma sovellusvarasto nimeltä car-angle-detection-website-repo. Varmista, että etsit sitä alueelta, jota käytit käyttöönottoon.
  • Kopioi kunkin käyttöönotetun Lambda-toiminnon API-yhdyskäytävän päätepisteet tiedostoon index.html tiedosto edelliseen arkistoon (on paikkamerkkejä, joihin päätepiste on sijoitettava). Seuraava koodi on esimerkki siitä, miltä tämä .html-tiedoston osa näyttää:
<td align="center" colspan="2">
<select id="endpoint">
<option value="https://ey82aaj8ch.execute-api.eu-central-1.amazonaws.com/prod/"> Amazon Rekognition</option>
<option value="https://nhq6q88xjg.execute-api.eu-central-1.amazonaws.com/prod/"> Amazon SageMaker Detectron</option>
</select>
<input class="btn" type="file" id="ImageBrowse" />
<input class="btn btn-primary" type="submit" value="Upload">
</td>

  • Tallenna HTML-tiedosto ja työnnä koodimuutos etäpäähaaraan.

Tämä päivittää käyttöönoton HTML-tiedoston. Sovellus on nyt valmis käytettäväksi.

  • Siirry Amplify-konsoliin ja etsi luomasi projekti.

Sovelluksen URL-osoite tulee näkyviin, kun käyttöönotto on valmis.

  • Siirry URL-osoitteeseen ja pidä hauskaa käyttöliittymän kanssa.

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Yhteenveto

Onnittelut! Olemme ottaneet käyttöön täydellisen palvelimettoman arkkitehtuurin, jossa käytimme Amazon Rekognitionia, mutta annoimme myös vaihtoehdon omalle mukautetulle mallillesi, tämä esimerkki on saatavilla osoitteessa GitHub. Jos tiimilläsi ei ole ML-asiantuntemusta tai tarpeeksi mukautettuja tietoja mallin kouluttamiseen, voit valita vaihtoehdon, joka käyttää Amazon Rekognitionia. Jos haluat enemmän hallita malliasi, haluat muokata sitä edelleen ja sinulla on tarpeeksi tietoa, voit valita SageMaker-ratkaisun. Jos sinulla on joukko datatieteilijöitä, he saattavat myös haluta parantaa malleja edelleen ja valita mukautetun ja joustavamman vaihtoehdon. Voit laittaa Lambda-toiminnon ja API-yhdyskäytävän verkkosovelluksesi taakse käyttämällä jompaakumpaa kahdesta vaihtoehdosta. Voit myös käyttää tätä lähestymistapaa eri käyttötapauksissa, joita varten saatat haluta mukauttaa koodia.

Tämän palvelimettoman arkkitehtuurin etuna on, että rakennuspalikat ovat täysin vaihdettavissa. Mahdollisuudet ovat lähes rajattomat. Aloita siis tänään!

Kuten aina, AWS suhtautuu myönteisesti palautteeseen. Lähetä kommentteja tai kysymyksiä.


Tietoja Tekijät

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Michael Wallner on vanhempi konsultti Data & AI -palvelussa AWS Professional Services -palvelussa ja on intohimoinen siihen, että asiakkaat voivat matkallaan tulla datapohjaisiksi ja AWSomeiksi AWS-pilvessä. Lisäksi hän haluaa ajatella isosti asiakkaiden kanssa innovoidakseen ja keksiäkseen heille uusia ideoita.

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Aamna Najmi on tietotutkija, jolla on AWS Professional Services. Hän on intohimoinen auttamaan asiakkaita innovoimaan Big Data- ja tekoälytekniikoilla, jotta he voivat hyödyntää datasta liiketoiminta-arvoa ja oivalluksia. Hänellä on kokemusta työskentelystä tietoalusta- ja AI/ML-projekteissa terveydenhuollon ja biotieteiden alalla. Vapaa-ajallaan hän nauttii puutarhanhoidosta ja matkustamisesta uusiin paikkoihin.

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.David Sauerwein on vanhempi datatutkija AWS Professional Services -palvelussa, jossa hän mahdollistaa asiakkaiden AI/ML-matkansa AWS-pilvessä. David keskittyy digitaalisiin kaksosiin, ennustamiseen ja kvanttilaskentaan. Hän on valmistunut teoreettisen fysiikan tohtoriksi Innsbruckin yliopistosta, Itävallasta. Hän oli myös tohtorintutkijana ja tohtorintutkijana Max-Planck-Institute for Quantum Opticsissa Saksassa. Vapaa-ajallaan hän rakastaa lukea, hiihtää ja viettää aikaa perheen kanssa.

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Srikrishna Chaitanya Konduru on vanhempi tietotutkija, jolla on AWS Professional -palvelut. Hän tukee asiakkaita AWS:n ML-sovellusten prototyyppien luomisessa ja operatiivisessa käytössä. Srikrishna keskittyy tietokonenäköön ja NLP:hen. Hän johtaa myös ML-alustan suunnittelu- ja käyttötapausten tunnistamishankkeita asiakkaille eri toimialoilla. Srikrishna on valmistunut biolääketieteen tekniikasta RWTH Aachenin yliopistosta Saksasta, ja hän keskittyy lääketieteelliseen kuvantamiseen.

Rakenna ja kouluta tietokonenäkömalleja autojen sijainnin havaitsemiseksi kuvista Amazon SageMakerin ja Amazon Rekognitionin avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Ahmed Mansour on tietotutkija AWS Professional Services -palvelussa. Hän tarjoaa teknistä tukea asiakkaille heidän AI/ML-matkallaan AWS-pilvessä. Ahmed keskittyy NLP:n sovelluksiin proteiinidomeeniin yhdessä RL:n kanssa. Hän on valmistunut tekniikan tohtoriksi Münchenin teknisestä yliopistosta Saksasta. Vapaa-ajallaan hän käy mielellään kuntosalilla ja leikkii lastensa kanssa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen