YOLOv7 PlatoBlockchain Veri Zekası ile Python'da Gerçek Zamanlı Nesne Algılama Çıkarımı. Dikey Arama. Ai.

YOLOv7 ile Python'da Gerçek Zamanlı Nesne Algılama Çıkarımı

Giriş

Nesne algılama, bilgisayarla görü alanında geniş bir alandır ve bilgisayarlı görünün “vahşi doğada” en önemli uygulamalarından biridir.

Nesne algılama, görüntü sınıflandırması kadar standartlaştırılmamıştır, çünkü yeni gelişmelerin çoğu tipik olarak büyük kütüphaneler ve çerçeveler yerine bireysel araştırmacılar, bakımcılar ve geliştiriciler tarafından yapılır. Gerekli yardımcı program komut dosyalarını TensorFlow veya PyTorch gibi bir çerçevede paketlemek ve şimdiye kadar geliştirmeyi yönlendiren API yönergelerini sürdürmek zordur.

Bu, nesne algılamayı biraz daha karmaşık, tipik olarak daha ayrıntılı (ancak her zaman değil) ve görüntü sınıflandırmasından daha az ulaşılabilir hale getirir.

Neyse ki kitleler için - Ultralytics, diğer araştırma ve geliştirme ekipleri tarafından YOLOv5 gibi daha yeni sürümlere genişletilen YOLOv7'leri etrafında basit, çok güçlü ve güzel bir nesne algılama API'si geliştirdi.

Bu kısa kılavuzda, son teknoloji YOLOv7 ile Python'da Nesne Algılama gerçekleştireceğiz.

YOLO Manzara ve YOLOv7

YOLO (Sadece Bir Kez Bakarsınız) nesne algılama için oluşturulmuş bir model ailesi olduğu kadar bir metodolojidir. 2015'teki başlangıcından bu yana, YOLOv1, YOLOv2 (YOLOv9000 (YOLO3) ve YOLOvXNUMX aynı yazar(lar) tarafından önerildi - ve derin öğrenme topluluğu, devam eden yıllarda açık kaynaklı gelişmelerle devam etti.

Ultralytics'in YOLOv5'i YOLO'nun PyTorch'ta her zamankinden daha erişilebilir olmasını sağlayan ilk büyük ölçekli uygulamasıdır, ancak YOLOv5'in böyle bir dayanak kazanmasının ana nedeni, aynı zamanda onun etrafında oluşturulmuş güzel, basit ve güçlü API'dir. Proje, özelleştirilebilirliğe, pratik olarak tüm kullanılabilir dışa aktarma biçimlerine izin verirken gereksiz ayrıntıları soyutlar ve tüm projeyi hem verimli hem de olabildiğince optimal hale getiren harika uygulamalar kullanır.

YOLOv5, Nesne Algılama modelleri oluşturmak için hala temel projedir ve YOLO yöntemini geliştirmeyi amaçlayan birçok havuz, temel olarak YOLOv5 ile başlar ve benzer bir API sunar (veya projeyi çatallayın ve üzerine inşa edin). durum böyle YOLOR (Yalnızca Bir Temsil Öğrenirsiniz) ve YOLOR'un üzerine inşa edilen YOLOv7 (aynı yazar). YOLOv7, YOLO metodolojisindeki en son gelişmedir ve en önemlisi, YOLOv7, önceki YOLO modellerinde standart olmayan, yalnızca sınırlayıcı kutu regresyonunun yanı sıra anahtar noktaları (iskeletleri) çıkarabilen ve örnek segmentasyonu gerçekleştirebilen yeni model kafaları sağlar.

Bu, örnek segmentasyonu ve anahtar nokta algılamayı hiç olmadığı kadar hızlı hale getirir!

Ek olarak, YOLOv7 azaltılmış parametre sayısı ve daha yüksek hesaplama verimliliği nedeniyle önceki modellere göre daha hızlı ve daha yüksek doğruluk derecesinde performans gösterir:

