Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

ML sklepanje na robu z Amazon SageMaker Edge in Ambarella CV25

Ambarella gradi SoC-je za računalniški vid (sistem na čipih), ki temeljijo na zelo učinkoviti arhitekturi čipov AI in CVflow, ki zagotavlja obdelavo globoke nevronske mreže (DNN), ki je potrebna za primere uporabe robnega sklepanja, kot je inteligentno spremljanje doma in pametne nadzorne kamere. Razvijalci pretvorijo modele, usposobljene z ogrodji (kot je TensorFlow ali MXNET), v format Ambarella CVflow, da lahko te modele izvajajo na robnih napravah. Amazon SageMaker Edge je integriral verigo orodij Ambarella v svoj potek dela, kar vam omogoča preprosto pretvorbo in optimizacijo vaših modelov za platformo.

V tej objavi prikazujemo, kako nastaviti optimizacijo in pretvorbo modela s SageMaker Edge, dodati model vaši aplikaciji edge ter uvesti in preizkusiti svoj novi model v napravi Ambarella CV25, da zgradite aplikacijo pametne nadzorne kamere, ki deluje na robu.

Primer uporabe pametne kamere

Pametne varnostne kamere imajo omogočene funkcije strojnega učenja za posamezne primere (ML), kot je zaznavanje vozil in živali ali prepoznavanje morebitnega sumljivega vedenja, parkiranja ali kršitev območja. Ti scenariji zahtevajo, da modeli ML delujejo na robni računalniški enoti v fotoaparatu z najvišjo možno zmogljivostjo.

Procesorji Ambarella CVx, ki temeljijo na lastniški arhitekturi CVflow podjetja, zagotavljajo visoko zmogljivost sklepanja DNN pri zelo nizki porabi energije. Zaradi te kombinacije visoke zmogljivosti in nizke porabe so idealni za naprave, ki zahtevajo vrhunsko inteligenco. Modele ML je treba optimizirati in prevesti, da bo ciljna platforma delovala na robu. SageMaker Edge ima ključno vlogo pri optimizaciji in pretvorbi modelov ML v najbolj priljubljena ogrodja, da se lahko izvajajo na napravi edge.

Pregled rešitev

Naša rešitev pametne varnostne kamere izvaja optimizacijo modela ML in konfiguracijo prevajanja, delovanje med izvajanjem, testiranje sklepanja in vrednotenje na robni napravi. SageMaker Edge zagotavlja optimizacijo modela in pretvorbo za naprave edge, ki delujejo hitreje brez izgube natančnosti. Model ML je lahko v katerem koli ogrodju, ki ga podpira SageMaker Edge. Za več informacij glejte Podprta ogrodja, naprave, sistemi in arhitekture.

Integracija SageMaker Edge orodij Ambarella CVflow zagotavlja dodatne prednosti razvijalcem, ki uporabljajo Ambarella SoC:

  • Razvijalcem se ni treba ukvarjati s posodobitvami in vzdrževanjem verige orodij prevajalnika, ker je veriga orodij integrirana in neprozorna za uporabnika
  • Sloji, ki jih CVflow ne podpira, se samodejno prevedejo za izvajanje v ARM s prevajalnikom SageMaker Edge

Naslednji diagram ponazarja arhitekturo rešitve:
Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Koraki za izvedbo rešitve so naslednji:

  1. Pripravite paket modela.
  2. Konfigurirajte in zaženite opravilo prevajanja modela za Ambarella CV25.
  3. Zapakirane artefakte modela položite na napravo.
  4. Preizkusite sklepanje na napravi.

Pripravite paket modela

Za cilje Ambarella SageMaker Edge zahteva paket modela, ki vsebuje konfiguracijsko datoteko modela, imenovano amba_config.json, kalibracijske slike in datoteko z usposobljenim modelom ML. Ta datoteka paketa modela je stisnjena datoteka TAR (*.tar.gz). Uporabite lahko Amazon Sagemaker primerek prenosnega računalnika za usposabljanje in testiranje modelov ML ter za pripravo datoteke paketa modela. Če želite ustvariti primerek zvezka, izvedite naslednje korake:

  1. Na konzoli SageMaker pod notebook v podoknu za krmarjenje izberite Primeri prenosnih računalnikov.
    Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Izberite Ustvari primerek prenosnega računalnika.
  3. Vnesite ime za svoj primerek in izberite ml.t2.srednje kot vrsto primerka.

Ta primer je dovolj za testiranje in pripravo modela.

  1. za Vloga IAM, ustvarite novo AWS upravljanje identitete in dostopa (IAM), do katere želite omogočiti dostop Preprosta storitev shranjevanja Amazon (Amazon S3) ali izberite obstoječo vlogo.
  2. Ohranite druge konfiguracije kot privzete in izberite Ustvari primerek prenosnega računalnika.

Ko je stanje InService, lahko začnete uporabljati svoj novi primerek prenosnika Sagemaker.

  1. Izberite Odprite JupyterLab za dostop do vašega delovnega prostora.

