Számítógépes látásmodellek készítése és betanítása az autók helyzetének észleléséhez a képeken az Amazon SageMaker és az Amazon Rekognition segítségével | Amazon webszolgáltatások

Számítógépes látásmodellek készítése és betanítása az autók helyzetének észleléséhez a képeken az Amazon SageMaker és az Amazon Rekognition segítségével | Amazon webszolgáltatások

A számítógépes látás (CV) a gépi tanulás (ML) és a mély tanulás egyik leggyakoribb alkalmazása. A felhasználási esetek az önvezető autóktól, a közösségi média platformokon történő tartalommoderálástól, a rákfelismeréstől és az automatikus hibaészlelésig terjednek. Amazon felismerés egy teljesen felügyelt szolgáltatás, amely képes önéletrajzi feladatok elvégzésére, mint például objektumészlelés, videószegmens-észlelés, tartalommoderálás és még sok más, hogy betekintést nyerjen az adatokból előzetes ML-tapasztalat nélkül. Egyes esetekben a szolgáltatás mellett egyedibb megoldásra is szükség lehet egy nagyon specifikus probléma megoldásához.

Ebben a bejegyzésben olyan területekkel foglalkozunk, ahol az önéletrajz alkalmazható olyan esetekben, amikor az objektumok helyzete, helyzete és tájolása fontos. Az egyik ilyen felhasználási eset az ügyfelek számára készült mobilalkalmazások, ahol képfeltöltés szükséges. Ennek oka lehet a megfelelőségi okok, vagy a következetes felhasználói élmény biztosítása és az elkötelezettség javítása. Például az online vásárlási platformokon az, hogy a termékek milyen szögben jelennek meg a képeken, hatással van a termék megvásárlásának arányára. Az egyik ilyen eset az autó helyzetének észlelése. Bemutatjuk, hogyan kombinálhatja a jól ismert ML-megoldásokat az utófeldolgozással, hogy megoldja ezt a problémát az AWS-felhőben.

A probléma megoldására mély tanulási modelleket használunk. A pózbecsléshez szükséges ML algoritmusok betanítása sok szakértelmet és egyedi képzési adatokat igényel. Mindkét követelmény teljesítése nehéz és költséges. Ezért két lehetőséget mutatunk be: az egyiket, amely nem igényel ML-szakértelmet, és az Amazon Rekognitiont használja, a másikat pedig Amazon SageMaker egyéni ML-modell betanításához és üzembe helyezéséhez. Az első lehetőségnél az Amazon Rekognition segítségével észleljük az autó kerekeit. Ezután a kerékállásokból következtetünk az autó tájolására egy szabályalapú rendszer segítségével. A második lehetőségben a kerekeket és egyéb autóalkatrészeket észleljük a Detectron modell. Ezek ismét arra szolgálnak, hogy szabályalapú kóddal következtessenek az autó pozíciójára. A második lehetőség ML tapasztalatot igényel, de testreszabhatóbb is. Használható a kép további utófeldolgozására, például az egész autó kivágására. Mindkét lehetőség nyilvánosan elérhető adatkészleteken tanítható. Végül bemutatjuk, hogyan integrálhatja ezt az autópóz-érzékelő megoldást meglévő webes alkalmazásába olyan szolgáltatások segítségével, mint pl Amazon API átjáró és a AWS erősítés.

Megoldás áttekintése

A következő ábra a megoldás architektúráját mutatja be.

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A megoldás egy ál webalkalmazásból áll az Amplifyban, ahol a felhasználó feltölthet egy képet, és meghívhatja az Amazon Rekognition vagy az egyéni Detectron modellt az autó helyzetének észlelésére. Minden lehetőséghez egy AWS Lambda funkció egy API-átjáró mögött, amely ki van téve az álalkalmazásunknak. A Lambda funkciót úgy konfiguráltuk, hogy a SageMaker vagy az Amazon Rekognition programban betanított Detectron modellel fusson.

Előfeltételek

Ehhez az áttekintéshez a következő előfeltételekkel kell rendelkeznie:

Hozzon létre egy szerver nélküli alkalmazást az Amazon Rekognition segítségével

