Amazon SageMaker ve Amazon Rekognition | Amazon Web Hizmetleri

Amazon SageMaker ve Amazon Rekognition | Amazon Web Hizmetleri

Bilgisayarla görme (CV), makine öğrenimi (ML) ve derin öğrenmenin en yaygın uygulamalarından biridir. Kullanım örnekleri, sürücüsüz arabalardan, sosyal medya platformlarında içerik denetlemeye, kanser tespitinden otomatik kusur tespitine kadar çeşitlilik göstermektedir. Amazon Rekognisyon önceden herhangi bir makine öğrenimi deneyimine ihtiyaç duymadan verilerden içgörüler elde etmek için nesne algılama, video segmenti algılama, içerik denetleme ve daha fazlası gibi CV görevlerini gerçekleştirebilen, tam olarak yönetilen bir hizmettir. Bazı durumlarda, çok spesifik bir sorunu çözmek için hizmetin yanı sıra daha özel bir çözüme de ihtiyaç duyulabilir.

Bu yazıda nesnelerin pozunun, konumunun ve yönünün önemli olduğu durumlarda CV'nin uygulanabileceği alanlara değiniyoruz. Bu tür bir kullanım örneği, görsel yüklemenin gerekli olduğu, müşteriye yönelik mobil uygulamalar olabilir. Uyumluluk nedeniyle veya tutarlı bir kullanıcı deneyimi sağlamak ve etkileşimi artırmak için olabilir. Örneğin online alışveriş platformlarında görsellerde ürünlerin gösterilme açısı, bu ürünün satın alınma oranını etkilemektedir. Böyle bir durum, bir arabanın konumunu tespit etmektir. AWS Cloud'da bu sorunu çözmek için iyi bilinen makine öğrenimi çözümlerini son işlemlerle nasıl birleştirebileceğinizi gösteriyoruz.

Bu sorunu çözmek için derin öğrenme modellerini kullanıyoruz. Poz tahmini için ML algoritmalarının eğitimi, çok fazla uzmanlık ve özel eğitim verileri gerektirir. Her iki gereksinimin de elde edilmesi zor ve maliyetlidir. Bu nedenle iki seçenek sunuyoruz: Biri ML uzmanlığı gerektirmeyen ve Amazon Rekognition'ı kullanan, diğeri ise Amazon Rekognition'ı kullanan Amazon Adaçayı Yapıcı özel bir makine öğrenimi modeli eğitmek ve dağıtmak için. İlk seçenekte arabanın tekerleklerini tespit etmek için Amazon Rekognition kullanıyoruz. Daha sonra kural tabanlı bir sistem kullanarak arabanın yönünü tekerlek konumlarından çıkarıyoruz. İkinci seçenekte ise tekerlekleri ve diğer araba parçalarını tespit ediyoruz. dedektör modeli. Bunlar yine kural tabanlı kodla kabinin konumunu anlamak için kullanılır. İkinci seçenek, makine öğrenimi deneyimi gerektirir ancak aynı zamanda daha özelleştirilebilirdir. Örneğin tüm arabayı kırpmak için görüntü üzerinde daha ileri işlemler yapmak için kullanılabilir. Her iki seçenek de halka açık veri kümeleri üzerinde eğitilebilir. Son olarak, bu araba poz algılama çözümünü aşağıdaki hizmetleri kullanarak mevcut web uygulamanıza nasıl entegre edebileceğinizi gösteriyoruz: Amazon API Ağ Geçidi ve AWS Yükseltme.

Çözüme genel bakış

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Çözüm, Amplify'da kullanıcının bir görüntü yükleyebildiği ve arabanın konumunu tespit etmek için Amazon Rekognition modelini veya özel Detectron modelini çağırabildiği sahte bir web uygulamasından oluşuyor. Her seçenek için bir ev sahipliği yapıyoruz. AWS Lambda Sahte uygulamamıza maruz kalan bir API Ağ Geçidinin arkasındaki işlev. Lambda işlevimizi SageMaker veya Amazon Rekognition'da eğitilmiş Detectron modeliyle çalışacak şekilde yapılandırdık.