YOLOv7 PlatoBlockchain Veri Zekası ile Python'da Gerçek Zamanlı Nesne Algılama Çıkarımı. Dikey Arama. Ai.

Modelin kendisi, mimari değişikliklerin yanı sıra, çıkarım maliyetini artırmadan doğruluğu artıran “ücretsiz çanta” olarak adlandırılan eğitim yönlerini optimize ederek oluşturuldu.

YOLOv7'yi yükleme

YOLOv7'yi kurmak ve kullanmak, GitHub deposunu yerel makinenize indirmek ve onunla birlikte gelen komut dosyalarını çalıştırmaktan ibarettir.

Not: Ne yazık ki, yazarken, YOLOv7, genellikle yüklenen YOLOv5 gibi temiz bir programatik API sunmuyor. torch.hub(), GitHub deposunu içeri aktarıyor. Bu, çalışması gereken ancak şu anda başarısız olan bir özellik gibi görünüyor. Düzeltildikçe kılavuzu güncelleyeceğim veya programatik API'de yeni bir tane yayınlayacağım. Şimdilik - havuzda sağlanan çıkarım komut dosyalarına odaklanacağız.

Buna rağmen, videolar, resimler vb. üzerinde gerçek zamanlı algılama yapabilir ve sonuçları kolayca kaydedebilirsiniz. Proje, kapsamlı bir belgeye sahip olan YOLOv5 ile aynı kuralları takip eder, bu nedenle, eğer varsa, YOLOv5 deposunda daha niş soruların yanıtlarını bulmanız olasıdır.

Depoyu indirelim ve bazı çıkarımlar yapalım:

! git clone https://github.com/WongKinYiu/yolov7.git

Bu bir oluşturur yolov7 projeyi barındıran mevcut çalışma dizininizdeki dizin. O dizine geçelim ve dosyalara bir göz atalım:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

Not: Bir Google Colab Not Defteri'nde sihri çalıştırmanız gerekecek %cd dizininizi değiştirmek istediğiniz her hücrede komut yolov7, sonraki hücre sizi orijinal çalışma dizininize geri döndürür. Yerel Jupyter Not Defterlerinde dizini değiştirme bir Zamanlar sizi içinde tutar, böylece komutu birden çok kez yeniden vermenize gerek kalmaz.

The detect.py algılamaları çalıştıran ve sonuçları altına kaydeden çıkarım komut dosyalarıdır. runs/detect/video_name, burada belirtebilirsiniz video_name çağırırken detect.py komut. export.py modeli ONNX, TFLite vb. gibi çeşitli biçimlere aktarır. train.py özel bir YOLOv7 dedektörü eğitmek için kullanılabilir (başka bir kılavuzun konusu) ve test.py bir dedektörü test etmek için kullanılabilir (bir ağırlık dosyasından yüklenir).

Birkaç ek dizin yapılandırmaları tutar (cfg), örnek veriler (inference), modellerin ve COCO konfigürasyonlarının oluşturulmasına ilişkin veriler (data), Vb

YOLOv7 Boyutları

YOLO tabanlı modeller iyi ölçeklenir ve genellikle daha küçük, daha az doğru modeller ve daha büyük, daha doğru modeller olarak dışa aktarılır. Bunlar daha sonra sırasıyla daha zayıf veya daha güçlü cihazlara dağıtılır.

YOLOv7 çeşitli boyutlar sunar ve bunları MS COCO ile karşılaştırır:

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

Model Test Boyutu APtest AP50testi AP75testi toplu 1 fps parti 32 ortalama süre
YOLOv7 640 %51.4 %69.7 %55.9 161 fps 2.8 ms
YOLOv7-X 640 %53.1 %71.2 %57.8 114 fps 4.3 ms
YOLOv7-W6 1280 %54.9 %72.6 %60.1 84 fps 7.6 ms
YOLOv7-E6 1280 %56.0 %73.5 %61.2 56 fps 12.3 ms
YOLOv7-D6 1280 %56.6 %74.0 %61.8 44 fps 15.0 ms
YOLOv7-E6E 1280 %56.8 %74.4 %62.1 36 fps 18.7 ms