Az első lehetőség bemutatja, hogyan észlelheti az autó tájolását a képeken az Amazon Rekognition segítségével. Az ötlet az, hogy az Amazon Rekognition segítségével észleljék az autó és kerekei helyzetét, majd utófeldolgozást végezzenek, hogy ebből az információból származtassa az autó tájolását. A teljes megoldást a Lambda használatával telepítik, ahogy az a Github tároló. Ez a mappa két fő fájlt tartalmaz: egy Docker-fájlt, amely meghatározza a Lambda függvényünkben futó Docker-képet, és a app.py fájl, amely a Lambda funkció fő belépési pontja lesz:

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

A Lambda függvény egy fejlécet és törzset tartalmazó eseményt vár, ahol a törzsnek a base64 dekódolt objektumként megjelölendő képnek kell lennie. A kép alapján az Amazon Rekognition detect_labels függvényt a Lambda függvényből hívják meg a segítségével Boto3. A függvény a válasz részeként egy vagy több címkét ad vissza a kép minden egyes objektumához és a határoló doboz részleteit az összes észlelt objektumcímkéhez a válasz részeként, valamint egyéb információkat, például a hozzárendelt címke megbízhatóságát, az észlelt címke őscímkéit, a címke álneveit, és azokat a kategóriákat, amelyekhez az észlelt címke tartozik. Az Amazon Rekognition által visszaadott címkék alapján futtatjuk a funkciót label_image, amely a következőképpen számítja ki az autó szögét az észlelt kerekekből:

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

Vegye figyelembe, hogy az alkalmazás megköveteli, hogy csak egy autó legyen jelen a képen, és ha ez nem így van, hibát ad vissza. Az utófeldolgozás azonban adaptálható részletesebb tájolási leírások biztosítására, több autó lefedésére vagy bonyolultabb objektumok tájolásának kiszámítására.

A kerékfelismerés javítása

A kerékfelismerés pontosságának további javításához használhatja Amazon Rekognition egyéni címkék. Hasonlóan a SageMakerrel végzett finomhangoláshoz az egyéni ML-modell betanításához és üzembe helyezéséhez, elhozhatja saját címkézett adatait, így az Amazon Rekognition néhány óra alatt egyéni képelemzési modellt tud készíteni Önnek. A Rekognition Custom Labels segítségével csak egy kis készletre van szükséged az Ön használati esetére jellemző edzésképekre, ebben az esetben bizonyos szögű autóképekre, mivel az Amazon Rekognition meglévő képességeit használja fel, hogy több tízmillió képre oktassa. sok kategória. A Rekognition egyedi címkék csak néhány kattintással integrálhatók, és a Lambda funkcióhoz kis mértékben hozzáigazíthatók, amelyeket a szabványos Amazon Rekognition megoldáshoz használunk.

Tanítson modellt egy SageMaker képzési feladat segítségével

Második lehetőségünkben egy egyéni mély tanulási modellt tanítunk a SageMakeren. Használjuk a Detectron2 keretrendszer autóalkatrészek szegmentálásához. Ezekből a szegmensekből következtethetünk az autó helyzetére.

A Detectron2 keretrendszer egy olyan könyvtár, amely a legmodernebb észlelési és szegmentációs algoritmusokat kínálja. A Detectron számos Mask R-CNN modellt kínál, amelyeket a híres COCO (Common Objects in Context) adatkészletre tanítottak. Autóobjektum-észlelési modellünk felépítéséhez átviteli tanulást használunk egy előre betanított Mask R-CNN modell finomhangolására a autóalkatrészek szegmentálása adatkészlet. Ez az adatkészlet lehetővé teszi olyan modell képzését, amely képes felismerni a kerekeket, de más autóalkatrészeket is. Ezt a kiegészítő információt tovább lehet használni az autó képhez viszonyított szögének kiszámításához.

Az adatkészlet a tárgyfelismerési és szemantikai szegmentálási feladatokhoz használandó autóalkatrészek annotált adatait tartalmazza: körülbelül 500 kép szedánokról, pickupokról és sporthaszonjárművekről (SUV), több nézetben (elölről, hátulról és oldalról) készült. Mindegyik képhez 18 példány maszk és határolódoboz tartozik, amelyek az autó különböző részeit, például kerekeket, tükröket, lámpákat, valamint az első és hátsó üveget ábrázolják. Módosítottuk a kerekek alapjegyzeteit úgy, hogy minden kereket külön objektumnak tekintsen ahelyett, hogy a képen látható összes kereket egyetlen objektumnak tekintenénk.

