Bu makale, nesne algılama için YOLO'nun (Yalnızca Bir Kez Bakarsınız) nasıl kullanılacağını ayrıntılı olarak analiz edecektir. Bu tekniği tam olarak anlamak için önce nesne sınıflandırması, algılama ve bölümleme arasındaki farkı bilmelisiniz.
Resim kaynağı: https://goo.gl/BPtB4f
Sistemin, görüntü etiketini tahmin eden bir sınıflandırıcıya eşdeğer olan görüntü içeriğinin niteliklerini tahmin etmeye çalıştığı süreçtir.
Basitçe söylemek gerekirse, kedileri ve köpekleri öngören bir sınıflandırma sistemi varsa, sistem (veya sınıflandırıcı) içine girilen tüm test görüntülerini tahmin edecek ve sınıflandıracaktır. Şu anda, görüntü sınıflandırması için etiketler köpek ve kedidir.
Not: Herhangi bir sınıflandırıcı yalnızca eğitim aldığı sınıf etiketini tahmin edebilir. Bu nedenle, yukarıdaki durumda, giriş görüntüsü bir fil olsa bile, sınıflandırıcı yalnızca bir köpek veya kedi çıktısı verecektir. Filleri tanımak için, sistemin tamamı fil veri setine göre sıfırdan eğitilmelidir (veya önceden eğitilmiş bir modelden yüklenmelidir).
Nesne sınıflandırma yöntemi
Yukarıdaki şekil, soyut özellikleri temsil etmek için pikselleri kullanmanın genel bir yöntemini göstermektedir. Alt katman, orijinal piksellerdir, yukarıdaki pikseller, düşük seviyeli özellikler oluşturmak için birleştirilir ve düşük seviyeli özellikler, yüksek seviyeli özellikler oluşturmak için birleştirilir.
Sınıflandırma problemlerini çözmek için mevcut herhangi bir makine öğrenimi ve derin öğrenme tekniklerini uygulayabiliriz. Dahil etmek:
· Görüntü özelliklerinin iki sınıflandırması
· Görüntü özelliklerine dayalı vektör makinesini destekleyin
Görüntü özelliklerine dayalı yapay sinir ağı
Görüntü özelliklerine dayalı evrişimli sinir ağı
Bunlar arasında CNN (Convolutional Neural Network), en iyi görüntü sınıflandırma mimarilerinden biridir. En son modellerin tümü bir dereceye kadar CNN ile birleştirilir ve bu da gücünü kanıtlar.
Nesne algılama, bilgisayarla görme ve görüntü işleme ile ilgili bir bilgisayar teknolojisidir.Dijital görüntülerde ve videolarda belirli türde anlamsal nesneleri (insanlar, binalar veya arabalar gibi) algılayabilir. Daha çok üzerinde çalışılan nesne algılama alanları arasında yüz algılama ve yaya algılama bulunmaktadır. Nesne algılama, görüntü alma ve video gözetimi dahil olmak üzere birçok bilgisayar görüş alanına uygulanabilir.
Daha geleneksel bir anlamda, sahnedeki her nesneyi algılamayı, etiketlerini sınıflandırmayı ve nesnenin sınırlayıcı kutusunu (veya çokgenini) bulmayı ifade eder.
Son bölüm aşağıdaki en son teknolojileri içerir:
· YOLO
· RetinaNet
· RCNN
· Hızlı RCNN
· Daha hızlı RCNN
· RCNN'yi Maske
Yalnızca Bir Kez Bakarsınız, en gelişmiş gerçek zamanlı nesne algılama sistemidir. Başlangıçta 2015 civarında geliştirildi ve o sırada diğer teknolojilerden biraz daha iyiydi.
YOLO, CNN ve çapa çerçevelerine dayalı basit bir mimariye sahiptir ve yaygın kullanım sorunları için gerçek zamanlı bir nesne algılama teknolojisidir. Zamanın ilerlemesiyle, YOLO yinelemeye ve daha hızlı ve daha iyi olmaya devam ediyor. Geçmiş sürümler şunları içerir:
· YOLO V1
· YOLO V2
· YOLO V3
YOLO V2'nin doğruluğu ve hızı V1'den daha iyidir.
YOLO V3'ün hızı yükseltilmemiş olmasına rağmen, V2'den daha doğrudur.
Referanslar
1. https://arxiv.org/abs/1506.02640
2. YOLO V3: https://pjreddie.com/media/files/papers/YOLOv3.pdf
YOLO nasıl çalışır?
YOLO, görüntüyü 13 × 13 hücreye böler: her hücre 5 sınırlayıcı kutuyu tahmin etmekten sorumludur. Sınırlayıcı kutu, nesneyi çevreleyen dikdörtgeni tanımlar. YOLO ayrıca, tahmin edilen sınırlayıcı kutunun aslında bir nesneyi ne kadar iyi içerdiğini bize söyleyen bir güven düzeyi de verir.
Önceki algılama sistemleri, algılama için sınıflandırıcılar veya konumlandırıcılar kullandı, modeli görüntünün birden çok konumuna ve ölçeğine uyguladı ve görüntünün yüksek puanlı alanını algılama hedefi olarak kullandı.
YOLO tamamen farklı bir yaklaşım benimsedi. Tüm görüntüye tek bir sinir ağı uygular Ağ, görüntüyü bölgelere böler, her bölgenin sınırlayıcı kutusunu ve olasılığını tahmin eder ve olasılığa göre tüm sınırlayıcı kutulara ağırlık atar.
YOLO V3 daha doğrudur. Aşağıdaki şekil YOLO V3'ün genel mimarisini göstermektedir:
YOLO nasıl edinilir
YOLO ikili dosyaları (ve kaynakları) aşağıdaki kaynaklardan indirilebilir:
· Https://pjreddie.com/darknet/yolo/
· GitHub: https://github.com/pjreddie/darknet
YOLO, darknet'e dayanır ve C'nin içine yerleştirilmiştir. Darknet, C dili ve CUDA ile yazılmış açık kaynaklı bir sinir ağı çerçevesidir.
YOLO nasıl kullanılır
I. Depoyu alın
git klon https://github.com/pjreddie/darknetII. Derleme kaynağı
Kaynağı doğrudan make ile derleyebilirsiniz. Elde ettiğiniz darknet dizinine gidin ve aşağıdaki komutu çalıştırın:
https://github.com/pjreddie/darknetNot: Make, C kaynak dosyalarını derleme talimatlarından oluşan Makefile'ı kullanır.
Yapma işlemini tamamladıktan sonra, YOLO'yu çalıştırmak için kullanılabilecek ikili yürütülebilir dosya olan darknet adlı bir dosya alacaksınız.
III. Darknet yürütme izinlerini alın
./Darknet komutunu çalıştırırken, izin hatası alırsanız, bu, kullanıcının ikili dosyayı çalıştırmak için yürütülebilir izne sahip olmadığı anlamına gelir. Aşağıdaki komutu girmeniz yeterlidir:
chmod u + x darknetDaha sonra darknet çalıştırılabilir.
YOLO yapısı
I. Yapılandırma dosyası
YOLO tamamen tak ve çalıştır, yani YOLO her türlü nesneyi algılayacak şekilde yapılandırılabilir. Aslında, CNN mimarisini de değiştirebilir ve kendiniz kullanabilirsiniz. YOLO bunu cfg / altındaki yapılandırma dosyalarını kullanarak başarır.
Yapılandırma dosyası .cfg ile biter.
Yapılandırma dosyası temel olarak şunları içerir:
· CNN mimarisi (hiyerarşi ve aktivasyon)
· Ankraj Çerçevesi
· Kategori sayısı
· Öğrenme oranı
Optimizasyon teknolojisi
· Giriş boyutu
Olasılık puanı eşiği
· Parti boyutu
Farklı sürümlere bağlı olarak, V1 ila V3 gibi birden fazla konfigürasyon olabilir veya eğitimi küçük bir seviyede tamamlayabilirsiniz. Aşağıdaki iki web sitesinden farklı konfigürasyonlar indirilebilir:
· YOLOV3 (dolu): https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg
· Tiny YOLO V3: https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg
II. Ağırlık
Her konfigürasyonun ilgili eğitim öncesi ağırlıkları vardır. Burada sadece YOLO V3 alıntılanmıştır.
· Tam ağırlık
YOLO V3 tam ağırlık indirme:
https://pjreddie.com/media/files/yolov3.weights.
9.000'den fazla kategori içerir.
· Küçük ağırlık
80 YOLO V3 eğitimli kategorinin ağırlıkları:
https://pjreddie.com/media/files/yolov3-tiny.weights.
YOLO'yu test et
Yukarıda belirtildiği gibi, tüm işlemler darknet yürütülebilir dosyalar ile yürütülür. Diyelim ki test.jpeg adında bir görüntü var, nesneyi aşağıdaki gibi tahmin etmeyi deneyebilirsiniz:
./darknet yolov3-tiny.cfg yolov3-tiny.weights test.jpeg algıladıGenellikle .cfg, cfg / dizinindedir. Ağırlıklar / dizinde yolov3-tiny olduğunu varsayarsak, komut şudur:
./darknet cfg / yolov3-tiny.cfg ağırlıklarını / yolov3-tiny.weights test.jpeg'i algılarÇalıştırıldıktan sonra, darknet dosyasının aynı dizininde tahminler.jpeg adında bir görüntü olacaktır. Tahmin türünü ve ilgili sınırlayıcı kutuyu görüntüleyebilirsiniz.
Eğitim
Eğitim biraz daha karmaşık çünkü işler ve yapılandırmalar doğru olmalı. Aşağıdaki komut bunu yapabilir:
./darknet dedektör treni özel / cfg / obj.data özel / cfg / tiny-yolo.cfg özel / tiny-yolo_100.weightsEğitim komutu ayrıştırma
Burada .cfg ve .weights, daha önce bahsedilen yapılandırma ve ağırlık dosyalarını ifade eder. Öncelikle aşağıdaki içerikle obj.data dosyasını kullanın:
sınıflar = 1 train = custom / cfg / train.txt valid = özel / cfg / test.txt isimler = obj.names yedekleme = yedekleme /obj.names
Dosya bir dizi kategori adı içerir. Örneğin:
kedi köpek arka fon bisiklettrain.txt
Bu dosya, ağa beslenecek bir dizi eğitim görüntüsü içerir. Dosya adı çok benzer:
özel / tren-resimleri / 11.jpg özel / tren resimleri / 12.jpg özel / tren resimleri / 13.jpg ... ...Burada tren görüntüleri / tüm eğitim görüntülerini içerir. Bu dizin, görüntülere ek olarak, görüntülere karşılık gelen sınırlayıcı kutu metin dosyalarını da içerir.
Böylece özel / train-images / 11.txt aldık, içerik:
00,325024801587301570,39500661375661380,128968253968253980,09523809523809523İlk sayı, nesne adlarında karşılık gelen kimliği veya kategoriyi temsil eder ve kalan sayılar sınırlayıcı kutuyu temsil eder. Birden çok kategoride birden fazla kutu varsa, o zaman şöyle olmalıdır:
00,325024801587301570,39500661375661380,128968253968253980,095238095238095230 0.525024801587301570.39500661375661380.128968253968253980.095238095238095231 0,325024801587301570,39500661375661380,128968253968253980,09523809523809523test.txt
Bu dosya bazı test görüntüleri içerir.
Not: .cfg'de kategori sayısı, obj.names'te bulunan toplam kategori sayısına değiştirilmelidir.
Yukarıdakiler YOLO'nun nasıl kullanılacağıdır. Yukarıdaki gösterim işlemi Linux sistemine dayanmaktadır ve Windows sistemi için adımlar benzerdir.
Yorum Beğen Takip Et
AI öğrenme ve geliştirmenin kuru mallarını paylaşalım
Tam platform yapay zeka dikey öz medya "temel okuma" yı takip etmeye hoş geldiniz