Modelin üzerinde çalışmasını beklediğiniz temel donanıma ve gereken doğruluğa bağlı olarak, aralarında seçim yapabilirsiniz. En küçük model, bir V160'de 640 boyutlu görüntülerde 100 FPS'nin üzerine çıkıyor! Daha yaygın tüketici GPU'larında da tatmin edici gerçek zamanlı performans bekleyebilirsiniz.

YOLOv7 ile Video Çıkarımı

Bir oluşturma inference-data Algılamak istediğiniz görüntüleri ve/veya videoları saklamak için klasör. Aynı dizinde olduğunu varsayarsak, aşağıdakilerle bir algılama komut dosyası çalıştırabiliriz:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

Bu, masaüstünüzde, canlı ilerlemeyi ve çıkarımı kare kare görebileceğiniz ve durumu standart çıktı borumuza çıkarabileceğiniz Qt tabanlı bir video isteyecektir:

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

Projenin CPU tabanlı makinelerde (yukarıdaki çıktıdaki çıkarım adımı başına 1000ms gibi, Intel tabanlı 2017 MacBook Pro'da çalıştırıldığı gibi) yavaş ve GPU tabanlı makinelerde önemli ölçüde daha hızlı (~5ms/kare'ye yakın) çalışacağını unutmayın. bir V100'de). Bunun gibi CPU tabanlı sistemlerde bile, yolov7-tiny.pt koşar 172ms/frame, gerçek zamanlı olmaktan uzak olsa da, bu işlemleri bir CPU'da işlemek için hala çok iyi.

Çalıştırma bittiğinde, ortaya çıkan videoyu altında bulabilirsiniz. runs/video_1 (verdiğimiz isim detect.py arama), olarak kaydedildi .mp4:

YOLOv7 PlatoBlockchain Veri Zekası ile Python'da Gerçek Zamanlı Nesne Algılama Çıkarımı. Dikey Arama. Ai.

Resimlerden Çıkarım

Görüntüler üzerinde çıkarım, aynı işleme, dosya sistemindeki bir görüntünün URL'sini sağlama ve arama detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

Not: Yazma itibariyle, ayarlamış olsanız bile, çıktı etiketleri görüntü boyutuna ölçeklendirmez. --img SIZE. Bu, büyük görüntülerin gerçekten ince sınırlayıcı kutu çizgilerine ve küçük etiketlere sahip olacağı anlamına gelir.

YOLOv7 PlatoBlockchain Veri Zekası ile Python'da Gerçek Zamanlı Nesne Algılama Çıkarımı. Dikey Arama. Ai.

Sonuç

Bu kısa kılavuzda - YOLOR'un üzerine inşa edilen YOLO ailesindeki en son gelişme olan YOLOv7'ye kısa bir göz attık. Depoyu yerel makinenize nasıl kuracağınıza ve videolar ve görüntüler üzerinde önceden eğitilmiş bir ağ ile nesne algılama çıkarım komut dosyalarını nasıl çalıştıracağınıza bir göz attık.

Diğer kılavuzlarda, temel nokta algılama ve örnek segmentasyonundan bahsedeceğiz.

Daha İleri Gitmek – Bilgisayarla Görme için Pratik Derin Öğrenme

Meraklı doğanız daha ileri gitmek istemenizi sağlıyor mu? bizim kontrol etmenizi öneririz Kurs: “Python ile Bilgisayarla Görme için Pratik Derin Öğrenme”.

YOLOv7 PlatoBlockchain Veri Zekası ile Python'da Gerçek Zamanlı Nesne Algılama Çıkarımı. Dikey Arama. Ai.

