Li Lin pyimagesearch'ten derlendi
Yazar Adrian Rosebrock
Qubit Raporu | Genel Hesap QbitAI
OpenCV, 2000 yılında piyasaya sürülen açık kaynaklı bir bilgisayar görme kitaplığıdır. Nesne tanıma, görüntü bölümleme, yüz tanıma ve hareket tanıma gibi çeşitli işlevlere sahiptir.Linux, Windows, Android, Mac OS ve diğer işletim sistemlerinde çalışabilir. Yüksek seviyeli, yüksek verimliliğiyle ünlüdür ve çoklu dil arayüzleri sağlar.
OpenCV'nin son sürümü bize daha iyi derin öğrenme desteği sağladı.OpenCV'de önceden eğitilmiş derin öğrenme modellerini kullanmak çok kolay hale geldi.
Pyimagesearch web sitesi bugün, görüntü tanıma için OpenCV + derin öğrenme ön eğitim modelinin kullanımına ilişkin bir eğitim yayınladı. Kübitler aşağıdaki gibi derlenmiş ve düzenlenmiştir:
Son zamanlarda OpenCV 3.3, derin öğrenme için daha iyi destek sağlayan resmi olarak piyasaya sürüldü (dnn modülü) dnn modülü şu anda Caffe, TensorFlow, Torch ve PyTorch gibi derin öğrenme çerçevelerini desteklemektedir.
Ek olarak, yeni sürümde önceden eğitilmiş derin öğrenme modellerini kullanan API, hem C ++ hem de Python ile uyumludur ve işlem serisini çok basit hale getirir:
Modeli sabit diskten yükleyin;
Giriş görüntüsünü önceden işleyin;
Çıktı sınıflandırmasını elde etmek için görüntüyü ağa girin.
Tabii ki, derin öğrenme modellerini eğitmek için OpenCV'yi kullanamayız ve kullanmamalıyız, ancak bu yeni sürüm, derin öğrenme çerçeveleriyle eğitilmiş modelleri almamıza ve bunları OpenCV'de verimli bir şekilde kullanmamıza izin veriyor.
Bu makale, görüntüleri tanımak için ImageNet üzerinde önceden eğitilmiş derin öğrenme modelinin nasıl kullanılacağını gösterir.
OpenCV 3.1 sürümünden beri, dnn modülü opencv_contrib kitaplığının bir parçası olmuştur ve 3.3 sürümünde ana depoda bahsedilmiştir.
OpenCV 3.3 ile önceden eğitilmiş derin öğrenme modellerinden faydalanabilir ve bunları sınıflandırıcı olarak kullanabilirsiniz.
OpenCV'nin yeni sürümü aşağıdaki popüler ağ mimarileri ile uyumludur:
AlexNet
GoogLeNet v1 (Inception-5h olarak da adlandırılır)
ResNet-34/50 / ...
SqueezeNet v1.1
VGG tabanlı FCN
ENet
VGG tabanlı SSD
MobileNet tabanlı SSD
Bu modülün ana katılımcısı olan Rynikov Alexander'ın bu modül için iddialı planları var. Ancak, yazdığı sürüm notları Rusça. İlgileniyorsanız, lütfen Google çevirisiyle okuyun: https://habrahabr.ru/company/intel / blog / 333612 /
Dnn modülünün OpenCV topluluğu üzerinde büyük bir etkisi olacağını düşünüyorum.
OpenCV'de derin öğrenme ön eğitim modelini kullanmak için öncelikle OpenCV 3.3'ü yüklemelisiniz.Kübitlerin kurulum süreci detaylı olarak anlatılmayacaktır ...
Aşağıda kullanacağımız işlevlerden bazıları verilmiştir.
Diskten resimleri dnn olarak yükleyin:
cv2.dnn.blobFromImage
cv2.dnn.blobFromImages
Modelleri çeşitli çerçevelerden doğrudan dışa aktarmak için "oluştur" yöntemini kullanın:
cv2.dnn.createCaffeImporter
cv2.dnn.createTensorFlowImporter
cv2.dnn.createTorchImporter
Serileştirilmiş modeli doğrudan diskten yüklemek için "okuma" yöntemini kullanın:
cv2.dnn.readNetFromCaffe
cv2.dnn.readNetFromTensorFlow
cv2.dnn.readNetFromTorch
cv2.dnn.readhTorchBlob
Modeli diskten yükledikten sonra, görüntülerimizi iletmek ve sınıflandırma sonuçlarını elde etmek için .forward yöntemini kullanabiliriz.
Ardından, görüntü tanıma için Python, OpenCV ve önceden eğitilmiş bir Caffe modelinin nasıl kullanılacağını öğrenelim.
Aşağıda kullanılan derin öğrenme modeli, ImageNet üzerinde önceden eğitilmiş GoogleLeNet'tir. GoogleLeNet, Szegedy ve diğerleri tarafından yazılan Going Deeper with Convolutions adlı 2014 tarihli makaleden alınmıştır. Ayrıntılar için bkz: https://arxiv.org/abs/1409.4842
Öncelikle yeni bir dosya açın, bunu deep_learning_with_opencv.py olarak adlandırın, ihtiyacımız olan paketi içe aktarmak için aşağıdaki kodu ekleyin:
Ardından komut satırı parametrelerini sökün:
8. satır ap = argparse.ArgumentParser (), parametre ayrıştırıcısını oluşturmak için kullanılır ve aşağıdaki kod, 4 komut satırı parametresi oluşturmak için kullanılır:
- Görüntü: giriş görüntüsünün yolu;
Prototxt: prototxt için Caffe dağıtım yolu
Model: ağ ağırlıkları vb. Gibi önceden eğitilmiş Caffe modeli;
Etiketler: Eşzamanlı kümeler gibi ImageNet etiketlerinin yolu.
Parametreleri oluşturduktan sonra, onları ayrıştırır ve daha sonra kullanmak üzere bir değişken args içinde saklarız.
Ardından, giriş görüntüsünü ve etiketi yükleyin:
Satır 20, görüntüyü diskten yükler ve 23. ve 24. satırlar bu etiketleri yükler:
Etiketleri bitirdikten sonra dnn modülüne bir göz atalım:
Yukarıdaki kodda yer alan yorumlara dikkat edin, bilinen bir blob şekli oluşturmak için giriş görüntüsünü normalleştirmek üzere ortalama çıkarma işlemi gerçekleştirmek için cv2.dnn.blobFromImage kullanırız.
Ardından modelimizi diskten yükleyin:
Cv2.dnn.readNetFromCaffe'yi, önceden eğitilmiş modelin yanı sıra Caffe model tanımı prototxt dosyasını yüklemek için kullanıyoruz.
Daha sonra, sinir ağında ileri yayılımı tamamlamak için girdi olarak blob kullanıyoruz:
Lütfen dikkat: Bir CNN eğitmiyoruz, ancak önceden eğitilmiş bir model kullanıyoruz, bu nedenle, geri yayınlama olmadan sonucu almak için yalnızca blobu ağdan geçirmemiz gerekiyor.
Son olarak, giriş resmi için en yüksek sıralamaya sahip 5 tahmin sonucunu çıkaralım:
En iyi 5 sonucu seçmek için NumPy'yi kullanabilir ve ardından bunları gösterebiliriz:
OpenCV'de Python kodu ile derin öğrenme görüntü tanımayı uyguladık. Şimdi denemek için birkaç fotoğraf çekebilirsiniz.
Terminalinizi açın ve aşağıdaki komutu yürütün:
Bu sonucu alacak:
OpenCV ve GoogleLeNet, Beagle'ı doğru bir şekilde tanıdı, ilk sıralamanın sonucu doğrudur ve aşağıdaki 4 sonuç da oldukça ilişkilidir.
Sonucu almak için bu algoritmayı CPU üzerinde çalıştırmak yalnızca bir saniyeden az sürer.
Bir parça daha:
Sonuçlar aşağıdaki gibidir:
Tekrar gel:
Sonuç hala iyi:
Son örnek:
Ayrıca iyi tanınan:
Orijinal eğitim:
İlgili kod:
E-postayı almak için orijinal metnin altına doldurun veya elde etmek için QbitAI diyalog arayüzünde "OpenCV" ye yanıt verin.
- Bitiş -
Samimi işe alım
Qubit, editörleri / muhabirleri işe alıyor ve merkezi Pekin, Zhongguancun'da bulunuyor. Yetenekli ve hevesli öğrencilerin bize katılmasını dört gözle bekliyoruz! Ayrıntılar için, lütfen QbitAI diyalog arayüzünde "işe alım" kelimesiyle yanıt verin.
Qubit QbitAI
' ' Yapay zeka teknolojisi ve ürünlerindeki yeni eğilimleri takip edin