Zephyrnet Logosu

Amazon SageMaker ile özel bir veri kümesinde çok nesneli bir izleme çözümü uygulayın | Amazon Web Hizmetleri

Tarih:

Video analizinde çoklu nesne takibine (MOT) olan talep, canlı spor, üretim ve trafik izleme gibi birçok sektörde önemli ölçüde arttı. Örneğin, canlı sporlarda MOT, gerçek zamanlı hız ve hareket mesafesi gibi fiziksel performansı analiz etmek için futbolcuları gerçek zamanlı olarak takip edebilir.

2021 yılında piyasaya sürülmesinden bu yana, ByteTrack MOT uygulamasındaki en son model geliştirmeleri arasında, çeşitli kıyaslama veri kümelerinde en iyi performans gösteren yöntemlerden biri olmaya devam ediyor. Yazar, ByteTrack'te algılama kutusu ve izleme eşleştirmesi için basit, etkili ve genel bir veri ilişkilendirme yöntemi (BYTE olarak anılır) önerdi. Yalnızca yüksek puan algılama kutularını tutmak yerine, düşük puan algılama kutularını da tutar; bu, tıkanma, hareket bulanıklığı veya boyut değişikliği meydana geldiğinde bu düşük puan algılama kutuları ile benzersiz izciklerin kurtarılmasına yardımcı olabilir. BYTE ilişkilendirme stratejisi, aşağıdakiler gibi diğer Re-ID tabanlı izleyicilerde de kullanılabilir: AdilMOT. Deneyler, vanilya izleyici algoritmalarına kıyasla iyileştirmeler gösterdi. Örneğin FairMOT, MOTA'da %1.3'lük bir iyileşme elde etti (FairMOT: Çoklu Nesne İzlemede Tespitin ve Yeniden Tanımlamanın Adaleti Üzerine), veri ilişkilendirmede BAYT uygulanırken MOT görevindeki ana ölçümlerden biridir.

Yayında Amazon SageMaker ile bir FairMOT modelini eğitin ve devreye alınile bir FairMOT modelinin nasıl eğitileceğini ve konuşlandırılacağını gösterdik. Amazon Adaçayı Yapıcı üzerinde MOT meydan okuma veri kümeleri. Gerçek dünyadaki durumlarda bir MOT çözümü uygularken, özel bir veri kümesi üzerinde bir MOT modelini eğitmeniz veya ince ayar yapmanız gerekir. İle Amazon SageMaker Yer Gerçeği, kendi video veri kümenizde etkili bir şekilde etiketler oluşturabilirsiniz.

Önceki gönderiyi takiben, aşağıdaki katkıları ve değişiklikleri ekledik:

  • Ground Truth'u kullanarak özel bir video veri kümesi için etiketler oluşturun
  • ByteTrack ve diğer MOT çözümleriyle uyumlu olması için Ground Truth tarafından oluşturulan etiketi önceden işleyin
  • ByteTrack algoritmasını bir SageMaker eğitim işi (seçeneği ile önceden oluşturulmuş bir kapsayıcıyı genişletin)
  • Eşzamansız çıkarım da dahil olmak üzere çeşitli dağıtım seçenekleriyle eğitimli modeli dağıtın

Biz de sağlamak GitHub'daki kod örneğietiketleme, oluşturma, eğitim ve çıkarım için SageMaker'ı kullanan.

SageMaker, her geliştiriciye ve veri bilimciye makine öğrenimi (ML) modellerini hızlı bir şekilde hazırlama, oluşturma, eğitme ve dağıtma yeteneği sağlayan, tam olarak yönetilen bir hizmettir. SageMaker, makine öğrenimi modellerinin eğitimini ve dağıtımını hızlandırmak için kullanabileceğiniz çeşitli yerleşik algoritmalar ve kapsayıcı görüntüleri sağlar. Ek olarak, ByteTrack gibi özel algoritmalar, özel olarak oluşturulmuş Docker konteyner görüntüleri aracılığıyla da desteklenebilir. Konteynerlerle doğru bağlantı düzeyine karar verme hakkında daha fazla bilgi için bkz. SageMaker ile Docker kapsayıcılarını kullanma.