Önkoşullar

Bu izlenecek yol için aşağıdaki ön koşullara sahip olmalısınız:

Amazon Rekognition'ı kullanarak sunucusuz bir uygulama oluşturun

İlk seçeneğimiz, Amazon Rekognition'ı kullanarak görüntülerdeki araba yönlerini nasıl tespit edebileceğinizi gösterir. Buradaki fikir, arabanın ve tekerleklerinin konumunu tespit etmek için Amazon Rekognition'ı kullanmak ve ardından bu bilgiden arabanın yönünü elde etmek için son işlemler yapmaktır. Çözümün tamamı şekilde gösterildiği gibi Lambda kullanılarak dağıtılır. Github havuzu. Bu klasör iki ana dosya içerir: Lambda işlevimizde çalışacak Docker görüntüsünü tanımlayan bir Docker dosyası ve app.py Lambda fonksiyonunun ana giriş noktası olacak dosya:

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 işlevi, gövdenin base64 kodu çözülmüş nesne olarak etiketlenmesi gereken görüntü olması gereken bir başlık ve gövde içeren bir olay bekler. Görüntü göz önüne alındığında, Amazon Tanıma detect_labels işlevi kullanılarak Lambda işlevinden çağrılır. Boto3. İşlev, yanıtın bir parçası olarak görüntüdeki her nesne için bir veya daha fazla etiketi ve algılanan tüm nesne etiketlerinin sınırlayıcı kutu ayrıntılarını, atanan etiketin güvenirliği, algılanan etiketin ata etiketleri, olası diğer bilgilerle birlikte döndürür. etiketin takma adlarını ve algılanan etiketin ait olduğu kategorileri içerir. Amazon Rekognition tarafından döndürülen etiketlere dayanarak işlevi çalıştırıyoruz label_imageAlgılanan tekerleklerden kabin açısını şu şekilde hesaplayan:

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

Uygulamanın, resimde yalnızca bir arabanın bulunmasını gerektirdiğini ve eğer durum böyle değilse bir hata döndürdüğünü unutmayın. Bununla birlikte, son işleme, daha ayrıntılı yönlendirme açıklamaları sağlayacak, birkaç arabayı kapsayacak veya daha karmaşık nesnelerin yönelimini hesaplayacak şekilde uyarlanabilir.

Tekerlek algılamayı geliştirin

Tekerlek algılamanın doğruluğunu daha da artırmak için şunları kullanabilirsiniz: Amazon Rekognition Özel Etiketleri. Özel bir makine öğrenimi modeli eğitmek ve dağıtmak için SageMaker'ı kullanarak ince ayar yapmaya benzer şekilde, Amazon Rekognition'ın yalnızca birkaç saat içinde sizin için özel bir görüntü analizi modeli oluşturabilmesi için kendi etiketli verilerinizi getirebilirsiniz. Rekognition Özel Etiketleri ile yalnızca kullanım durumunuza özel küçük bir eğitim görselleri setine ihtiyacınız vardır; bu durumda, belirli açılara sahip araba görselleri çünkü Amazon Rekognition'daki mevcut on milyonlarca görüntü üzerinde eğitilme yeteneklerini kullanır. birçok kategori. Rekognition Özel Etiketleri, standart Amazon Rekognition çözümü için kullandığımız Lambda işlevine yalnızca birkaç tıklamayla ve küçük uyarlamalarla entegre edilebilir.

SageMaker eğitim işini kullanarak bir modeli eğitin

İkinci seçeneğimizde SageMaker üzerinde özel bir derin öğrenme modeli eğitiyoruz. biz kullanıyoruz Detectron2 çerçevesi araba parçalarının segmentasyonu için. Bu bölümler daha sonra arabanın konumunu anlamak için kullanılır.

