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:
- 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.
- Bir ByteTrack modeli eğitin ve özel bir veri kümesinde hiperparametreleri ayarlayın.
- 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.
Önkoşullar
Başlamadan önce aşağıdaki ön koşulları tamamlayın:
- Bir AWS hesabı oluşturun veya mevcut bir AWS hesabını kullanın.
- Kaynak kodunu şu şekilde çalıştırmanızı öneririz:
us-east-1
Bölge. - En az bir GPU örneğiniz olduğundan emin olun (örneğin,
ml.p3.2xlarge
tek GPU eğitimi için veyaml.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. - En az bir GPU örneğiniz olduğundan emin olun (örneğin,
ml.p3.2xlarge
) çıkarım uç noktası için. - 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.
- 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ızdocker 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 veAmazonS3FullAccess
,AmazonSNSFullAccess
,AmazonSageMakerFullAccess
, veAmazonElasticContainerRegistryPublicFullAccess
rol için politikalar. - klonlamak GitHub repo için
/home/ec2-user/SageMaker
Oluşturduğunuz not defteri örneğindeki klasör. - 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:
- SageMaker ayarını sıfırlayın.
- Veri ön işleme gerçekleştirin.
- Kapsayıcı görüntüsünü oluşturun ve gönderin.
- Bir eğitim işi tanımlayın.
- Eğitim işini başlatın.
- 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:
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:
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.
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.
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
.
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.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoAiStream. Web3 Veri Zekası. Bilgi Genişletildi. Buradan Erişin.
- Adryenn Ashley ile Geleceği Basmak. Buradan Erişin.
- PREIPO® ile PRE-IPO Şirketlerinde Hisse Al ve Sat. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/implement-a-multi-object-tracking-solution-on-a-custom-dataset-with-amazon-sagemaker/