Makalelerimize ve videolarımıza yapılan yorumlarda, yüz tanıma, plaka tanıma, duygu/cinsiyet tanıma gibi görevlerle ilgili ara sıra sorular alıyoruz. Bunlar, çok aşamalı çıkarım kullanmak istediğiniz durumların hepsidir. Bilgisayarla Görme alanında çok aşamalı çıkarım genellikle tek bir çoklu model boru hattında nesne tespiti ve görüntü sınıflandırmasının bir kombinasyonunu içerir.
Çok aşamalı çıkarım kullanmanın ana faydası nedir?
Genel olarak nesne tespiti ağları ve özellikle gömülü cihazlarda kullanılanlar, genellikle benzer nesne sınıfları arasında ayrım yapmada pek iyi değildir.

Bu nedenle, sıkça gördüğümüz şey, nesne tespiti ağlarını kullanarak büyük bir nesne sınıfını, örneğin yüzler, arabalar veya köpekler gibi tespit etmek ve ardından tespit sonucunu kesip yeniden ölçeklendirerek görüntü sınıflandırma ağına beslemektir; bu da çok daha ayrıntılı bir çıktı verir, örneğin, yüz ifadesi, araba modeli veya köpek cinsi.

Çok aşamalı çıkarım için bir diğer popüler kullanım durumu OCR (optik karakter tanıma) – tüm görüntüdeki her karakterin tespit edilmesi yerine, bu kaynak yoğun ve hata yapmaya eğilimli bir işlem olduğundan, genellikle metin önce tespit edilir ve ardından büyük görüntüden kesilen metin parçaları üzerinde tanıma yapılır.
Bu makale için, araba modeli tanımayı bir örnek olarak alalım. Edge Impulse’da bir araba tespit cihazı eğitin – bu oldukça kolay olmalı, çünkü transfer öğrenimi kullanıyoruz ve temel model zaten arabaları tespit etmek için eğitildi, bu nedenle gerekli özellik haritalarını içeriyor.

Görüntü tanıma modeli eğitimi için, 6 araba modeli sınıfı içeren Stanford Cars veri setinin bir alt kümesini kullanacağız – dışarıda yürürken Shenzhen, Çin’de karşılaşabileceğimi düşündüğüm 6 araba sınıfı seçtim.

Modelleri eğittikten sonra ve isteğe bağlı olarak, internetten alınan resimlerde tespit ve tanıma doğruluğunu kontrol ettikten sonra, bunları gömülü bir cihaza dağıtalım. Ben, sağlam bir plastik kasada dokunmatik ekranı olan Raspberry Pi Compute Module 4 tabanlı reTerminal’ı kullandım – bu tür saha gezileri için oldukça kullanışlı.
Raspberry Pi Compute Module 4, Raspberry Pi 4 geliştirme kartıyla aynı CPU’ya sahiptir, ancak yerleşik eMMC bellek ekleme seçeneği vardır – reTerminal’daki modül 4 GB RAM ve 32 GB eMMC’ye sahiptir.
Öncelikle, hem tespit hem de sınıflandırma modellerini edge-impulse-linux-runner yardımıyla indirmeniz gerekecek. reTerminal’a (veya Raspberry Pi’ye) edge-impulse-runner’ı kurmak için resmi belgeleri kontrol edin. Kurulum tamamlandıktan sonra, modelleri indirmek için aşağıdaki komutları çalıştırın:
edge-impulse-linux-runner --download car_detector.eim
edge-impulse-linux-runner --clean
edge-impulse-linux-runner --download car_classifier.eim
Çok aşamalı çıkarım betiği, görüntü sınıflandırma/nesne tespiti betiklerine çok benzer, ancak tahmin edebileceğiniz gibi her iki modeli de içerir – kodu bu Github deposunda bulabilirsiniz. Kodu çalıştırmadan önce tüm bağımlılıkları yüklemeyi unutmayın:
sudo apt-get install libatlas-base-dev libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
pip3 install install edge_impulse_linux -i https://pypi.python.org/simple
python3 multi_stage.py car_detector.eim car_classifier.eim
Alternatif olarak, seçtiğiniz başka bir çıkarım çerçevesini kullanarak çok aşamalı çıkarım yapabilirsiniz. Bunun için hazırladığım Jupyter Notebook’a göz atın; bu, kenar cihazlarında AI için Keras tabanlı bir çerçeve olan aXeleRate‘i kullanıyor. Orada, araçları tespit etmek için küçük bir MobileNet v1 alpha 0.25 YOLOv3 ve Stanford araç veri setindeki tüm arabaları sınıflandırmak için biraz daha büyük bir MobileNet v1 alpha 0.5 eğittim. Jupyter Notebook, eğitim örneklerini içeriyor – eğer bunları Raspberry Pi veya reTerminal’da çalıştırmak isterseniz, buradan kodu indirin ve çalıştırın.
python3 multi_stage_file.py --first_stage yolo_best_recall.tflite --second_stage classifier_best_accuracy.tflite --labels labels.txt --file ../../sample_files/cars.mp4
video dosyasında çıkarım yapmak için ve
python3 multi_stage_stream.py --first_stage yolo_best_recall.tflite --second_stage classifier_best_accuracy.tflite --labels labels.txt
web kamerasından video akışında çıkarım yapmak için.
Sonuç olarak, çok aşamalı çıkarıma gerçekten ihtiyacımız var mı ve nesne tespit cihazı hem tespit hem de ayrıntılı sınıflandırma yapabilir mi? Tespit ve büyük sınıf boyutu sınıflandırmasını oldukça iyi yapabilen bazı modeller var, örneğin YOLO9000, ancak bunlar kısıtlı kaynaklara sahip gömülü cihazlarda çalıştırmak için uygun değildir. Bu nedenle, şu anda çok aşamalı çıkarım, bu tür uygulamalar için Bilgisayarla Görme envanterimizdeki en iyi tekniktir.