SageMaker, model dağıtımı için gerçek zamanlı çıkarım, sunucusuz çıkarım ve eşzamansız çıkarım gibi pek çok seçenek sunar. Bu gönderide, kendi kullanım durumunuza göre uygun dağıtım yöntemini seçebilmeniz için farklı dağıtım seçenekleriyle bir izleme modelinin nasıl dağıtılacağını gösteriyoruz.

Çözüme genel bakış

Çözümümüz aşağıdaki üst düzey adımlardan oluşur:

  1. Veri kümesini izleme için her nesnede bir sınırlayıcı kutuyla (örneğin, yaya, araba vb.) etiketleyin. Makine öğrenimi kodu geliştirme ve yürütme için kaynakları ayarlayın.
  2. Bir ByteTrack modeli eğitin ve özel bir veri kümesinde hiperparametreleri ayarlayın.
  3. Eğitimli ByteTrack modelini, kullanım durumunuza bağlı olarak farklı dağıtım seçenekleriyle devreye alın: gerçek zamanlı işleme, eşzamansız veya toplu tahmin.

Aşağıdaki diyagram, her adımdaki mimariyi göstermektedir.
genel bakış akışı

Önkoşullar

Başlamadan önce aşağıdaki ön koşulları tamamlayın:

  1. Bir AWS hesabı oluşturun veya mevcut bir AWS hesabını kullanın.
  2. Kaynak kodunu şu şekilde çalıştırmanızı öneririz: us-east-1 Bölge.
  3. En az bir GPU örneğiniz olduğundan emin olun (örneğin, ml.p3.2xlarge tek GPU eğitimi için veya ml.p3.16xlarge) dağıtılmış eğitim işi için. Çeşitli performans farklılıklarıyla birlikte diğer GPU bulut sunucusu türleri de desteklenir.
  4. En az bir GPU örneğiniz olduğundan emin olun (örneğin, ml.p3.2xlarge) çıkarım uç noktası için.
  5. En az bir GPU örneğiniz olduğundan emin olun (örneğin, ml.p3.2xlarge) işleme işleriyle toplu tahmin çalıştırmak için.

SageMaker hizmetlerini yukarıda belirtilen bulut sunucusu türlerinde ilk kez çalıştırıyorsanız, kota artışı talep et gerekli örnekler için.

Kaynaklarınızı ayarlayın

Tüm önkoşulları tamamladıktan sonra çözümü dağıtmaya hazırsınız demektir.

  1. SageMaker not defteri örneği oluşturun. Bu görev için, ml.t3.medium örnek türü. Kodu çalıştırırken kullandığımız docker build SageMaker eğitim görüntüsünü ByteTrack koduyla genişletmek için ( docker build komut, not defteri eşgörünüm ortamında yerel olarak çalıştırılacaktır). Bu nedenle, gelişmiş yapılandırma seçeneklerinden birim boyutunu 100 GB'a (varsayılan birim boyutu 5 GB) yükseltmenizi öneririz. senin için AWS Kimlik ve Erişim Yönetimi (IAM) rolü, mevcut bir rolü seçin veya yeni bir rol oluşturun ve AmazonS3FullAccess, AmazonSNSFullAccess, AmazonSageMakerFullAccess, ve AmazonElasticContainerRegistryPublicFullAccess rol için politikalar.
  2. klonlamak GitHub repo için /home/ec2-user/SageMaker Oluşturduğunuz not defteri örneğindeki klasör.
  3. oluşturmak Yeni Amazon Basit Depolama Hizmeti (Amazon S3) paketini kullanın veya mevcut bir grubu kullanın.

Veri kümesini etiketleyin

içinde veri hazırlama.ipynb notebook, bir MOT16 test video dosyası indiriyoruz ve video dosyasını 200 karelik küçük video dosyalarına bölüyoruz. Ardından, etiketleme için veri kaynağı olarak bu video dosyalarını S3 klasörüne yüklüyoruz.

MOT görevi için veri kümesini etiketlemek için bkz. Başlarken. Etiketleme işi tamamlandığında, S3 kovasındaki iş çıktı konumunda aşağıdaki ek açıklama dizinine erişebiliriz.

The manifests dizin bir içermelidir output tüm dosyaları etiketlemeyi bitirirsek klasör. dosyayı görebiliriz output.manifest içinde output dosya. Bu bildirim dosyası, daha sonra bir modeli eğitmek ve test etmek için kullanabileceğiniz video ve video izleme etiketleri hakkında bilgiler içerir.

