OpenVINO: Nedir Bu OpenVINO ?

Soner Can KALKAN
4 min readJan 21, 2020

Devam eden yazı serimizde bugün Uç Yapay Zeka geliştirme için keyifli ve kullanımı kolay, Intel’in geliştirdiği ve açık kaynaklı olarak paylaştığı openVINO Toolkit ile birlikteyiz.

Bir konuyu sıfırdan başlayarak öğrenirken o konunun tarihinden ve genel anlamından başlamayı her zaman faydalı bulmuşumdur. Zira her şeyin bir hikayesi ve geçmişi muhakkak vardır ve bu hikaye yeni öğrenmeye başlayan bizleri cesaretlendirir ve empati duygusunun da etkisiyle motive oluruz. Bu sebeple bizde OpenVINO konusuna benzer bir giriş yapalım. Malumunuz OpenVINO( “Open Visual Inferencing and Neural Network Optimization”) Intel tarafından geliştirilen ve açık kaynaklı olarak paylaşılan bir görüntü işleme odaklı Uç Yapay Zeka geliştirme platformudur. Kaldı ki tam adı Intel Distribution of OpenVINO Toolkit olarak geçmektedir. Aslında hikayesi çokta eskiye dayanmıyor desek yanlış söylemiş olmayız. Kendileri ilk çıkışını 2018 yılında 1.0 versiyonu ile başlattı. Ardından adım adım gelişerek yedi modeller, iyileme güncellemeleri, yeni fonksiyonlar ve derin öğrenme platform destekleri ile günümüze 3.1 versiyonu ile gelmiş bulunmakta.

OpenVINO Platformu

Aslında tüm bu yatırım ve geliştirme Dev Veri ve Nesnelerin İnterneti konsepti ile kıymet buluyor. Bu itici güç ile makine öğrenimi ve derin öğrenmede de bir ivmelenme devam etmekte. Bu ivmelenme 2017 yılı itibari ile 3.5 milyar dolara kadar ulaşmıştır ve 2025'e kadar 67.2 milyar dolar olması bekleniyor 💵.

Tractica Tablosu

İştahlar kabardığına göre hep beraber biraz daha derinlere inelim, neymiş bu OpenVINO ?

OpenVINO 🎉

OpenVINO temelde bahsettiğimiz gibi bir iyileme aracı. Geliştirilen veya hazır modellerin Uç platformlarda hızlı, verimli ve etkili çalışmasını amaçlayan bir platformdur. İçeriğini 5 ayrı parça olarak inceleyebiliriz.

Intel® Deep Learning Deployment Toolkit
  • Intel® Deep Learning Deployment Toolkit : İçerisinde Model Optimizer ve Inference Engine gibi yapıları bulunduran çekirdek platformdur. İlerleyen yazılarda bu iki özelliği derinlemesine inceleyeceğiz.
  • Open Model Zoo: İçerisinde 40'ın üzerinde ön eğitimli (pre-trained) model barındıran bir platformdur. Konuya girişte OpenVINO platformunun potansiyelini gözlemlemek için web sayfasına (Kaynaklar kısmında) bir göz atmakta fayda var. Basit ve anlaşılır hazırlanmış olmasıda büyük kolaylık sağlıyor.
  • Deep learning Workbench: Daha önce kullanmadığım bir araç olduğu belirtmeliyim. Tarayıcı üzerinde çalışan bir arayüz sunuyor. BU arayüz üzerinden modelleri ayarlayabilir ve deneyler yapabilirsiniz.
  • OpenCV, OpenVX and Intel® Media SDK: Gitgide derinlere inmeye devam ediyoruz. Görüntü işleme çalışanların aşina olmuş olabileceği tabirlere gelmeye başladık. OpenCV bu çerçevede openVINO tarafından destek bulan bir kütüphane, ek olarak optimizasyon için OpenVX ve Media SDK kütüphaneleri destekleniyor.
  • OpenCL : Parallel programlama gibi alanlarda ücretsiz bir platform olan OpenCL, openVINO tarafında özel yapay sinir ağı katmanlarının sisteme entegre edilmesinde görev alıyor diyebiliriz
  • FPGA RTE (Field Programmable Gate Array Runtime Enviroment): Hızlıca FPGA kartlar üzerinde derin öğrenme geliştirmesi yapabilme olanağı sağlayan eklentidir.

Bu yazı serisi kapsamında özellikle sistemin çekirdeği üzerinde duruyor olacağız. Bu açıdan başta da bahsettiğimiz Model Optimizer ve Inference Engine konseptinden kısa da olsa bahsetmekte fayda var.

Model Optimizer:

OpenVINO ile beraber kendi geliştirdiğimiz modelleri de uygun koşullar çerçevesinde kullanabiliyoruz. Tabi ki bu koşullar ham hali ile Uç bir sistemde koşamayacaktır. Zira önceki yazıda da bahsettiğimiz gibi Uç sistemler işlem gücü, enerji ve hafıza gibi kaynaklar bakımından kısıtlılar buna ek olarak derin öğrenme modelleri ekseriyetle karmaşık, hafıza ihtiyacı olan yüksek yapılar. Bu şartlarda buna çözüm olarak karşımıza Model Optimizer çıkıyor. Verilen model eğer desteklenen bir platforma aitse, örneğin Tensorflow , model üzerinde belirli iyileme teknikleri ile modeli küçültüp, daha etkin bir hale getiriyor. Katmanları birleştirme (Fusion), kesinlikten tavız verme(Quantization), katmanları dondurma(Freezing) bu teknikleri kullanarak modeli iyilemektedir. Bunların detaylarına ilerleyen yazılarda değiniyor olacağız. Model Optimizer çalıştıktan sonra iki adet dosya üretir bunlardan biri kullanılan ağın yapısının ve mimarisinin saklı olduğu .xml uzantılı dosya diğeri ise katsayıların saklandığı .bin uzantılı dosyadır. Son olarak Model Optimizer’ın çıktısınada Intermediate Representation diyoruz.( .xml ve .bin dosyalarının her ikisinden de bahsederken).

Inference Engine :

Kabaca Inference Engine (Çıkarım motoru) geliştirilen Uç Yapay Zeka Uygulaması ile kullanılan modeli bağlayan yapıdır. Yapı C++ ile geliştirilmesine karşın Python wrapper (built-in) ile kullanılabilir. Tabi bu kullanımların tamamı sadece Model Optimizer’ın IR çıktısı içindir. Burada bahsedilenden kasıt Inference Engine sadece IR ile çalışmaktadır. Bu da ya eğittiğimiz modelin ModelOptimizer ile iyilenmesini ya da direkt olarak Open Mpdel Zoo modellerinden gelmesi gerektiğini ortaya koyuyor. Küçük bir not Open Model Zoo’daki bütün modeller IR formatındadır. Inference Engine donanım tabanlı iyileme ile iyileme işlemini bir adım daha öteye taşımış oluyor.

Sistem Gereksinimleri:

Üzerinde fazlaca durmadan aşağıdaki tabloda donanım temelli olarak desteklenen işletim sistemleri, donanımlar ve teknolojiler mevcuttur.

Teknik Gereksinimler

Bu yazıy ile beraber OpenVINO platformunu da ucundan kıyısından tanımış olduk. Bundan sonra yavaş yavaş elimizi kirletmeye başlayabiliriz. OpenVINO Kurulumu ile görüşmek üzere . . . Keyifli Okumalar 👋👋👋

Bir Önceki Yazı:

Kaynakça :

--

--

Soner Can KALKAN

📊 Data Scientist | 🌍 Exploring the Data Universe, One Insight at a Time