Detectron2 çerçevesi, en son teknolojiye sahip algılama ve segmentasyon algoritmaları sağlayan bir kütüphanedir. Detectron, ünlü COCO (Bağlamdaki Ortak nesneler) veri kümesi üzerinde eğitilmiş çeşitli Maske R-CNN modelleri sağlar. Araba nesneleri algılama modelimizi oluşturmak için, önceden eğitilmiş bir Mask R-CNN modeline ince ayar yapmak üzere transfer öğrenmeyi kullanıyoruz. araba parçaları segmentasyonu veri kümesi. Bu veri seti, tekerlekleri ve aynı zamanda diğer araba parçalarını da algılayabilen bir modeli eğitmemize olanak tanır. Bu ek bilgi, görüntüye göre kabin açısı hesaplamalarında ayrıca kullanılabilir.

Veri seti, nesne tespiti ve anlamsal bölümleme görevleri için kullanılacak araba parçalarının açıklamalı verilerini içerir: birden fazla görünümde (ön, arka ve yan görünümler) alınmış yaklaşık 500 sedan, pikap ve spor hizmet araçlarının (SUV'ler) görüntüsü. Her görüntüye, bir arabanın tekerlekler, aynalar, ışıklar ve ön ve arka cam gibi farklı kısımlarını temsil eden 18 örnek maske ve sınırlayıcı kutular eklenmiştir. Tekerleklerin temel açıklamalarını, görüntüdeki mevcut tüm tekerlekleri tek bir nesne olarak düşünmek yerine her bir tekerleği ayrı bir nesne olarak kabul edecek şekilde değiştirdik.

Biz kullanmak Amazon Basit Depolama Hizmeti (Amazon S3), Detectron modelini eğitmek için kullanılan veri kümesini eğitilen model yapılarıyla birlikte depolamak için. Ayrıca Lambda fonksiyonunda çalışan Docker konteyneri de depolanır. Amazon Elastik Konteyner Kayıt Defteri (Amazon ECR). Lambda işlevindeki Docker kapsayıcısının, kodu çalıştırmak için gerekli kitaplıkları ve bağımlılıkları içermesi gerekir. Alternatif olarak kullanabiliriz Lambda katmanları, ancak 250 MB'lık sıkıştırılmamış dağıtım paketi boyutu kotası ile sınırlıdır ve bir Lambda işlevine en fazla beş katman eklenebilir.

Çözümümüz SageMaker üzerine kuruludur: önceden oluşturulmuş olanı genişletiyoruz SageMaker Docker kapsayıcıları PyTorch'un özel PyTorch'umuzu çalıştırması için eğitim kodu. Daha sonra, aşağıdaki kod parçacıklarında gösterildiği gibi eğitim görüntüsünü bir SageMaker PyTorch tahmin aracına sarmak için SageMaker Python SDK'yı kullanırız:

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)

Son olarak çağrı yaparak eğitim işine başlıyoruz. fit() oluşturulan PyTorch tahmincisi üzerinde işlev. Eğitim tamamlandığında eğitilen model yapısı, çıkarım hattı için kullanılmak üzere Amazon S3'teki oturum paketinde depolanır.

Modeli SageMaker ve çıkarım işlem hatlarını kullanarak dağıtma

Ayrıca özel Detectron modelimizi çalıştıran çıkarım uç noktasını barındırmak için SageMaker'ı kullanıyoruz. Çözümümüzü dağıtmak için kullanılan altyapının tamamı AWS CDK kullanılarak sağlanır. Özel modelimizi bir aracılığıyla barındırabiliriz SageMaker gerçek zamanlı uç nokta arayarak deploy PyTorch tahmincisinde. Bu, önceden oluşturulmuş bir SageMaker PyTorch kapsayıcısını PyTorch Detectron'u içerecek şekilde ikinci kez genişletiyoruz. Çıkarım komut dosyasını çalıştırmak ve eğitilmiş PyTorch modelimizi aşağıdaki gibi barındırmak için kullanıyoruz:

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)