Bir ByteTrack modeli eğitin ve özel veri kümesinde hiperparametreleri ayarlayın

ByteTrack modelinizi eğitmek için bytetrack-training.ipynb not defteri. Not defteri aşağıdaki adımlardan oluşur:

  1. SageMaker ayarını sıfırlayın.
  2. Veri ön işleme gerçekleştirin.
  3. Kapsayıcı görüntüsünü oluşturun ve gönderin.
  4. Bir eğitim işi tanımlayın.
  5. Eğitim işini başlatın.
  6. Hiperparametreleri ayarlayın.

Özellikle veri ön işlemede, YOLOX'u eğitebilmemiz için, Ground Truth çıktı formatı ile etiketlenmiş veri setini MOT17 format veri setine ve MOT17 format veri setini MSCOCO format veri setine (aşağıdaki şekilde gösterildiği gibi) dönüştürmemiz gerekir. özel veri kümesindeki model. Hem MOT formatlı veri setini hem de MSCOCO formatlı veri setini tuttuğumuz için, MOT formatlı veri setinde algılama ve izlemeyi ayırmadan diğer MOT algoritmalarını eğitebilirsiniz. Mevcut nesne algılama algoritmanızı kullanmak için dedektörü YOLO7 gibi diğer algoritmalara kolayca değiştirebilirsiniz.

Eğitilmiş ByteTrack modelini dağıtın

YOLOX modelini eğittikten sonra, çıkarım için eğitilmiş modeli konuşlandırıyoruz. SageMaker çeşitli seçenekler sunar gerçek zamanlı çıkarım, eşzamansız çıkarım, sunucusuz çıkarım ve toplu çıkarım gibi model dağıtımı için. Gönderimizde, gerçek zamanlı çıkarım, eşzamansız çıkarım ve toplu çıkarım için örnek kodu kullanıyoruz. Kendi iş gereksinimlerinize göre bu seçeneklerden uygun kodu seçebilirsiniz.

SageMaker toplu dönüştürme, verilerin bölümlere ayrılmasını ve giriş olarak Amazon S3'te depolanmasını gerektirdiğinden ve çağrılar çıkarım uç noktalarına eşzamanlı olarak gönderildiğinden, hedeflerin sıralı bir şekilde gönderilmesi gereken nesne izleme görevlerindeki gereksinimleri karşılamaz. . Bu nedenle, toplu çıkarımı çalıştırmak için SageMaker toplu dönüştürme işlerini kullanmayız. Bu örnekte, toplu çıkarım yapmak için SageMaker işleme işlerini kullanıyoruz.

Aşağıdaki tablo, çıkarım işlerimiz için yapılandırmayı özetlemektedir.

Çıkarım Türü Yükünü İşlem Süresi Otomatik Ölçeklendirme
Gerçek zamanlı MB 6 kadar 1 dakikaya kadar Minimum örnek sayısı 1 veya daha yüksek
eşzamanlı olmayan GB 1 kadar 15 dakikaya kadar Minimum örnek sayısı sıfır olabilir
Toplu iş (işleme işi ile) Limit yok Limit yok Desteklenmez

Gerçek zamanlı bir çıkarım uç noktası dağıtın

Gerçek zamanlı bir çıkarım uç noktası dağıtmak için şu komutu çalıştırabiliriz: bytetrack-çıkarım-yolox.ipynb not defteri. ByteTrack çıkarımını nesne algılama ve izlemeye ayırıyoruz. Çıkarım uç noktasında, YOLOX modelini sadece nesne tespiti için çalıştırıyoruz. Not defterinde bir izleme nesnesi oluşturuyoruz, çıkarım uç noktasından nesne algılama sonucunu alıyoruz ve izleyicileri güncelliyoruz.

Bir ByteTrack modeli oluşturmak ve dağıtmak için aşağıdaki gibi SageMaker PyTorchModel SDK kullanıyoruz:

from sagemaker.pytorch.model import PyTorchModel pytorch_model = PyTorchModel( model_data=s3_model_uri, role=role, source_dir="sagemaker-serving/code", entry_point="inference.py", framework_version="1.7.1", py_version="py3",
) endpoint_name =<endpint name>
pytorch_model.deploy( initial_instance_count=1, instance_type="ml.p3.2xlarge", endpoint_name=endpoint_name
)

