Hedef algılamaya ulaşmak için size 10 satır Python kodu kullanmayı öğretin (kodla)

Kaynak: Büyük Veri Özeti

Bu makale hakkında 2729 Word, önerilen okuma 6 dakika.

Bu makale, popüler derin öğrenme çerçevesini ve bilgisayar görüşü kitaplığını entegre eden ve size kendi hedef tespit uygulamanızı oluşturmayı öğreten ImageAI adlı bir Python kitaplığını tanıtır.

Arka planda özel mesajla "0706" cevabını verin, kod ve model dosyalarını alabilirsiniz.

Hedef tespiti sadece 10 satır kodla gerçekleştirilebilir mi? !

Bu makalenin yazarı ve ekibi, popüler derin öğrenme çerçevesini ve bilgisayarla görme kitaplığını entegre eden ImageAI adlı bir Python kitaplığı oluşturdu. Bu makale size ilk hedef tespit uygulamanızı nasıl oluşturacağınızı öğretecek ve editör, çukura adım atmanıza yardımcı oldu ve test etkili!

İnsansız süpermarketler, yüz tanıma, insansız sürüş ve çeşitli kullanım senaryoları ve vakaları, "hedef tespit" i bilgisayarla görmenin en umut verici yönü haline getiriyor.

Tamamlanması için çok sayıda eğitim verisi ve algoritma gerektiren, uygulaması zor bir teknoloji gibi görünüyor. Aslında, bu makalenin yazarı, on satır kodla hedef algılamayı verimli bir şekilde uygulayabilen Python tabanlı bir işlev kitaplığı geliştirdi.

Tanıdık olmayan okuyucular için, hedef tespitin ne olduğuna ve yazılım geliştiricilerin karşılaştığı zorluklara bir göz atalım.

Hedef tespiti, bir bilgisayar ve yazılım sistemi yardımıyla bir görüntüdeki / sahnedeki hedefleri bulan ve her hedefin kategorisini tanıyan bir teknolojidir. Yüz algılama, araç algılama, yaya sayma, ağ görüntüleri, güvenlik sistemleri ve sürücüsüz arabalar gibi alanlarda yaygın olarak kullanılmaktadır. Bilgisayar teknolojisinin sürekli gelişimi ve yazılım geliştiricilerin aralıksız çabaları ile gelecekteki hedef tespit teknolojisi daha geniş çapta popüler hale gelecektir.

Uygulama ve sistemlerde gelişmiş hedef tespit yöntemlerini kullanmak ve bu yöntemlere dayalı yeni uygulamalar oluşturmak kolay değildir. Erken hedef tespiti, OpenCV (popüler bilgisayar görme kitaplığı) tarafından desteklenenler gibi klasik algoritmalara dayanır. Ancak, bu klasik algoritmaların performansı koşullar nedeniyle sınırlı olacaktır.

2012 yılında, derin öğrenme alanında pek çok atılım yapıldı. Araştırmacılar, R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet gibi bir dizi yeni ve yüksek hassasiyetli hedef tespit algoritması ve yöntemi ve hızlı ve doğru SSD ve YOLO vb. Bu derin öğrenme tabanlı yöntemleri ve algoritmaları kullanmak için (tabii ki derin öğrenme aynı zamanda makine öğrenimine de dayanır), matematik ve derin öğrenme çerçevelerini derinlemesine anlamanız gerekir. Milyonlarca yazılım geliştiricisi, yeni ürünler geliştirmek için hedef tespit teknolojisini entegre etmeye kararlıdır. Ancak derin olmayan öğrenme alanlarındaki programcıların bu teknolojiyi anlaması ve kullanması kolay değildir.

Kendi kendini eğiten bir bilgisayar geliştiricisi olan Moses Olafenwa, bu sorunu birkaç ay önce fark etti ve meslektaşları ile birlikte ImageAI adlı bir Python kitaplığı geliştirdi.

ImageAI, programcıların ve yazılım geliştiricilerin en gelişmiş bilgisayar görme teknolojisini mevcut ve yeni uygulamalarına yalnızca birkaç satır kodla kolayca entegre etmelerine olanak tanır.