Dağıtım için ml.g4dn.xlarge GPU kullandığımızı unutmayın çünkü bu, mevcut en küçük GPU'dur ve bu demo için yeterlidir. İki bileşenin yapılandırılması gerekiyor çıkarım komut dosyası: model yükleme ve model sunma. İşlev model_fn() Barındırılan Docker konteynerinin bir parçası olan ve Amazon S3'te de bulunabilen eğitimli modeli yüklemek ve aşağıdaki gibi model hizmeti için kullanılabilecek bir model nesnesi döndürmek için kullanılır:

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)

Bu fonksiyon predict_fn() tahmini gerçekleştirir ve sonucu döndürür. Eğitilmiş modelimizi kullanmanın yanı sıra, görüntüdeki ana arabayı çıkarmak için COCO veri seti üzerinde eğitilmiş Mask R-CNN modelinin önceden eğitilmiş bir versiyonunu kullanıyoruz. Bu, birden fazla arabanın mevcut olduğu görüntülerle başa çıkmak için ilave bir son işleme adımıdır. Aşağıdaki koda bakın:

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

Amazon Rekognition çözümüne benzer şekilde, aşağıdakiler için tahmin edilen sınırlayıcı kutular wheel sınıfı, algılama çıkışlarından filtrelenir ve çıkışa göre kabin konumunu değerlendirmek için son işlem modülüne sağlanır.

Son olarak Detectron çözümü için son işlemeyi de geliştirdik. Çözümü çıkarmak için farklı araba parçalarının segmentlerini de kullanır. Örneğin, bir ön tampon tespit edildiğinde ancak arka tampon tespit edilmediğinde, arabanın önden bir görünümüne sahip olduğumuz varsayılır ve buna karşılık gelen açı hesaplanır.

Çözümünüzü web uygulamasına bağlayın

Model uç noktalarını Amplify'a bağlama adımları aşağıdaki gibidir:

  • AWS CDK yığınının oluşturduğu uygulama deposunu şu adla kopyalayın: car-angle-detection-website-repo. Dağıtım için kullandığınız Bölgede aradığınızdan emin olun.
  • Dağıtılan Lambda işlevlerinin her biri için API Ağ Geçidi uç noktalarını index.html önceki depodaki dosya (uç noktanın yerleştirilmesi gereken yer tutucular vardır). Aşağıdaki kod, .html dosyasının bu bölümünün nasıl göründüğüne bir örnektir:
<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>

  • HTML dosyasını kaydedin ve kod değişikliğini uzak ana şubeye gönderin.

Bu, dağıtımdaki HTML dosyasını güncelleyecektir. Uygulama artık kullanıma hazır.

  • Amplify konsoluna gidin ve oluşturduğunuz projeyi bulun.

Uygulama URL'si dağıtım tamamlandıktan sonra görünür olacaktır.

  • URL'ye gidin ve kullanıcı arayüzüyle eğlenin.

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Sonuç

Tebrikler! Amazon Rekognition'ı kullandığımız eksiksiz bir sunucusuz mimariyi devreye aldık, ancak aynı zamanda kendi özel modeliniz için bir seçenek de sunduk; bu örnek şu adreste mevcuttur: GitHub. Ekibinizde makine öğrenimi uzmanlığı veya bir modeli eğitmeye yetecek kadar özel veri yoksa Amazon Rekognition'ı kullanan seçeneği tercih edebilirsiniz. Modeliniz üzerinde daha fazla kontrole sahip olmak, onu daha fazla özelleştirmek ve yeterli veriye sahip olmak istiyorsanız SageMaker çözümünü tercih edebilirsiniz. Veri bilimcilerden oluşan bir ekibiniz varsa modelleri daha da geliştirmek ve daha özel ve esnek bir seçenek seçmek isteyebilirler. İki seçenekten birini kullanarak Lambda işlevini ve API Ağ Geçidini web uygulamanızın arkasına yerleştirebilirsiniz. Bu yaklaşımı, kodu uyarlamak isteyebileceğiniz farklı bir kullanım durumu için de kullanabilirsiniz.