Za to objavo uporabljamo vnaprej usposobljen model TFLite za prevajanje in uvajanje v robno napravo. Izbrani model je predhodno usposobljen model za zaznavanje objektov SSD iz živalskega vrta modelov TensorFlow na naboru podatkov COCO.

  1. Prenos pretvorjen model TFLite.

Zdaj ste pripravljeni na prenos, testiranje in pripravo paketa modela.

  1. Ustvarite nov zvezek z jedrom conda_tensorflow2_p36 v pogledu zaganjalnika.
  2. Zahtevane knjižnice uvozite na naslednji način:
    import cv2
    import numpy as np
    from tensorflow.lite.python.interpreter import Interpreter

  3. Shranite naslednjo sliko kot primer street-frame.jpg, ustvarite mapo z imenom calib_img v mapi delovnega prostora in naložite sliko v trenutno mapo.
  4. Naložite preneseno vsebino paketa modela v trenutno mapo.
    Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Zaženite naslednji ukaz, da naložite svoj vnaprej pripravljen model TFLite in natisnete njegove parametre, ki jih potrebujemo za konfiguracijo našega modela za prevajanje:
    interpreter = Interpreter(model_path='ssd_mobilenet_v1_coco_2018_01_28.tflite')
    interpreter.allocate_tensors() input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()
    height = input_details[0]['shape'][1]
    width = input_details[0]['shape'][2] print("Input name: '{}'".format(input_details[0]['name']))
    print("Input Shape: {}".format(input_details[0]['shape'].tolist()))

    Izhod vsebuje ime vnosa in obliko vnosa:

    Input name: 'normalized_input_image_tensor'
    Input Shape: [1, 300, 300, 3]

  6. Uporabite naslednjo kodo, da naložite testno sliko in zaženete sklepanje:
    image = cv2.imread("calib_img/street-frame.jpg")
    image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    imH, imW, _ = image.shape
    image_resized = cv2.resize(image_rgb, (width, height))
    input_data = np.expand_dims(image_resized, axis=0) input_data = (np.float32(input_data) - 127.5) / 127.5 interpreter.set_tensor(input_details[0]['index'], input_data)
    interpreter.invoke() boxes = interpreter.get_tensor(output_details[0]['index'])[0]
    classes = interpreter.get_tensor(output_details[1]['index'])[0]
    scores = interpreter.get_tensor(output_details[2]['index'])[0]
    num = interpreter.get_tensor(output_details[3]['index'])[0]

  7. Uporabite naslednjo kodo za vizualizacijo zaznanih mejnih okvirjev na sliki in shranite sliko rezultata kot street-frame_results.jpg:
    with open('labelmap.txt', 'r') as f: labels = [line.strip() for line in f.readlines()] for i in range(len(scores)): if ((scores[i] > 0.1) and (scores[i] <= 1.0)): ymin = int(max(1, (boxes[i][0] * imH))) xmin = int(max(1, (boxes[i][1] * imW))) ymax = int(min(imH, (boxes[i][2] * imH))) xmax = int(min(imW, (boxes[i][3] * imW))) cv2.rectangle(image, (xmin, ymin), (xmax, ymax), (10, 255, 0), 2) object_name = labels[int(classes[i])] label = '%s: %d%%' % (object_name, int(scores[i]*100)) labelSize, baseLine = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.7, 2) label_ymin = max(ymin, labelSize[1] + 10) cv2.rectangle(image, (xmin, label_ymin-labelSize[1]-10), (xmin + labelSize[0], label_ymin+baseLine-10), (255, 255, 255), cv2.FILLED) cv2.putText(image, label, (xmin, label_ymin-7), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 0), 2) cv2.imwrite('street-frame_results.jpg', image)

  8. Uporabite naslednji ukaz za prikaz slike rezultata:
    Image(filename='street-frame_results.jpg') 

Dobite rezultat sklepanja, kot je naslednja slika.
Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Naš predhodno usposobljeni model TFLite zazna avtomobilski predmet iz okvirja varnostne kamere.

Končali smo s testiranjem modela; zdaj pa zapakirajmo model in konfiguracijske datoteke, ki jih Amazon Sagemaker Neo potrebuje za cilje Ambarella.

  1. Ustvari prazno besedilno datoteko, imenovano amba_config.json in za to uporabite naslednjo vsebino:
    { "inputs": { "normalized_input_image_tensor": { "shape": "1, 300, 300, 3", "filepath": "calib_img/" } }
    }

Ta datoteka je konfiguracijska datoteka kompilacije za Ambarella CV25. The filepath notranja vrednost amba_config.json mora ustrezati calib_img ime mape; neujemanje lahko povzroči okvaro.