Modeli bir uç noktaya başarıyla dağıttıktan sonra, çıkarım uç noktasını aşağıdaki kod parçasıyla çağırabiliriz:

with open(f"datasets/frame_{frame_id}.png", "rb") as f: payload = f.read() response = sm_runtime.invoke_endpoint( EndpointName=endpoint_name, ContentType="application/x-image", Body=payload
)
outputs = json.loads(response["Body"].read().decode())

Uç noktadan algılama sonucunu kabul ettikten sonra izleme görevini client tarafında çalıştırıyoruz (aşağıdaki koda bakınız). İzleme sonuçlarını her karede çizerek ve izleme videosu olarak kaydederek, izleme sonucunu izleme videosunda onaylayabilirsiniz.

aspect_ratio_thresh = 1.6
min_box_area = 10
tracker = BYTETracker( frame_rate=30, track_thresh=0.5, track_buffer=30, mot20=False, match_thresh=0.8 ) online_targets = tracker.update(torch.as_tensor(outputs[0]), [height, width], (800, 1440))
online_tlwhs = []
online_ids = []
online_scores = []
for t in online_targets: tlwh = t.tlwh tid = t.track_id vertical = tlwh[2] / tlwh[3] > aspect_ratio_thresh if tlwh[2] * tlwh[3] > min_box_area and not vertical: online_tlwhs.append(tlwh) online_ids.append(tid) online_scores.append(t.score) results.append( f"{frame_id},{tid},{tlwh[0]:.2f},{tlwh[1]:.2f},{tlwh[2]:.2f},{tlwh[3]:.2f},{t.score:.2f},-1,-1,-1n" )
online_im = plot_tracking( frame, online_tlwhs, online_ids, frame_id=frame_id + 1, fps=1. / timer.average_time
)

Eşzamansız bir çıkarım uç noktası dağıtın

