Intel-Movidius “Neural Compute Stick” Nedir ve Nasıl Kullanılır
Günümüzde özellikle insansız keşif araçlarında kullanılması amacıyla düşük güç tüketimli sürücülere ihtiyaç vardır. Intel tarafından Movidius Neural Compute Stick (NCS) de internet ağından bağımsız derin öğrenme ve diğer yapay zeka algoritmalarını optimize şekilde ve düşük güç tüketimi ile Myriad 2 VPU(Vision Processing Unit) çipi kullanılarak geliştirilmiştir.
Derin öğrenme modellerinin düşük kapasiteli merkezi ya da grafik işlemcili bilgisayarlarda verimli şekilde çalıştırılmasının çok zor olduğunu biliyoruz. Movidius bize çoklu kullanım desteği ile de GoogLeNet gibi büyük modellerin optimize bir şekilde çalışmasına olanak tanımaktadır. Sınıflandırma ve nesne tanıma gibi uygulamaları fiziksel ürün olarak tasarlama ve uygulama imkanı sağlayan kullanımı kolay bir kittir.
Movidius NCS, USB üzerinde çalışan bir GPU (Graphics Processing Unit-Grafik İşlem Birimi) gibi düşünülebilir. Ancak modelin eğitimi bu birim üzerinde gerçekleştirilmez, eğitilmiş model birim üzerinde optimum bir şekilde çalışır ve test amaçlı fiziksel ortamlarda kullanılması amaçlanmaktadır.
- Ubuntu 16.04 ya da Raspberry Pi 3 Raspbian Stretch üzerinde kullanılabilir.
- TensorFlow ve Caffe derin öğrenme kütüphanelerini desteklemektedir.
- Caffe tabanlı evrişimli sinir ağını (CNN) Movidius Myriad 2 VPU’da çalıştırmaktadır.
- SqueezeNet, GoogLeNet ve AlexNet gibi karmaşık derin öğrenme ağlarını düşük kapasiteli bilgisayarlarda çalıştırabilmeyi sağlamaktadır.
UYGULAMA
Görüntü sınıflandırma uygulamasını basit bir şekilde çalıştırabilmek için NC App Zoo reposundaki image-classifier demosunu kullanarak ilerlersek; Movidius NCS uygulamalarını çalıştırmak için bir graph dosyası olmak zorundadır. Graph dosyası, image-classifier demosudur. GoogLeNet modelinin NCS için optimize olarak derlenmiş ve çalıştırılabilir halidir. Uygulama klasörü altında make komutu bu uygulama için gerekli diğer dosyalar ile birlikte graph dosyasını da oluşturmaya yaramaktadır.
Uygulama adımları:
- NCSDK API özellikleri kullanmak için mvnc kütüphanesini ekle
- Herhangi bir USB aygıt gibi Movidius NCS kitine de API yardımıyla erişim sağlanmaktadır. Birden fazla Movidius NCS kiti kullanılabileceği gibi bu basit örnek için sadece bir tane kullanmak yeterli olacaktır. Kiti seçme ve açma işlemi:
- Önceden eğitilmiş olan GoogLeNet modeli için derlenmiş olan graph dosyasını kullanma işlemi:
- Görüntüyü Movidius NCS’ye yüklemeden önce bazı ön işlemlerden geçirmek gerekmektedir.
- Görüntüyü Movidius NCS’ye yüklemek için LoadTensor() metodunu kullanmak:
- Eğitilmiş modele görüntü giriş olarak verilir ve çıkışlar output değişkenine GetResult() metodu ile atamak:
- Model çıkışında elde edilen tahmin oranları ve hangi etikete karşılık geldiği ekrana yazdırılmaktadır. Aynı zamanda giriş olarak verilen görüntü de ekrana verilmektedir.
- Son adımda, Movidius NCS aygıtını yeniden kullanmak üzere tüm hafızasını temizleme ve kapatma işlemi:
Ayrıca Yavuz Kömeçoğlu’nun Raspberry Pi 3 üzerinde Intel Movidius Neural Compute Stick ile Derin Öğrenme Uygulamaları Çalıştırma blog yazısını da takip edebilirsiniz.
TEŞEKKÜR
Derin öğrenme temelli çalışmalarımı gerçekleştirmem için talebim üzerine Movidius Neural Compute Stick’i hızlıca tarafıma ulaştıran Mustafa Aldemir Bey ve Intel Türkiye’ye teşekkür ederim.
Kaynaklar:
- https://developer.movidius.com/
- https://www.movidius.com/news/movidius-and-dji-bring-vision-based-autonomy-to-dji-phantom-4
- https://github.com/movidius/ncappzoo
- https://software.intel.com/en-us/articles/build-an-image-classifier-in-5-steps-on-the-intel-movidius-neural-compute-stick
- https://towardsdatascience.com/getting-started-with-intel-movidius-d8ba13e7d3ae