Vsebina paketa modela je zdaj pripravljena.

  1. Za stiskanje paketa kot datoteke .tar.gz uporabite naslednje ukaze:
    import tarfile
    with tarfile.open('ssd_mobilenet_v1_coco_2018_01_28.tar.gz', 'w:gz') as f: f.add('calib_img/') f.add('amba_config.json') f.add('ssd_mobilenet_v1_coco_2018_01_28.tflite')

  2. Naložite datoteko v vedro S3, ki ga je samodejno ustvaril SageMaker, da jo uporabite v opravilu prevajanja (ali vaše določeno vedro S3):
    import sagemaker
    sess = sagemaker.Session()
    bucket = sess.default_bucket() print("S3 bucket: "+bucket)
    prefix = 'raw-models'
    model_path = sess.upload_data(path='ssd_mobilenet_v1_coco_2018_01_28.tar.gz', key_prefix=prefix)
    print("S3 uploaded model path: "+model_path)

Datoteka paketa modela vsebuje slike za umerjanje, konfiguracijsko datoteko kompilacije in datoteke modela. Ko naložite datoteko v Amazon S3, ste pripravljeni na začetek dela prevajanja.

Sestavite model za Ambarella CV25

Če želite začeti opravilo prevajanja, dokončajte naslednje korake:

  1. Na konzoli SageMaker pod Sklepanje v podoknu za krmarjenje izberite Kompilacijske naloge.
    Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Izberite Ustvari delo kompilacije.
  3. za Ime delovnega mesta, vnesite ime.
  4. za Vloga IAM, ustvarite vlogo ali izberite obstoječo vlogo, da Amazonu S3 omogočite branje in pisanje za datoteke modela.
    Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. v Vhodna konfiguracija odsek, za Lokacija artefaktov modela, vnesite pot S3 vaše naložene datoteke paketa modela.
  6. za Konfiguracija vnosa podatkov, vnesite {"normalized_input_image_tensor":[1, 300, 300, 3]}, ki je oblika vhodnih podatkov modela, pridobljena v prejšnjih korakih.
  7. za Ogrodje strojnega učenja, izberite TFLite.
    Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  8. v Izhodna konfiguracija odsek, za Ciljna naprava, izberite svojo napravo (amba_cv25).
  9. za S3 Izhodna lokacija, vnesite mapo v vedro S3, v katero želite shraniti prevedeni model.
    Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  10. Izberite Prijave se za začetek postopka prevajanja.

Čas prevajanja je odvisen od velikosti in arhitekture vašega modela. Ko je vaš prevedeni model pripravljen v Amazonu S3, se Status stolpec prikazuje kot COMPLETED.

Če je prikazan status kompilacije FAILED, nanašati se na Odpravite napake Ambarella za odpravljanje napak pri prevajanju.

Artefakte modela postavite na napravo

Ko je delo prevajanja končano, Neo shrani prevedeni paket na podano izhodno lokacijo v vedru S3. Prevedena datoteka paketa modela vsebuje pretvorjene in optimizirane datoteke modela, njihovo konfiguracijo in datoteke izvajalnega okolja.

Na konzoli Amazon S3 prenesite paket prevedenega modela, nato izvlecite in prenesite artefakte modela v svojo napravo, da jo začnete uporabljati s svojo aplikacijo za sklepanje edge ML.

Preizkusite sklepanje ML na napravi

Pomaknite se do terminala vaše naprave Ambarella in v napravi zaženite binarno aplikacijo za sklepanje. Prevedeni in optimizirani model ML se izvaja za navedeni video vir. Na izhodnem toku lahko opazite zaznane mejne okvirje, kot je prikazano na naslednjem posnetku zaslona.

Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

zaključek

V tej objavi smo izvedli pripravo modela ML in pretvorbo v cilje Ambarella s SageMaker Edge, ki ima integrirano verigo orodij Ambarella. Optimiziranje in uvajanje visokozmogljivih modelov ML v Ambarelline robne naprave z nizko porabo odklene inteligentne robne rešitve, kot so pametne varnostne kamere.

Kot naslednji korak lahko začnete uporabljati SageMaker Edge in Ambarella CV25, da omogočite ML za robne naprave. Ta primer uporabe lahko razširite z razvojnimi funkcijami Sagemaker ML, da zgradite cevovod od konca do konca, ki vključuje obdelavo robov in uvajanje.


O avtorjih

Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai. Emir Ayar je vodilni arhitekt Edge Prototyping v ekipi AWS Prototyping. Specializiran je za pomoč strankam pri izgradnji IoT, Edge AI in rešitev Industrije 4.0 ter izvajanju najboljših arhitekturnih praks. Živi v Luksemburgu in rad igra sintetizatorje.

Sklepanje ML na robu z Amazon SageMaker Edge in Ambarella CV25 PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Dinesh Balasubramaniam je odgovoren za trženje in podporo strankam za Ambarellino družino varnostnih SoC-jev s strokovnim znanjem na področju sistemskega inženiringa, razvoja programske opreme, kompresije videa in oblikovanja izdelkov. Dinesh Diplomiral je na Univerzi v Teksasu v Dallasu s poudarkom na obdelavi signalov.

Časovni žig:

Več od Strojno učenje AWS