SageMaker eşzamansız çıkarım, büyük yük boyutları (1 GB'a kadar), uzun işlem süreleri (1 saate kadar) ve gerçek zamana yakın gecikme gereksinimleri olan istekler için ideal seçenektir. MOT görevleri için, bir video dosyasının gerçek zamanlı uç noktanın yük sınırı olan 6 MB'ı aşması yaygın bir durumdur. Bu nedenle, eşzamansız bir çıkarım uç noktası dağıtıyoruz. bakın asenkron çıkarım zaman uyumsuz bir uç noktanın nasıl dağıtılacağına ilişkin daha fazla ayrıntı için. Gerçek zamanlı uç nokta için oluşturulan modeli yeniden kullanabiliriz; Bu gönderi için, giriş videosu için nihai izleme sonucunu doğrudan alabilmemiz için çıkarım komut dosyasına bir izleme işlemi koyduk.

Bitiş noktasında ByteTrack ile ilgili scriptleri kullanmak için takip scripti ile modeli aynı klasöre koymamız ve klasörü olduğu gibi sıkıştırmamız gerekiyor. model.tar.gz dosyasını indirin ve ardından model oluşturma için S3 klasörüne yükleyin. Aşağıdaki diyagram yapısını göstermektedir model.tar.gz.

Aşağıdaki kodda gösterildiği gibi, istek boyutunu, yanıt boyutunu ve yanıt zaman aşımını ortam değişkenleri olarak açıkça ayarlamamız gerekiyor. Ortam değişkeninin adı, çerçeveye bağlı olarak değişir. Daha fazla ayrıntı için bkz. Eşzamansız Çıkarsama Uç Noktası Oluşturun.

pytorch_model = PyTorchModel( model_data=s3_model_uri, role=role, entry_point="inference.py", framework_version="1.7.1", sagemaker_session=sm_session, py_version="py3", env={ 'TS_MAX_REQUEST_SIZE': '1000000000', #default max request size is 6 Mb for torchserve, need to update it to support the 1GB input payload 'TS_MAX_RESPONSE_SIZE': '1000000000', 'TS_DEFAULT_RESPONSE_TIMEOUT': '900' # max timeout is 15mins (900 seconds) }
) pytorch_model.create( instance_type="ml.p3.2xlarge",
)

Eşzamansız uç noktayı çağırırken, istekte yükü göndermek yerine giriş videosunun Amazon S3 URL'sini göndeririz. Model çıkarımı videoyu işlemeyi bitirdiğinde, sonuçlar S3 çıkış yoluna kaydedilecektir. yapılandırabiliriz Amazon Basit Bildirim Servisi (Amazon SNS) konuları, böylece sonuçlar hazır olduğunda bildirim olarak bir SNS mesajı alabiliriz.

SageMaker işleme ile toplu çıkarım çalıştırın

1 GB'tan büyük video dosyaları için toplu çıkarım yapmak üzere bir SageMaker işleme işi kullanırız. Bir SageMaker işleme işini çalıştırmak için özel bir Docker konteyneri tanımlarız (aşağıdaki koda bakın). İzleme sonucunu giriş videosuna çiziyoruz. Sonuç videosunu, tarafından tanımlanan S3 klasöründe bulabilirsiniz. s3_output.

from sagemaker.processing import ProcessingInput, ProcessingOutput
script_processor.run( code='./container-batch-inference/predict.py', inputs=[ ProcessingInput(source=s3_input, destination="/opt/ml/processing/input"), ProcessingInput(source=s3_model_uri, destination="/opt/ml/processing/model"), ], outputs=[ ProcessingOutput(source='/opt/ml/processing/output', destination=s3_output), ]
)

Temizlemek

Gereksiz maliyetlerden kaçınmak için, çıkarım uç noktası da dahil olmak üzere bu çözümün bir parçası olarak oluşturduğunuz kaynakları silin.

Sonuç

Bu gönderi, SageMaker'daki en gelişmiş algoritmalardan birini kullanarak özel bir veri kümesine çok nesneli bir izleme çözümünün nasıl uygulanacağını gösterdi. Kendi iş senaryonuz için en uygun seçeneği seçebilmeniz için SageMaker'da üç dağıtım seçeneği de gösterdik. Kullanım durumu düşük gecikme süresi gerektiriyorsa ve bir uç cihaza dağıtılacak bir modele ihtiyaç duyuyorsa, MOT çözümünü uçta şu şekilde dağıtabilirsiniz: AWS Panoraması.

Daha fazla bilgi için, bkz. YOLOX + BYTE-TRACK kullanarak Çoklu Nesne İzleme ve veri analizi.


Yazarlar Hakkında

Gordon Wang, AWS'de Kıdemli Yapay Zeka/ML Uzmanı TAM'dir. Birçok sektördeki AI/ML en iyi uygulamalarıyla stratejik müşterileri destekler. Bilgisayar görüşü, NLP, Üretken Yapay Zeka ve MLOps konusunda tutkulu. Boş zamanlarında koşmayı ve yürüyüş yapmayı sever.

Yanwei Cui, Doktora, AWS'de Kıdemli Makine Öğrenimi Uzmanı Çözüm Mimarıdır. IRISA'da (Bilgisayar Bilimi ve Rastgele Sistemler Araştırma Enstitüsü) makine öğrenimi araştırmasına başladı ve bilgisayar görüşü, doğal dil işleme ve çevrimiçi kullanıcı davranışı tahmininde yapay zeka destekli endüstriyel uygulamalar oluşturma konusunda birkaç yıllık deneyime sahip. AWS'de alan uzmanlığını paylaşıyor ve müşterilerin iş potansiyellerini ortaya çıkarmalarına ve geniş ölçekte makine öğrenimi ile eyleme dönüştürülebilir sonuçlar elde etmelerine yardımcı oluyor. İş dışında kitap okumaktan ve seyahat etmekten hoşlanıyor.

Melanie Li, Doktora, Sidney, Avustralya merkezli AWS'de Kıdemli AI/ML Uzmanı TAM'dir. Kurumsal müşterilerin AWS'deki son teknoloji AI/ML araçlarından yararlanan çözümler oluşturmasına yardımcı olur ve en iyi uygulamalarla makine öğrenimi çözümlerini tasarlama ve uygulama konusunda rehberlik sağlar. Boş zamanlarında açık havada doğayı keşfetmeyi ve ailesi ve arkadaşlarıyla vakit geçirmeyi seviyor.

GuangYang, Amazon ML Solutions Lab'de çeşitli sektörlerdeki müşterilerle çalıştığı ve son teknoloji ML/AI çözümleriyle müşteriler için değer yaratmak üzere yaratıcı problem çözme uyguladığı Kıdemli bir uygulamalı bilim insanıdır.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?