Başka Bir Bilgisayarla Görme Kursu mu?

MNIST rakamları veya MNIST modası sınıflandırması yapmayacağız. Uzun zaman önce rollerine hizmet ettiler. Çok fazla öğrenme kaynağı, gelişmiş kara kutu mimarilerinin performans yükünü omuzlamasına izin vermeden önce temel veri kümelerine ve temel mimarilere odaklanıyor.

odaklanmak istiyoruz gizemden arındırma, pratiklik, anlayış, sezgi ve gerçek projeler. Öğrenmek istemek Nasıl bir fark yaratabilirsin? Beynimizin görüntüleri işleme biçiminden meme kanseri için araştırma düzeyinde bir derin öğrenme sınıflandırıcısı yazmaya, “halüsinasyon” gören derin öğrenme ağlarına, size ilkeleri ve teoriyi pratik çalışmalarla öğreterek, sizi aşağıdaki bilgilerle donatmaya kadar bir yolculuğa çıkaracağız. bilgisayar vizyonunu çözmek için derin öğrenmeyi uygulamada uzman olmak için teknik bilgi ve araçlar.

İçinde ne var?

  • Görmenin ilk ilkeleri ve bilgisayarlara “görmeyi” nasıl öğretebiliriz?
  • Bilgisayarla görmenin farklı görevleri ve uygulamaları
  • İşinizi kolaylaştıracak ticaret araçları
  • Bilgisayarla görü için veri kümelerini bulma, oluşturma ve kullanma
  • Evrişimli Sinir Ağlarının teorisi ve uygulaması
  • Veri kümelerinde etki alanı kayması, birlikte oluşma ve diğer önyargıları işleme
  • Öğrenimi aktarın ve başkalarının eğitim süresini ve hesaplama kaynaklarını kendi yararınıza kullanın
  • Son teknoloji bir meme kanseri sınıflandırıcısı oluşturmak ve eğitmek
  • Ana akım fikirlere sağlıklı bir şüphecilik dozu nasıl uygulanır ve yaygın olarak benimsenen tekniklerin sonuçları nasıl anlaşılır?
  • t-SNE ve PCA kullanarak ConvNet'in “kavram uzayını” görselleştirme
  • Şirketlerin daha iyi sonuçlar elde etmek için bilgisayarlı görme tekniklerini nasıl kullandıklarına dair vaka çalışmaları
  • Uygun model değerlendirmesi, gizli uzay görselleştirmesi ve modelin dikkatinin belirlenmesi
  • Alan araştırması yapmak, kendi veri kümelerinizi işlemek ve model testleri oluşturmak
  • Son teknoloji mimariler, fikirlerin ilerlemesi, onları benzersiz kılan nedir ve nasıl uygulanacağı
  • KerasCV – son teknoloji işlem hatları ve modeller oluşturmak için bir WIP kitaplığı
  • Makaleleri nasıl ayrıştırıp okuyabilir ve bunları kendiniz uygulayabilirsiniz
  • Uygulamanıza bağlı olarak model seçimi
  • Uçtan uca bir makine öğrenimi ardışık düzeni oluşturma
  • Daha Hızlı R-CNN'ler, RetinaNet'ler, SSD'ler ve YOLO ile nesne algılamada manzara ve sezgi
  • Örnek ve anlamsal segmentasyon
  • YOLOv5 ile Gerçek Zamanlı Nesne Tanıma
  • YOLOv5 Nesne Dedektörlerinin Eğitimi
  • KerasNLP (endüstri gücünde WIP kitaplığı) kullanarak Transformers ile çalışma
  • Görüntülerin altyazılarını oluşturmak için Transformers'ı ConvNets ile entegre etme
  • DeepDream
  • Bilgisayarla görme için Derin Öğrenme modeli optimizasyonu

Zaman Damgası:

Den fazla Yığın kötüye kullanımı