Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazoni veebiteenused

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazoni veebiteenused

Arvutinägemine (CV) on masinõppe (ML) ja süvaõppe üks levinumaid rakendusi. Kasutusjuhtumid ulatuvad isesõitvatest autodest, sisu modereerimisest sotsiaalmeedia platvormidel, vähi tuvastamisest ja automaatsest defektide tuvastamisest. Amazon Rekognitsioon on täielikult hallatav teenus, mis suudab täita CV-ülesandeid, nagu objektide tuvastamine, videosegmendi tuvastamine, sisu modereerimine ja palju muud, et hankida andmetest ülevaadet ilma eelneva ML-i kogemuseta. Mõnel juhul võib väga spetsiifilise probleemi lahendamiseks koos teenusega vaja minna kohandatud lahendust.

Selles postituses käsitleme valdkondi, kus CV-d saab rakendada juhtudel, kus objektide poos, nende asukoht ja orientatsioon on olulised. Üks selline kasutusjuhtum oleks kliendile suunatud mobiilirakendused, mille puhul on vaja piltide üleslaadimist. See võib olla tingitud vastavusest või järjepideva kasutuskogemuse pakkumisest ja kaasamise parandamisest. Näiteks veebipoodide platvormidel mõjutab selle toote ostmise kiirust nurk, mille all tooteid piltidel näidatakse. Üks selline juhtum on auto asukoha tuvastamine. Näitame, kuidas saate kombineerida tuntud ML-lahendusi järeltöötlusega, et lahendada see probleem AWS-i pilves.

Selle probleemi lahendamiseks kasutame süvaõppe mudeleid. ML-algoritmide treenimine poosi hindamiseks nõuab palju teadmisi ja kohandatud treeningandmeid. Mõlemat nõuet on raske ja kulukas täita. Seetõttu pakume välja kaks võimalust: üks, mis ei nõua ML-teadmisi ja kasutab Amazon Rekognitioni, ja teine, mis kasutab Amazon SageMaker kohandatud ML-mudeli koolitamiseks ja juurutamiseks. Esimese variandi puhul kasutame auto rataste tuvastamiseks Amazon Rekognitioni. Seejärel järeldame rataste asendite põhjal reeglipõhise süsteemi abil auto orientatsiooni. Teises variandis tuvastame rattad ja muud autoosad kasutades Detectron mudel. Neid kasutatakse jällegi auto asukoha järeldamiseks reeglipõhise koodiga. Teine võimalus nõuab ML-i kogemust, kuid on ka paremini kohandatav. Seda saab kasutada pildi edasiseks järeltöötluseks, näiteks kogu auto välja kärpimiseks. Mõlemat valikut saab koolitada avalikult kättesaadavate andmekogumite põhjal. Lõpuks näitame, kuidas saate integreerida selle auto poosi tuvastamise lahenduse oma olemasolevasse veebirakendusse, kasutades selliseid teenuseid nagu Amazon API värav ja AWS võimendus.

Lahenduse ülevaade

Järgnev diagramm illustreerib lahenduse arhitektuuri.

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Lahendus koosneb Amplify veebirakendusest, kuhu kasutaja saab pildi üles laadida ja auto asukoha tuvastamiseks käivitada Amazon Rekognitioni mudeli või kohandatud Detectroni mudeli. Iga valiku puhul hostime an AWS Lambda funktsioon API lüüsi taga, mis on avatud meie näidisrakendusele. Konfigureerisime oma Lambda funktsiooni töötama kas SageMakeris või Amazon Rekognitionis koolitatud Detectroni mudeliga.

Eeldused

Selle ülevaate jaoks peaksid teil olema järgmised eeltingimused.

Looge Amazon Rekognitioni abil serverita rakendus