Az általunk használt Amazon egyszerű tárolási szolgáltatás (Amazon S3) a Detectron modell betanításához használt adatkészlet és a betanított modell műtermékek tárolására. Ezen túlmenően a Lambda funkcióban futó Docker konténer tárolásra kerül Amazon Elastic Container Registry (Amazon ECR). A Lambda függvény Docker-tárolója szükséges a kód futtatásához szükséges könyvtárak és függőségek tartalmazásához. Alternatív megoldásként használhatjuk Lambda rétegek, de ez egy 250 MB-os kicsomagolt telepítési csomagméretre korlátozódik, és legfeljebb öt réteg adható hozzá egy Lambda-függvényhez.

Megoldásunk a SageMakerre épül: bővítjük az előre beépítettet SageMaker Docker konténerek hogy a PyTorch futtassa az egyéni PyTorchunkat képzési kód. Ezután a SageMaker Python SDK-t használjuk, hogy a képzési képet egy SageMaker PyTorch becslőbe csomagoljuk, amint azt a következő kódrészletek mutatják:

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)

Végül a betanítási munkát megkezdjük a fit() függvényt a létrehozott PyTorch becslőn. Amikor a betanítás befejeződött, a betanított modellműterméket az Amazon S3 munkamenet-tárolójában tárolja a következtetési folyamathoz.

Telepítse a modellt a SageMaker és következtetési folyamatok segítségével

A SageMaker-t használjuk az egyéni Detectron modellünket futtató következtetési végpont hosztolására is. A megoldásunk üzembe helyezéséhez használt teljes infrastruktúra az AWS CDK használatával van kiépítve. Egyedi modellünket a SageMaker valós idejű végpont hívással deploy a PyTorch becslőben. Ez a második alkalom, hogy egy előre elkészített SageMaker PyTorch tárolót kiterjesztünk a PyTorch Detectronra. Használjuk a következtetési szkript futtatására és a betanított PyTorch modellünk tárolására a következők szerint:

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)

Vegye figyelembe, hogy ml.g4dn.xlarge GPU-t használtunk a telepítéshez, mivel ez a legkisebb elérhető GPU, és elegendő ehhez a bemutatóhoz. Két összetevőt kell konfigurálni a mi következtetési szkript: modell betöltés és modell kiszolgálás. A funkció model_fn() a betanított modell betöltésére szolgál, amely része a hosztolt Docker-tárolónak, és megtalálható az Amazon S3-ban is, és egy modellobjektumot ad vissza, amely a következőképpen használható modellszolgáltatáshoz:

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)

A funkció predict_fn() végrehajtja az előrejelzést és visszaadja az eredményt. A betanított modellünk használata mellett a Mask R-CNN modell előképzett változatát használjuk, amelyet a COCO-adatkészletre oktattunk, hogy kinyerjük a képen látható fő autót. Ez egy extra utófeldolgozási lépés az olyan képek kezeléséhez, ahol egynél több autó létezik. Lásd a következő kódot:

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

Az Amazon Rekognition megoldáshoz hasonlóan a határolódobozok a wheel osztályt kiszűrik az észlelési kimenetekről, és továbbítják az utófeldolgozó modulhoz, hogy felmérjék az autó helyzetét a kimenethez képest.

Végül a Detectron megoldás utófeldolgozását is javítottuk. Különböző autóalkatrészek szegmenseit is felhasználja a megoldásra. Például amikor a rendszer észlel egy első lökhárítót, de nem a hátsó lökhárítót, akkor feltételezzük, hogy elölről látjuk az autót, és kiszámítjuk a megfelelő szöget.

Csatlakoztassa megoldását a webalkalmazáshoz

A modell végpontjainak az Amplifyhoz való csatlakoztatásának lépései a következők:

  • Klónozza az AWS CDK-verem által létrehozott és elnevezett alkalmazáslerakat car-angle-detection-website-repo. Győződjön meg arról, hogy abban a régióban keresi, amelyet a telepítéshez használt.
  • Másolja az API-átjáró-végpontokat az egyes telepített Lambda-függvényekhez a index.html fájlt az előző lerakatban (vannak olyan helyőrzők, ahová a végpontot el kell helyezni). A következő kód egy példa arra, hogyan néz ki a .html fájl ezen része:
<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>

  • Mentse el a HTML-fájlt, és nyomja meg a kódmódosítást a távoli főágra.