ImageAI ile hedef tespiti gerçekleştirmek için sadece aşağıdaki adımlara ihtiyacınız var:

  • Python'u yükleyin
  • ImageAI ve ilgili işlev kitaplıklarını yükleyin
  • Hedef tespit modeli dosyasını indirin
  • Örnek kodu çalıştırın (yalnızca 10 satır)

Çalışmaya hazır

Bu test ortamı bir Windows 64-bit sistemdir ve Python sürümü 3.6'dır.

Python 3'ü Python resmi web sitesinden indirip kurun ve pip'i kurun.

İndirme: {link:

https://python.org

https://pip.pypa.io/en/stable/installing/

Aşağıdaki bağımlılıkları pip ile kurun

Pyhthon kurulum dizininde C: \ XXX \ Python \ Python36 \ Scripts gibi Scripts klasörünü bulun, cmd komut penceresini açın ve aşağıdaki kurulum komutlarını sırayla girin.

1. Tensorflow:

pip tensorflow yüklemek

2. Uykulu:

pip install numpy

3. Bilim:

pip yüklemek scipy

4. OpenCV:

pip opencv-python yükle

5. Yastık:

pip yastık takmak

6. Matplotlib:

pip matplotlib yüklemek

7. H5py:

pip h5py yükle

8. Keras:

pip kurulum keras

9. ImageAI:

pip kurulum https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl

Not: ImageAI kurulumu sırasında bir istisna meydana gelirse, önce .whl dosyasını indirip Scripts klasörüne yerleştirebilir ve yüklemek için aşağıdaki komutu kullanabilirsiniz:

pip imageai-2.0.1-py3-none-any.whl yükleyin

Hedef tespiti için RetinaNet model dosyasını indirin:

İndirme: {link:

https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5

Hazırlık çalışması bitti, ilk hedef tespit kodunuzu yazabilirsiniz. Yeni bir Python dosyası oluşturun ve onu adlandırın (FirstDetection.py gibi) ve ardından aşağıdaki kodu bu dosyaya yazın. Daha sonra, RetinaNet model dosyasını, FirstDetection.py'yi ve algılamak istediğiniz görüntüyü aynı yola koyun ve görüntüyü "image.jpg" olarak adlandırın.

FirstDetection.py'deki 10 kod satırı:

imageai.Detection'dan ObjectDetection içe aktarma

işletim sistemini içe aktar

execution_path = os.getcwd ()

detektör = ObjectDetection ()

Detektör.setModelTypeAsRetinaNet ()

Detektör.setModelPath (os.path.join (execution_path, "resnet50_coco_best_v2.0.1.h5"))

detektör.loadModel ()

detections = detektör.detectObjectsFromImage (input_image = os.path.join (execution_path, "image.jpg"), output_image_path = os.path.join (yürütme_path, "imagenew.jpg"))

tespitlerdeki eachObject için:

baskı (eachObject + ":" + eachObject)

Ardından, kodu çalıştırmak için FirstDetection.py'ye çift tıklayın ve bir süre bekleyin, tanıma sonucu konsolda yazdırılacaktır. Sonuçlar konsolda çıktığında, FirstDetection.py'yi içeren klasörde "imagenew.jpg" dosya adıyla yeni kaydedilmiş bir resim bulacaksınız.

Not: Kodu çalıştırırken aşağıdaki istisna oluşursa:

Numpy + MKL bağımlılıklarını kurmanız, ilgili .whl dosyasını indirmeniz ve Scripts klasörüne koymanız ve .whl dosyasını pip ile yüklemeniz gerekir.

İndirme: {link:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

Test sonuçları

Aşağıdaki 2 örnek resme ve test sonrası kaydedilen yeni resimlere bir göz atalım.

Test etmeden önce:

Testten sonra:

Test sonuçları:

kişi: 55.8402955532074

kişi: 53.21805477142334

kişi: 69.25139427185059

kişi: 76.41745209693909

bisiklet: 80.30363917350769

kişi: 83.58567953109741

kişi: 89.06581997871399

kamyon: 63.10953497886658

kişi: 69.82483863830566

kişi: 77.11606621742249

otobüs: 98.00949096679688

kamyon: 84.02870297431946

araba: 71.98476791381836

Test sonuçları:

kişi: 71.10445499420166

kişi: 59.28672552108765

kişi: 59.61582064628601

kişi: 75.86382627487183

motosiklet: 60.1050078868866

otobüs: 99.39600229263306

araba: 74.05484318733215

kişi: 67.31776595115662

kişi: 63.53200078010559

kişi: 78.2265305519104

kişi: 62.880998849868774

kişi: 72.93365597724915

kişi: 60.01397967338562

kişi: 81.05944991111755

motosiklet: 50.591760873794556

motosiklet: 58.719027042388916

kişi: 71.69321775436401

bisiklet: 91.86570048332214

motosiklet: 85.38855314254761

Ek olarak, birkaç fotoğrafı test ettim ve sonuçlar şu şekilde:

Test etmeden önce:

Testten sonra:

Test sonuçları:

araba: 59.04694199562073

araba: 50.62631368637085

araba: 71.59191966056824

araba: 52.60368585586548

kişi: 76.51243805885315

araba: 56.73831105232239

araba: 50.02853870391846

araba: 94.18612122535706

araba: 70.23521065711975

araba: 75.06842017173767

araba: 87.21032738685608

araba: 89.46954607963562

kişi: 73.89532923698425

bisiklet: 90.31689763069153

otobüs: 65.3587281703949

İnekleri tespit edebilir ...

Test sonuçları:

kişi: 55.15214800834656

kişi: 62.79672980308533

kişi: 69.01599168777466

kişi: 67.26776957511902

kişi: 75.51649808883667

kişi: 52.9820442199707

kişi: 67.23594665527344

kişi: 69.77047920227051

kişi: 83.80664587020874

kişi: 61.785924434661865

kişi: 82.354336977005

kişi: 93.08169484138489

inek: 84.69656705856323

Test sonuçları:

kişi: 65.07909297943115

kişi: 65.68368077278137

kişi: 68.6377465724945

kişi: 83.80006551742554

kişi: 85.69389581680298

kişi: 55.40691018104553

kişi: 56.62997364997864

kişi: 58.07020664215088

kişi: 70.90385556221008

kişi: 95.06895542144775

Kod açıklaması

Bu 10 satırlık kodun anlamını açıklayalım.

imageai.Detection'dan ObjectDetection içe aktarma

işletim sistemini içe aktar

execution_path = os.getcwd ()

Yukarıdaki 3 satır kodda, ilk satır ImageAI hedef algılama sınıfını içe aktarır, ikinci satır Python os sınıfını içe aktarır ve üçüncü satır Python dosyasını, RetianNet model dosyasını ve görüntünün bulunduğu klasöre giden yolu kaydetmek için bir değişken tanımlar.

detektör = ObjectDetection ()

Detektör.setModelTypeAsRetinaNet ()

Detektör.setModelPath (os.path.join (execution_path, "resnet50_coco_best_v2.0.1.h5"))

detektör.loadModel ()

detections = detektör.detectObjectsFromImage (input_image = os.path.join (execution_path, "image.jpg"), output_image_path = os.path.join (yürütme_path, "imagenew.jpg"))

Yukarıdaki 5 satır kodda, ilk satır hedef algılama sınıfını tanımlar, ikinci satır model türünü RetinaNet olarak ayarlar, üçüncü satır modelin yolunu RetinaNet model dosyasının yoluna ayarlar, dördüncü satır modeli hedef algılama sınıfına ve beşinci satıra yükler Algılama işlevini çağırın ve giriş görüntüsünün ve çıktı görüntüsünün yolunu ayrıştırın.

tespitlerdeki eachObject için:

baskı (eachObject + ":" + eachObject)

Yukarıdaki iki kod satırında, ilk satır, dedektör.detectObjectsFromImage işlevi tarafından döndürülen tüm sonuçları yineler ve ardından ikinci satır, model tarafından algılanan görüntüdeki her hedefin türünü ve olasılığını yazdırır.

ImageAI ayrıca hedef tespit sürecindeki diğer işlevlerin yapılandırılmasını da destekler. Örneğin, tespit edilen her hedefin görüntülerini ayrı ayrı çıkarın. DetectedObjectsFromImage işlevine basitçe extract_detected_objects = True yazarak, hedef algılama sınıfı görüntü nesnesi kümesi için yeni bir klasör oluşturacak, ardından her görüntüyü çıkaracak, bu klasöre kaydedecek ve her birini kaydetmek için bir dizi döndürecektir. Resmin yolu aşağıdaki gibidir:

algılamalar, extracted_images = dedektör.detectObjectsFromImage (input_image = os.path.join (execution_path, "image.jpg"), output_image_path = os.path.join (execution_path, "imagenew.jpg"), extract_detected_objects = True)

İlk örnek resimden çıkardığımız tespit sonuçları şekilde gösterilmektedir:

Parametre yapılandırması

ImageAI, hedef tespitinin üretim ihtiyaçlarını karşılamak için aşağıdakiler dahil bazı yapılandırılabilir parametreler sağlar:

Minimum Olasılığı Ayarlama (ayarlanabilir minimum olasılık eşiği)

Varsayılan eşik% 50'dir Saptama sonucunun olasılık değeri% 50'den düşükse, saptama sonucu görüntülenmez. Eşiği özel ihtiyaçlarınıza göre değiştirebilirsiniz.

Özel Nesne Algılama (özel nesne algılama)

Sağlanan CustomObject sınıfını kullanarak, test sonuçlarının yalnızca belirli hedef türlerini göstermesini sağlayabilirsiniz.

Algılama Hızları

Algılama hızı, görüntüleri algılamak için gereken süreyi azaltmak için "hızlı", "daha hızlı" ve "en hızlı" olarak ayarlanabilir.

Giriş Türleri

Görüntünün dosya yolunu ayrıştırabilir ve değiştirebilirsiniz Bunlar arasında, Numpy dizileri veya görüntü dosyası akışları girdi türleri olarak kullanılabilir.

Çıkış Türleri

DetectObjectsFromImage işlevinin dönüş sonucunu, bir görüntü dosyası veya Numpy dizisi döndürmek gibi değiştirebilirsiniz.

Ayrıntılı belgeler GitHub'dadır.

GitHub bağlantısı:

https://github.com/OlafenwaMoses/ImageAI

Arka planda özel mesajla "0706" cevabını verin, kod ve model dosyalarını alabilirsiniz.

İlgili raporlar:

https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606

Hendek! Pogba, bir takım arkadaşıyla Dünya Kupası şampiyonası yüzüğü oluşturmak için 200.000 euro ödedi
önceki
Ortalama yaşı 68 olan bu özel grup: 9 çeşit enstrüman, 40'tan fazla orijinal şarkı çalabilir
Sonraki
Zidane çok acımasız! Göreve geldikten 10 günden kısa bir süre sonra Real Madrid, Premier Lig'in en iyi 5 devini oylayacak
Kuru ürünler Bir makale sizi istatistiklere götürür (kaynaklarla birlikte)
İkinci el bir kitapçının yöneticisi olan Fu Tianbin: "Ben bir koleksiyoncu değil, bir kitap koleksiyoncuyum"
4 satır kodlu (kaynaklarla) metin oluşturmak için RNN'yi eğitmeye götürün
2 süperstar pozlama Mourinho 1 acımasız hareket! İbrahimoviç onun için ölmeye istekliydi, Pogba bile ikna oldu
Almanya'da bir başka toplu cinsel saldırı vakası! Münih'teki bir apartman dairesinde 6 erkek bir kıza tecavüz etti
Makineler insanlarla aynı bilince sahip olabilir mi? Uzun Bilim Makalelerinin Yorumlanması
İkinci el kitabevinin yöneticisi Fu Tianbin: Son 20 yılda dolaşımda olan 2 milyon kopya, Liushahe "Maobian Kitabevi" ni yazdı
2 ay önce Asya Kupası'nda ölümcül bir hata yapan oyuncu hala milli futbol takımının kaptanı!
Özel Egzersiz veri setinizi nasıl geliştirebilirsiniz? (Ekli dava)
"Pekin Yapay Zeka Sektörü Geliştirme Teknik Raporu" yayınlandı (indirme ektedir)
2017 Ultimate Science Fiction Watching Guide - Sahnede görücüye çıkan yeni diziler
To Top