YOLOv5 ve PyTorch PlatoBlockchain Veri Zekası ile Python'da Nesne Algılama Çıkarımı. Dikey Arama. Ai.

YOLOv5 ve PyTorch ile Python'da 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. Bir tarafta, ister görevleri yerine getiren robotlar isterse kendi kendini süren arabalar olsun, ajanları ortamlarda yönlendiren otonom sistemler oluşturmak için kullanılabilir, ancak bu diğer alanlarla kesişmeyi gerektirir. Bununla birlikte, anormallik tespiti (hattaki kusurlu ürünler gibi), görüntüler içindeki nesneleri bulma, yüz algılama ve diğer çeşitli nesne algılama uygulamaları, diğer alanlar ile kesişmeden yapılabilir.

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. Bir ekosistemde olmanın en büyük faydalarından biri, size iyi uygulamalar, araçlar ve kullanım yaklaşımları hakkında faydalı bilgiler aramamanız için bir yol sağlamasıdır. Nesne algılama ile - çoğu insan iyi bir kavrama elde etmek için alanın manzarası üzerinde çok daha fazla araştırma yapmak zorundadır.

Neyse ki kitleler için – Ultralytics, YOLOv5 uygulamaları etrafında basit, çok güçlü ve güzel bir nesne algılama API'si geliştirdi.

Bu kısa kılavuzda, MS COCO üzerinde eğitilmiş bir dizi önceden eğitilmiş ağırlık kullanarak PyTorch'ta Ultralytics tarafından oluşturulan YOLOv5 ile Python'da Nesne Algılama gerçekleştireceğiz.

YOLOv5

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. Gerçekten, açık kaynaklı yazılım uygulamasının güzelliğinin ve içinde yaşadığımız dünyayı nasıl güçlendirdiğinin bir örneğidir.

Proje, hem karşılaştırma yapmak hem de genel nesne algılama sistemleri oluşturmak için kullanılabilen, bağlam içindeki nesnelere ilişkin temel bir veri kümesi olan MS COCO üzerinde önceden eğitilmiş ağırlıklar sağlar; veri kümeleri.

YOLOv5 ile Nesne Algılama

İlerlemeden önce, sahip olduğunuzdan emin olun. torch ve torchvision Kurulmuş:

! python -m pip install torch torchvision

YOLOv5, repo'nun kendisinde ve aşağıdaki örnekte gösterildiği gibi ayrıntılı, saçma sapan belgelere ve güzel ve basit bir API'ye sahiptir:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Muhalefetin ikinci argümanı hub.load() yöntem, kullanmak istediğimiz ağırlıkları belirtir. arasında herhangi bir yer seçerek yolov5n için yolov5l6 – MS COCO önceden eğitilmiş ağırlıkları yüklüyoruz. Özel modeller için:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

Her durumda – girdiyi modelden geçirdiğinizde, döndürülen nesne sonuçları yorumlamak için yararlı yöntemler içerir ve biz de bunu yapmayı seçtik. render() onları, bir araya getirebileceğimiz bir NumPy dizisi döndüren imshow() aramak. Bu, güzel biçimlendirilmiş bir sonuçla sonuçlanır:

Sonuçları Dosya Olarak Kaydetme

Çıkarımın sonuçlarını bir dosya olarak kaydedebilirsiniz. results.save() yöntem:

results.save(save_dir='results')

Bu, halihazırda mevcut değilse yeni bir dizin oluşturacak ve az önce çizdiğimiz aynı görüntüyü bir dosya olarak kaydedecektir.

Nesneleri Kırpma

Algılanan nesneleri tek tek dosyalar olarak kırpmaya da karar verebilirsiniz. Bizim durumumuzda, tespit edilen her etiket için bir dizi görüntü çıkarılabilir. Bu, aracılığıyla kolayca elde edilir. results.crop() r oluşturan yöntem, runs/detect/ dizin, ile expN/crops (N her çalıştırma için artar), burada her etiket için kırpılmış görüntüler içeren bir dizin oluşturulur:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Çıktı dosyası yapısını aşağıdakilerle de doğrulayabilirsiniz:

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!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Nesne Sayma

Varsayılan olarak, algılama gerçekleştirdiğinizde veya results nesne - bunun için çıkarımın yapıldığı görüntülerin sayısını alırsınız results nesne (YOLOv5, görüntü gruplarıyla da çalışır), çözünürlüğü ve algılanan her etiketin sayısı:

print(results)

Bunun sonucu:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Komut Dosyaları ile Çıkarım

Alternatif olarak, algılama komut dosyasını çalıştırabilirsiniz, detect.py, YOLOv5 deposunu klonlayarak:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

Ve sonra koşuyor:

$ python detect.py --source img.jpg

Alternatif olarak, bir URL, video dosyası, birden fazla dosya içeren bir dizine giden yol, yalnızca belirli dosyalar için eşleşecek bir yolda bir glob, bir YouTube bağlantısı veya başka bir HTTP akışı sağlayabilirsiniz. Sonuçlar şuraya kaydedilir: runs/detect dizin.

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”.

YOLOv5 ve PyTorch PlatoBlockchain Veri Zekası ile Python'da 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

Sonuç

Bu kısa kılavuzda, PyTorch kullanılarak oluşturulan YOLOv5 ile nesne algılamayı nasıl gerçekleştirebileceğinize bir göz attık.

Zaman Damgası:

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