Ez frissíti a HTML-fájlt a telepítésben. Az alkalmazás most használatra kész.

  • Keresse meg az Amplify konzolt, és keresse meg a létrehozott projektet.

Az alkalmazás URL-címe a telepítés befejezése után látható lesz.

  • Keresse meg az URL-t, és érezze jól magát a felhasználói felületen.

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Következtetés

Gratulálunk! Telepítettünk egy komplett szerver nélküli architektúrát, amelyben az Amazon Rekognitiont használtuk, de lehetőséget adtunk saját egyéni modelledre is, ez a példa elérhető itt: GitHub. Ha nem rendelkezik ML szakértelemmel a csapatában, vagy nincs elegendő egyéni adata egy modell betanításához, választhatja az Amazon Rekognitiont használó lehetőséget. Ha nagyobb irányítást szeretne a modellje felett, szeretné tovább testreszabni, és elegendő adata van, válassza a SageMaker megoldást. Ha van egy adatkutatókból álló csapata, akkor érdemes lehet továbbfejleszteni a modelleket, és egyénibb és rugalmasabb lehetőséget választani. A Lambda funkciót és az API-átjárót a webalkalmazása mögé helyezheti a két lehetőség valamelyikével. Ezt a megközelítést egy másik felhasználási esetre is használhatja, amelyhez esetleg módosítani szeretné a kódot.

Ennek a szerver nélküli architektúrának az az előnye, hogy az építőelemek teljesen cserélhetők. A lehetőségek szinte korlátlanok. Tehát kezdje el még ma!

Mint mindig, az AWS szívesen fogadja a visszajelzéseket. Kérjük, tegye meg észrevételeit vagy kérdéseit.


A szerzőkről

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Michael Wallner az AWS professzionális szolgáltatásokkal foglalkozó adat- és mesterségesintelligencia vezető tanácsadója, és szenvedélyes célja, hogy lehetővé tegye az ügyfelek számára, hogy útjuk során adatvezérelt és AWSome-vé váljanak az AWS felhőben. Ráadásul szeret nagyban gondolkodni az ügyfelekkel, hogy újítson és új ötleteket találjon ki számukra.

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Aamna Najmi az AWS Professional Services adattudós. Szenvedélyesen támogatja ügyfeleit a Big Data és a mesterséges intelligencia technológiákkal való innovációban, hogy üzleti értéket és betekintést nyerhessenek az adatokból. Tapasztalattal rendelkezik adatplatformokon és AI/ML projekteken való munkavégzésben az egészségügy és az élettudományok területén. Szabadidejében szívesen kertészkedik és új helyekre utazik.

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.David Sauerwein az AWS Professional Services vezető adattudósa, ahol lehetővé teszi az ügyfelek számára az AI/ML útjukat az AWS felhőben. David a digitális ikrekre, az előrejelzésre és a kvantumszámításra összpontosít. Az ausztriai Innsbrucki Egyetemen szerzett PhD fokozatot elméleti fizikából. Emellett doktori és posztdoktori kutató volt a németországi Max-Planck-Institute for Quantum Optics-ban. Szabadidejében szeret olvasni, síelni és családjával tölteni az időt.

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Srikrisna Csaitanja Konduru vezető adattudós az AWS Professional szolgáltatásokkal. Támogatja az ügyfeleket az ML-alkalmazásaik prototípus-készítésében és AWS-en való operacionalizálásában. Srikrishna a számítógépes látásra és az NLP-re összpontosít. Emellett ő vezeti az ML platformok tervezését és a használati esetek azonosítását célzó kezdeményezéseket az ügyfelek számára a különböző iparágakban. Srikrishna orvosbiológiai mérnöki diplomát szerzett a németországi RWTH Aacheni Egyetemen, az orvosi képalkotásra összpontosítva.

Build and train computer vision models to detect car positions in images using Amazon SageMaker and Amazon Rekognition | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Ahmed Mansour az AWS Professional Services adattudósa. Technikai támogatást nyújt az ügyfeleknek az AI/ML útjukon keresztül az AWS felhőben. Ahmed az NLP fehérjedoménre való alkalmazására összpontosít, az RL mellett. A Müncheni Műszaki Egyetemen szerzett PhD fokozatot mérnökből. Szabadidejében szeret edzőterembe járni és a gyerekeivel játszani.

Időbélyeg:

Még több AWS gépi tanulás