Meie esimene valik näitab, kuidas saate Amazon Rekognitioni abil piltidelt autode orientatsiooni tuvastada. Idee on kasutada Amazon Rekognitionit auto ja selle rataste asukoha tuvastamiseks ning seejärel järeltöötluseks, et tuletada selle teabe põhjal auto orientatsioon. Kogu lahendus juurutatakse Lambda abil, nagu näidatud joonisel Githubi hoidla. See kaust sisaldab kahte peamist faili: Docker-faili, mis määratleb Dockeri pildi, mis töötab meie Lambda funktsioonis, ja app.py fail, mis on Lambda funktsiooni peamine sisenemispunkt:

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 funktsioon ootab sündmust, mis sisaldab päist ja keha, kus keha peaks olema pilt, mis tuleb märgistada kui base64 dekodeeritud objekt. Arvestades pilti, Amazon Rekognition detect_labels funktsioon käivitatakse lambda funktsioonist kasutades Boto3. Funktsioon tagastab vastuse osana ühe või mitu sildi iga pildi objekti kohta ja piirdekasti üksikasjad kõigi tuvastatud objekti siltide jaoks koos muu teabega, nagu määratud sildi usaldusväärsus, tuvastatud sildi esivanemate sildid, sildi varjunimed ja kategooriad, kuhu tuvastatud silt kuulub. Amazon Rekognitioni tagastatud siltide põhjal käivitame funktsiooni label_image, mis arvutab tuvastatud rataste järgi auto nurga järgmiselt:

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

Pange tähele, et rakendus nõuab, et pildil oleks ainult üks auto, ja tagastab veateate, kui see nii ei ole. Küll aga saab järeltöötlust kohandada nii, et saaks anda detailsemaid orientatsioonikirjeldusi, katta mitut autot või arvutada keerukamate objektide orientatsiooni.

Parandage ratta tuvastamist

Ratta tuvastamise täpsuse edasiseks parandamiseks võite kasutada Amazon Rekognitioni kohandatud sildid. Sarnaselt peenhäälestusega SageMakeri abil kohandatud ML-mudeli koolitamiseks ja juurutamiseks saate tuua oma sildistatud andmed, et Amazon Rekognition saaks teile mõne tunniga luua kohandatud pildianalüüsi mudeli. Rekognitioni kohandatud siltide abil vajate ainult väikest komplekti treeningpilte, mis on teie kasutusjuhtumile spetsiifilised, antud juhul konkreetse nurga all olevaid autopilte, kuna see kasutab Amazon Rekognitioni olemasolevaid võimalusi, et saada koolitust kümnete miljonite piltide jaoks. palju kategooriaid. Rekognitioni kohandatud silte saab integreerida vaid mõne klõpsuga ja Lambda funktsiooni väikeste kohandustega, mida kasutame standardse Amazon Rekognitioni lahenduse jaoks.

Treenige mudelit SageMakeri koolitustöö abil

Teise võimalusena koolitame SageMakeris kohandatud süvaõppe mudelit. Me kasutame Detectron2 raamistik autoosade segmenteerimiseks. Neid segmente kasutatakse seejärel auto asukoha järeldamiseks.

Detectron2 raamistik on teek, mis pakub nüüdisaegseid tuvastamis- ja segmenteerimisalgoritme. Detectron pakub mitmesuguseid Mask R-CNN mudeleid, mis on koolitatud kuulsa COCO (Common Objects in Context) andmestiku põhjal. Autoobjektide tuvastamise mudeli koostamiseks kasutame ülekandeõpet, et peenhäälestada eelnevalt koolitatud Mask R-CNN mudelit. autoosade segmenteerimine andmestik. See andmestik võimaldab meil koolitada mudelit, mis suudab tuvastada rattaid, aga ka muid autoosi. Seda lisateavet saab täiendavalt kasutada auto nurga arvutamisel pildi suhtes.

Andmekogum sisaldab annoteeritud andmeid autoosade kohta, mida kasutatakse objektide tuvastamise ja semantilise segmenteerimise ülesannetes: ligikaudu 500 pilti sedaanidest, pikapitest ja sportlikest tarbesõidukitest (maasturid), mis on tehtud mitmes vaates (ees-, tagant- ja külgvaates). Igale kujutisele on lisatud 18 eksemplari maski ja piirdekasti, mis esindavad auto erinevaid osi, nagu rattad, peeglid, tuled ning esi- ja tagaklaas. Muutsime rataste põhimärkusi nii, et iga ratast käsitletakse eraldi objektina, selle asemel, et pidada kõiki pildil olevaid rattaid üheks objektiks.