Bu sunucusuz mimarinin avantajı yapı taşlarının tamamen değiştirilebilir olmasıdır. Fırsatlar neredeyse sınırsız. O halde bugün başlayın!

Her zaman olduğu gibi, AWS geri bildirimleri memnuniyetle karşılar. Lütfen herhangi bir yorum veya soru gönderin.


Yazarlar Hakkında

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Michael Wallner AWS Profesyonel Hizmetlerinde Kıdemli Veri ve Yapay Zeka Danışmanıdır ve müşterilerin AWS bulutunda veri odaklı ve AWSome olma yolculuklarına olanak sağlama konusunda tutkuludur. Üstelik, onlar için yenilik yapmak ve yeni fikirler icat etmek için müşterilerle birlikte büyük düşünmeyi seviyor.

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Aamna Necmi AWS Profesyonel Hizmetlerinde Veri Bilimcisidir. Verilerden iş değeri ve içgörüler elde etmek için müşterilerin Büyük Veri ve Yapay Zeka teknolojileriyle yenilik yapmalarına yardımcı olma konusunda tutkulu. Sağlık ve yaşam bilimleri dikeyinde veri platformu ve AI/ML projelerinde çalışma deneyimine sahiptir. Boş zamanlarında bahçecilik yapmaktan ve yeni yerlere seyahat etmekten hoşlanıyor.

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.David Sauerwein AWS Profesyonel Hizmetler'de Kıdemli Veri Bilimcisidir ve müşterilerin AWS bulutunda AI/ML yolculuklarına olanak sağlar. David dijital ikizlere, tahminlere ve kuantum hesaplamaya odaklanıyor. Avusturya Innsbruck Üniversitesi'nden teorik fizik alanında doktora derecesine sahiptir. Aynı zamanda Almanya'daki Max-Planck Kuantum Optiği Enstitüsü'nde doktora ve doktora sonrası araştırmacı olarak görev yaptı. Boş zamanlarında kitap okumayı, kayak yapmayı ve ailesiyle vakit geçirmeyi seviyor.

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Srikrishna Chaitanya Konduru AWS Professional hizmetlerinde Kıdemli Veri Bilimcisidir. Müşterilere makine öğrenimi uygulamalarının AWS'de prototiplenmesi ve operasyonel hale getirilmesi konusunda destek oluyor. Srikrishna bilgisayar görüşü ve NLP'ye odaklanıyor. Kendisi aynı zamanda çeşitli endüstri sektörlerindeki müşteriler için makine öğrenimi platformu tasarımına ve kullanım senaryosu tanımlama girişimlerine liderlik etmektedir. Srikrishna, Almanya'daki RWTH Aachen Üniversitesi'nden Tıbbi Görüntüleme odaklı Biyomedikal Mühendisliği alanında yüksek lisans derecesine sahiptir.

Amazon SageMaker ve Amazon Rekognition'ı kullanarak görüntülerdeki araba konumlarını tespit etmek için bilgisayarlı görüş modelleri oluşturun ve eğitin | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Ahmed Mansour AWS Profesyonel Hizmetler'de Veri Bilimcisidir. AWS bulutundaki AI/ML yolculukları boyunca müşterilere teknik destek sağlıyor. Ahmed, RL ile birlikte NLP'nin protein alanına uygulanmasına odaklanıyor. Almanya Münih Teknik Üniversitesi'nden Mühendislik alanında doktora derecesine sahiptir. Boş zamanlarında spor salonuna gitmeyi ve çocuklarıyla oynamayı seviyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi