Yavuz Kömeçoğlu | Tüm yazılar etiketlendi 'Görüntü işleme'
23 Kasım 2017 Yavuz Derin öğrenme (deep learning), Görüntü işleme (image processing)
Bu yazıda açık kaynaklı yapay sinir ağı kütüphanesi olan Darknet kütüphanesinin makinamıza kurulumunu ve 2017 yılı itibariyle gerçek zamanlı olarak en hızlı şekilde nesne tespiti yapabilen YOLO(You Only Look Once) algoritmasının önceden eğitilmiş modelini kullanarak nesne tespiti demosunu nasıl çalıştıracağımızı görelim.
Github üzerinden darknet deposunu git ile klonlayalım ve darknet klasörü içerisine girelim.
Derleme işlemini başlatmadan önce darknet klasörü içerisindeki Makefile dosyasını inceleyelim.
Biz sadece yukarıdaki ilk 5 satırı ile ilgileneceğiz.
CUDA destekli Nvidia ekran kartınız varsa ve GPU üzerinde çalıştırmak istiyorsanız Makefile dosyasında ilk satırdaki GPU değerini 1 olarak değiştiriyoruz.
GPU ile derlemek istiyorsanız makinanızda CUDA 8 versiyonu yüklü olması gerekmektedir. CUDA kurulumu için daha önceki yazıma buradan göz atabilirsiniz.
Web kameranızdan görüntü almak için Makefile dosyasında üçüncü satırdaki OPENCV değerini 1 olarak değiştiriyoruz.
OpenCV destekli derlemek için makinanızda OpenCV yüklü ve derlenmiş olması gerekmektedir. Eğer kurulum yapmadıysanız "Ubuntu Üzerinde OpenCV Kurulumu" başlıklı yazımdaki adımları izleyerek kurulum yapabilirsiniz.
Sadece CPU üzerinde çalıştırmak isterseniz Makefile dosyasında yukarıdaki değişiklikleri yapmadan derleyebilirsiniz.
make komutu çalıştırarak derleme işlemini başlatalım.
~/darknet$ make -j8
-j8 parametresi opsiyoneldir. Derleme işlemini hızlandırmak için "-j çekirdek sayısı" parametresini ekleyebilirsiniz.
CPU üzerinde derleme yaptınızda sorun yaşayacağınızı düşünmüyorum. Ancak GPU üzerinde ve OpenCV destekli derleme yaparken hata alabilirsiniz. CUDA ve OpenCV kurulum işlemlerinizi kontrol ediniz.
Derleme işlemi sorunsuz şekilde tamamlandıysa denemeye geçebiliriz.
Önceden eğitilmiş modelin ağırlık dosyalarını aşağıdaki komut ile indirelim.
Ben ağırlık dosyasını da yapılandırma dosyalarının olduğu cfg klasörü altına indirdim. Siz dilediğiniz yere indirebilirsiniz.
Data klasörü altındaki örnek dog.jpg görselinde nesne tanıma ve yerini saptamasını istiyorsak, aşağıdaki şekilde ağ dosyasını (yolo.cfg), indirdiğimiz ağırlık dosyasını (yolo.weights) ve görselin yolunu parametre olarak belirterek detect komutu çalıştıralım.
./darknet detect cfg/yolo.cfg cfg/yolo.weights data/dog.jpg
İşlem sonunda görsel içerisinde dog: 82%, car: 26%, truck: 65%, bicycle: 85% oranlarında nesneleri içerdiğini ve nesnelerin konumlarını sınırlayıcı kutu içerisine aldığını görüyoruz.
Webcam ile gerçek zamanlı nesne tespiti için COCO veriseti'ni kullanarak detector demo komutunu çalıştırıyoruz
./darknet detector demo cfg/coco.data cfg/yolo.cfg cfg/yolo.weights
Video üzerinde gerçek zamanlı nesne tespiti için ise webcam ile çalıştırdığımız komut sonuna videonun dosya yolunu belirtmemiz yeterli
./darknet detector demo cfg/coco.data cfg/yolo.cfg cfg/yolo.weights <video dosya yolu>
İstanbul trafiğinde çekilmiş olan kısa bir video üzerindeki nesne tespiti denememi izleyebilirsiniz.
Telefon ile çektiğim başka bir video üzerindeki nesne tespiti denememi izleyebilirsiniz.
Bilgisayar özellikleri video açıklamalarında mevcuttur.
Joseph Redmon'dan "Bilgisayarlar nesneleri anında nasıl tanımayı öğrenirler" başlıklı YOLO sunumunu izleyebilirsiniz
https://arxiv.org/abs/1612.08242 (YOLO9000: Better, Faster, Stronger)
04 Mart 2017 Yavuz Görüntü işleme (image processing)
İlk önce gerekli paketleri yükleyelim.
OpenCV Kaynak Kodlarının İndirilmesi
Kaynakları "/down/" klasörü altına indirdiğinizi varsayalım.
OpenCV github deposuna gidin ve en güncel stabil versiyonu git ile klonlayalım.
$ cd down
OpenCV yi derlemeden önce indirdiğiniz opencv klasörü altına geçici "release" adında bir klasör oluşturalım.
/down/opencv$ mkdir release
/down/opencv$ cd release
Şimdi derlemek için OpenCV!yi nasıl yapılandırmak istediğimizi belirtmeliyiz.
/down/opencv/release$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/down/opencv_contrib/modules /down/opencv/
Not: "/down/" benim oluşturduğum klasör adı. Siz çalıştığınız klasör adı ile değiştirebilirsiniz.
Derlemek ve yüklemek için aşağıdaki komutları çalıştıralım.
Not2: Eğer opencv dosya yolu bulanamıyor şeklinde bir hata ile karşılaşıyorsanız, OPENCV_EXTRA_MODULES_PATH parametresinde belirttiğimiz dosya yolunu /home/<kullanıcı adı>/down/opencv_contrib/modules/ /home/<kullanıcı adı>/down/opencv/ şeklinde opencv'nin ve opencv ekstra modüllerinin tam dosya yolunu belirtirseniz bulunduğunuz klasörden bağımsız olarak sorunsuz şekilde derleyebilirsiniz.
/down/opencv/release$ make -j8
/down/opencv/release$ sudo make -j8 install
Not3: -j8 parametresi opsiyoneldir. Sadece make komutu çok uzun sürecektir. Paralel olarak bir çok çekirdek ile çalıştırmak isterseniz çekirdek sayınıza göre ekleyebilirsiniz.
Şuana kadar herhangi bir sorun yaşanmadı ise kurulum başarıyla tamamlanmıştır.
Kurulumu ve OpenCV versiyonunu kontrol etmek için aşağıdaki komutu çalıştırabiliriz.
Ben 3.2 yi kurduğum için ekranda 3.2.0 yazacaktır.
Kaynak: OpenCV docs - Installation in Linux