Me kasutame Amazoni lihtne salvestusteenus (Amazon S3), et salvestada Detectroni mudeli treenimiseks kasutatud andmekogumit koos koolitatud mudeli artefaktidega. Veelgi enam, Lambda funktsioonis töötav Dockeri konteiner on salvestatud Amazoni elastsete konteinerite register (Amazon ECR). Lambda funktsiooni Dockeri konteiner on vajalik koodi käitamiseks vajalike teekide ja sõltuvuste kaasamiseks. Alternatiivina võiksime kasutada Lambda kihid, kuid see on piiratud 250 MB lahtipakkitud juurutuspakendi mahukvoodiga ja Lambda funktsioonile saab lisada maksimaalselt viis kihti.

Meie lahendus põhineb SageMakeril: laiendame eelehitatud SageMaker Dockeri konteinerid et PyTorch saaks käitada meie kohandatud PyTorchi koolituse kood. Järgmisena kasutame SageMaker Python SDK-d, et mässida treeningpildi SageMaker PyTorchi hindajasse, nagu on näidatud järgmistes koodilõikudes:

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)

Lõpuks alustame koolitustööd helistades fit() funktsioon loodud PyTorchi hinnangul. Kui koolitus on lõppenud, salvestatakse treenitud mudeliartefakt Amazon S3 seansisaldrisse, et seda kasutada järelduste konveieri jaoks.

Juurutage mudel SageMakeri ja järelduskonveieri abil

Samuti kasutame SageMakerit järelduse lõpp-punkti hostimiseks, mis käitab meie kohandatud Detectroni mudelit. Meie lahenduse juurutamiseks kasutatav täielik infrastruktuur on ette nähtud AWS CDK abil. Saame oma kohandatud mudelit majutada a SageMakeri reaalajas lõpp-punkt helistades deploy PyTorchi hinnangul. See on teine ​​kord, kui laiendame eelehitatud SageMaker PyTorchi konteinerit PyTorch Detectroniga. Kasutame seda järeldusskripti käitamiseks ja oma koolitatud PyTorchi mudeli hostimiseks järgmiselt:

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)

Pange tähele, et kasutasime juurutamiseks ml.g4dn.xlarge GPU-d, kuna see on väikseim saadaolev GPU ja sellest demo jaoks piisab. Meie rakenduses tuleb konfigureerida kaks komponenti järeldusskript: mudeli laadimine ja mudeli serveerimine. Funktsioon model_fn() kasutatakse koolitatud mudeli laadimiseks, mis on osa hostitud Dockeri konteinerist ja mida võib leida ka Amazon S3-st, ning tagastab mudeliobjekti, mida saab kasutada mudeli teenindamiseks järgmiselt:

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)

funktsioon predict_fn() sooritab ennustuse ja tagastab tulemuse. Lisaks koolitatud mudeli kasutamisele kasutame pildil oleva peamise auto eraldamiseks COCO-andmestikul koolitatud mudeli Mask R-CNN eelkoolitatud versiooni. See on täiendav järeltöötlusetapp piltide töötlemiseks, kus on rohkem kui üks auto. Vaadake järgmist 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

Sarnaselt Amazon Rekognitioni lahendusele ennustasid piirdekastid wheel klass filtreeritakse tuvastusväljunditest ja suunatakse järeltöötlusmoodulisse, et hinnata auto asukohta väljundi suhtes.

Lõpuks täiustasime ka Detectron lahenduse järeltöötlust. Samuti kasutab see lahenduse leidmiseks erinevate autoosade segmente. Näiteks alati, kui tuvastatakse eesmine põrkeraud, kuid mitte tagumine kaitseraud, eeldatakse, et meil on auto eestvaade ja vastav nurk arvutatakse.

Ühendage oma lahendus veebirakendusega

Sammud mudeli lõpp-punktide ühendamiseks Amplifyga on järgmised.

  • Kloonige rakenduste hoidla, mille AWS CDK virn lõi ja mille nimi on car-angle-detection-website-repo. Veenduge, et otsite seda piirkonnast, mida kasutasite juurutamiseks.
  • Kopeerige iga juurutatud Lambda funktsiooni API lüüsi lõpp-punktid faili index.html faili eelmises hoidlas (seal on kohahoidjad, kuhu lõpp-punkt tuleb paigutada). Järgmine kood on näide sellest, kuidas see html-faili jaotis välja näeb:
<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>

  • Salvestage HTML-fail ja lükake koodimuudatus kaugpõhiharusse.

See värskendab juurutamisel HTML-faili. Rakendus on nüüd kasutamiseks valmis.

  • Liikuge Amplify konsooli ja leidke loodud projekt.

Rakenduse URL on nähtav pärast juurutamise lõpetamist.

  • Liikuge URL-ile ja nautige kasutajaliidese abil.

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Järeldus

Palju õnne! Oleme juurutanud täieliku serverita arhitektuuri, milles kasutasime Amazon Rekognitioni, kuid andsime ka võimaluse teie enda kohandatud mudeli jaoks, see näide on saadaval aadressil GitHub. Kui teie meeskonnas pole ML-teadmisi ega mudeli koolitamiseks piisavalt kohandatud andmeid, võite valida suvandi, mis kasutab Amazon Rekognitioni. Kui soovite oma mudelit rohkem kontrollida, soovite seda veelgi kohandada ja teil on piisavalt andmeid, saate valida SageMakeri lahenduse. Kui teil on andmeteadlaste meeskond, võivad nad soovida mudeleid veelgi täiustada ja valida kohandatud ja paindlikuma valiku. Lambda funktsiooni ja API lüüsi saate oma veebirakenduse taha panna, kasutades ühte kahest võimalusest. Seda lähenemisviisi saate kasutada ka mõnel muul kasutusjuhul, mille jaoks võiksite koodi kohandada.

Selle serverita arhitektuuri eeliseks on see, et ehitusplokid on täielikult vahetatavad. Võimalused on peaaegu piiramatud. Niisiis, alustage juba täna!

Nagu alati, ootab AWS tagasisidet. Palun esitage kõik kommentaarid või küsimused.


Autoritest

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Michael Wallner on AWS-i professionaalsete teenuste vanemkonsultant andme- ja tehisintellektiga ning soovib kirglikult võimaldada klientidel oma teekonnal saada andmepõhiseks ja AWS-i pilves AWSome'iks. Lisaks meeldib talle klientidega suurelt mõelda, et neile uuendusi teha ja uusi ideid välja mõelda.

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Aamna Najmi on AWS-i professionaalsete teenustega andmeteadlane. Ta soovib kirglikult aidata klientidel teha uuendusi suurandmete ja tehisintellekti tehnoloogiate abil, et saada andmetest äriväärtust ja teadmisi. Tal on töökogemus andmeplatvormi ja AI/ML projektidega tervishoiu ja bioteaduste vertikaalis. Vabal ajal naudib ta aiatööd ja uutesse kohtadesse reisimist.

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.David Sauerwein on AWS Professional Servicesi vanemandmeteadlane, kus ta võimaldab klientidel AWS-i pilves nende tehisintellekti/ML-i teekonda teha. David keskendub digitaalsetele kaksikutele, prognoosimisele ja kvantarvutamisele. Tal on doktorikraad teoreetilises füüsikas Austrias Innsbrucki ülikoolis. Ta oli ka doktorant ja järeldoktor Saksamaal Max-Planck-Institute for Quantum Optics. Vabal ajal armastab ta lugeda, suusatada ja perega aega veeta.

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Srikrishna Chaitanya Konduru on AWS Professionali teenustega vanemandmeteadlane. Ta toetab kliente nende ML-rakenduste prototüüpide loomisel ja AWS-is kasutuselevõtul. Srikrishna keskendub arvutinägemisele ja NLP-le. Ta juhib ka ML-platvormi disaini ja kasutusjuhtude tuvastamise algatusi klientidele erinevates tööstusharudes. Srikrishnal on magistrikraadi biomeditsiinitehnikas Saksamaal RWTH Aacheni ülikoolis, keskendudes meditsiinilisele pildistamisele.

Ehitage ja treenige arvutinägemismudeleid, et tuvastada piltidel autode asukohti, kasutades Amazon SageMakerit ja Amazon Rekognitionit | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Ahmed Mansour on AWS Professional Servicesi andmeteadlane. Ta pakub klientidele tehnilist tuge nende tehisintellekti/ML-i teekonnal AWS-i pilves. Ahmed keskendub NLP rakendustele valgu domeenis koos RL-ga. Tal on Saksamaal Müncheni Tehnikaülikoolis inseneriteaduste doktorikraad. Vabal ajal meeldib talle jõusaalis käia ja lastega mängida.

Ajatempel:

Veel alates AWS-i masinõpe