Baidu'nun açık kaynak mobil derin öğrenme çerçevesi mobil derin öğrenme (MDL)

Yazar Li Yonghui

Düzenle Natalie

25 Eylül 2017'de Baidu, GitHub'da mobil derin öğrenme çerçevesinin (MDL) mobil derin öğrenme çerçevesinin tüm kodunu ve komut dosyalarını açık kaynaklı hale getirdi. Umarım bu proje topluluğun güdüsü altında daha iyi gelişebilir.

Önüne yaz

Derin öğrenme teknolojisinin İnternette birçok yönde etkisi oldu ve bilim ve teknoloji haberlerinde derin öğrenme ve sinir ağları hakkında her geçen gün daha fazla tartışma yapılıyor. Derin öğrenme teknolojisi son iki yılda hızla gelişti. Çeşitli İnternet ürünleri derin öğrenme teknolojisini uygulamak için rekabet ediyor. Derin öğrenmenin ürünlere girişi insanların hayatlarını daha da etkileyecek. Mobil cihazların yaygınlaşması ile mobil internet ürünlerinde derin öğrenme ve sinir ağı teknolojilerinin uygulanması kaçınılmaz bir trend haline geldi.

Derin öğrenmeyle yakından ilgili görüntü teknolojisi de endüstride yaygın olarak kullanılmaktadır. Geleneksel bilgisayar görüşü ile derin öğrenmenin birleşimi, görüntü teknolojisinin hızlı gelişimini sağlar.

GitHub adresi:

https://github.com/baidu/mobile-deep-learning

Mobil Derin Öğrenme Teknolojisi Uygulaması

Baidu başvuru örneği

Mobil terminalde derin öğrenme teknolojisinin tipik uygulaması, insanlar tarafından sıklıkla bahsedilen CNN (Convolutional Neural Network) teknolojisidir. mobil derin öğrenme (MDL), evrişimli sinir ağlarına dayalı mobil bir çerçevedir.

Mobil tarafta MDL'nin ana uygulama senaryoları nelerdir? Daha yaygın olanı, bir resimdeki nesnenin ne olduğunu ayırt etmektir. sınıflandırma ; Veya bir resimdeki bir nesnenin nerede ve ne kadar büyük olduğunu, yani Konu kimliği .

Aşağıdaki Uygulama Shixiang olarak adlandırılır ve Android platformunun uygulama hazinesinde bulunabilir. Fotoğrafları kullanıcılar için otomatik olarak kategorize edebilir, bu da çok sayıda fotoğrafı olan kullanıcılar için çok caziptir.

Ayrıca cep telefonu Baidu arama kutusunun sağ tarafında bulunan görsel aramayı açabilirsiniz ve görsel aramayı açtıktan sonra arayüz etkisi aşağıdaki gibidir. Kullanıcı, genel dikey kategoride otomatik çekim anahtarını (şeklin altında işaretli) açtığında, el durdurulduğunda çerçeve seçimi için nesneyi otomatik olarak bulacak ve bir resim çekmeden doğrudan bir resim araması başlatacaktır. Tüm süreç, kullanıcının manuel olarak fotoğraf çekmesine gerek kalmadan kullanıcıya sorunsuz bir deneyim sunabilir. Resimdeki çerçeve, mobil derin öğrenme (MDL) çerçevesini kullanan tipik bir derin öğrenme konu tanıma teknolojisini kullanır. MDL şu anda mobil Baidu'da birden çok sürüm çalıştırıyor ve güvenilirliği, birkaç yinelemeden sonra büyük ölçüde iyileştirildi.

Sektördeki diğer vakalar

İnternet endüstrisi, mobil tarafta sinir ağlarını uygulama konusunda giderek daha fazla vakaya sahip.

Şu anda iki ana tür var: Birincisi, sinir ağını tamamen istemcide çalıştırmak.Bu yöntemin avantajı açıktır, yani ağ üzerinden geçmesine gerek yoktur.Çalışma hızı garanti edilebilirse, kullanıcı deneyimi çok sorunsuz olacaktır. Mobil terminalin sinir ağını verimli bir şekilde çalıştırmasını sağlayabilirseniz, kullanıcının yükleme işlemini hissetmemesini sağlayabilirsiniz. Yukarıda bahsedilen fotoğraf arama ve mobil Baidu'daki görsel arama gibi, internetten tamamen kopuk ve mobil tarafta çalışan sinir ağlarını kullanan uygulamalara örnekler verilebilir.

İkincisi başka bir şeydir: Sinir ağını hesaplama süreci İnternet ağına dayanır ve istemci yalnızca kullanıcı arayüzünün görüntülenmesinden sorumludur. İstemci sinir ağı açılmadan önce, çoğu uygulama sunucuda bu tür bir hesaplama kullanıyordu ve istemcide görüntüleniyordu. Bu yöntemin avantajı, uygulamasının nispeten kolay olması ve geliştirme maliyetinin daha düşük olmasıdır.

Yukarıdaki iki sinir ağının uygulama yöntemlerini daha iyi anlamak için, aşağıda sırasıyla çiçek tanıma ve şekil ve renk olmak üzere iki uygulama kullanarak bitkileri ve çiçekleri tanımlamanın iki örneği gösterilmektedir. Her iki uygulama da tipik sınıflandırma yöntemlerini kullanır ve iOS platformundaki App Store'da bulunabilir. Aşağıdaki resim bir lotus çiçeğinin resmidir. Bu resim iki Uygulama sınıflandırması kullanarak daha iyi bir sınıflandırma sonucu elde edebilir: Çiçek Tanıma ve Şekil ve Renk. Bu iki uygulamayı kurmayı deneyebilir ve kullanım etkisine göre yukarıdaki yöntemlerden hangisini kullandıklarını belirleyebilirsiniz.

Çiçekleri tanı

Geçtiğimiz yıl birçok çiçek tanıma uygulaması ortaya çıktı. Microsoft "Flower Recognition", Microsoft Research Asia tarafından başlatılan çiçekleri tanımlamaya yönelik bir uygulamadır.Kullanıcılar çekimden sonra çiçekleri seçebilir ve uygulama çiçeklerin türü hakkında bilgi verir. Hassas çiçek sınıflandırması, dış tanıtımının en önemli özelliklerinden biridir.

Her türlü

Bu "şekil ve renk" uygulamasının yalnızca bitkilerin (çiçekler, otlar, ağaçlar) fotoğraflarını çekmesi gerekir, bitkilerin adlarını hızlı bir şekilde verebilirsiniz ve bu bitki için takma adlar ve bitkiler olduğu gibi birçok ilginç bitki bilgisi vardır. Çiçek dili, ilgili eski şiirler, bitki kültürü, ilginç hikayeler ve koruma yöntemleri okuduktan sonra pek çok kazanım.

Mobil uygulamalarda derin öğrenmenin zorlukları

Teknik engeller ve donanım kısıtlamaları nedeniyle, mobil uygulamalarda birkaç başarılı derin öğrenme vakası olmuştur. Geleneksel mobil UI mühendisleri sinir ağı kodu yazdıklarında, başvurulabilecek çok az mobil derin öğrenme materyali vardır. Öte yandan, mevcut internet rekabeti oldukça şiddetli ... Xianyang'a ilk girenler mobil terminalde derin öğrenme teknolojisinin uygulanmasında başı çekebilir ve zamanın fırsatını daha önce yakalayabilirler.

Mobil cihazların bilgi işlem gücü, PC cihazlarına kıyasla çok zayıf. Mobil terminalin CPU'su güç tüketimi endeksini çok düşük bir seviyede tutması gerektiğinden, performans endeksinin gelişimini kısıtlar. Uygulamada sinir ağı işlemleri yapmak, CPU işlemlerinin miktarını artıracaktır. Kullanıcı güç tüketimi göstergelerinin ve performans göstergelerinin nasıl koordine edileceği çok önemlidir.

2015 yılının sonunda, Baidu görsel arama müşteri ekibi, mobil derin öğrenme teknolojisinin uygulanmasındaki temel sorunları çözmeye başladı. Sonunda, zorlu sorunlar tek tek çözüldü ve ilgili kodlar artık birçok uygulamada çalışıyor.Bu uygulamalarda günlük milyarlarca PV'ye sahip ürünler ve başlangıç ürünleri var.

Mobil terminalde derin öğrenme teknolojisinin uygulanması halihazırda zordur ve mobil Baidu gibi ürünlerin cep telefonu Baidu ölçeğinde uygulanması, çeşitli model ve donanımların ve mobil Baidu'nun endeks gereksinimlerini karşılamak zorundadır. Sinir ağı teknolojisinin istikrarlı ve verimli çalışmasını sağlamak en büyük sınavdır. Söküm sorunu, mobil ekibin karşılaştığı başlıca sorundur. Kısa bir özetten sonra, mobil terminal ile sunucu tarafı karşılaştırılırken problem ve zorlukların ortaya çıkmasının daha kolay olduğunu gördük, ardından sunucu tarafında ve istemci tarafında aşağıdaki derin öğrenme teknolojisi uygulama karşılaştırmaları yapılmıştır.

Zorluklar ve sunucu tarafı karşılaştırması Bellek belleği: sunucu tarafı zayıf sınırı - mobil terminal belleği sınırlıdır Güç tüketimi güç tüketimi: sunucu tarafı sınırlı değildir - mobil terminal, kitaplık hacmine bağlı olarak kitap hacmine bağlı olarak kesinlikle sınırlıdır: sunucu tarafı sınırlı değildir - mobil terminal güçlü sınır modeli Hacim modeli boyutu: sunucu tarafı geleneksel model hacmi 200M mobil terminalden başlar 10M'yi geçmemelidir Performans performansı: sunucu tarafı güçlü GPU BOX mobil terminal CPU ve GPU

Geliştirme süreci sırasında ekip, yukarıdaki zorlukları aşamalı olarak çözdü ve mevcut MDL derin öğrenme çerçevesini oluşturdu. Daha fazla mobil mühendisin tekerlekleri hızlı bir şekilde kullanmasına ve işe odaklanmasına izin vermek için Baidu, ilgili tüm kodları açık kaynaklı hale getirdi ve topluluk, herkesi tekerlek yapma geliştirme sürecine katılmaya davet ediyor.

MDL çerçeve tasarımı

Tasarım fikirleri

Mobil uçlu bir derin öğrenme çerçevesi olarak, mobil uygulamanın kendisinin ve işletim ortamının özelliklerini tamamen dikkate alıyor ve bu göstergelerden herhangi birinin kullanıcı deneyimi üzerinde önemli bir etkisi olduğu için hız, boyut ve kaynak kullanımı açısından katı gereksinimler ortaya koyuyoruz. etkiler.

Aynı zamanda ölçeklenebilirlik, sağlamlık ve uyumluluk da tasarımımızın başında düşünülmektedir. Çerçevenin ölçeklenebilirliğini sağlamak için, çerçeve kullanıcılarının modelin ihtiyaçlarına göre belirli katman türlerini özelleştirmesini kolaylaştırmak için katman katmanını soyutladık.MDL'nin farklı katman türleri ekleyerek daha fazla ağ modelini desteklemesini bekliyoruz Diğer konumlarda kodu değiştirmeden; çerçevenin sağlamlığını sağlamak için MDL, yansıtma mekanizması aracılığıyla C ++ alt düzey istisnaları uygulama katmanına atar ve uygulama katmanı, istisnaları günlükler aracılığıyla toplama gibi istisnaları yakalayarak, istisnaları ele alır, Yazılımın vb. Sürekli optimizasyonunu sağlamak için; şu anda endüstride birçok türde derin öğrenme eğitim çerçevesi vardır ve MDL model eğitim yeteneklerini desteklemez.Çerçevenin uyumluluğunu sağlamak için, Caffe modellerini MDL'ye dönüştürmek için araç betikleri sağlıyoruz. Model dönüştürme ve kantifikasyon süreci tamamlanabilir.Gelecekte, PaddlePaddle, TensorFlow ve diğer modellerin daha fazla model tipiyle uyumlu olması için MDL'ye dönüştürülmesini desteklemeye devam edeceğiz.

Genel mimari

MDL çerçevesinin genel mimari tasarım şeması aşağıdaki gibidir:

MDL çerçevesi temel olarak bir model dönüştürme modülü (MDL Dönüştürücü), bir model yükleme modülü (Yükleyici), bir ağ yönetimi modülü (Net), bir matris işletim modülü (Gemmers) ve Android tarafının arayabileceği bir JNI arayüz katmanı (JNI Arayüzleri) içerir. Bunların arasında, model dönüştürme modülü esas olarak Caffe modelini MDL modeline dönüştürmekten sorumludur.Ayrıca 32 bit kayan nokta parametrelerinin 8 bitlik parametrelere nicelendirilmesini destekler, böylece model hacmini büyük ölçüde sıkıştırır; model yükleme modülü temel olarak modelin çözülmesini ve yükleme doğrulamasını, ağ Kayıt ve diğer işlemler sırasında, ağ yönetimi modülü esas olarak ağdaki katmanların başlatılması ve yönetilmesinden sorumludur; MDL, Android'in araması için bir JNI arayüz katmanı sağlar ve geliştiriciler, JNI arayüzünü arayarak yükleme ve tahmin sürecini kolayca tamamlayabilir.

MDL konumlandırma basit ve kullanılabilir

MDL açık kaynak projesi, uygulamasının başlangıcında net bir konumlandırmaya sahiptir. Karmaşık ekipmanlara ve düşük performansa sahip mobil platform teknolojisinin Ar-Ge sürecinde, yeni derin öğrenme teknolojileri için uygun senaryolar bulabilmek ve bunları kendi ürünlerine uygulayabilmek çok cazip. Bununla birlikte, her mobil terminal mühendisinin derin öğrenme uygulama sürecinde tüm sinir ağlarının uygulamasını yeniden yazması gerekiyorsa, maliyeti artıracaktır. MDL'nin konumlandırması, basitçe sinir ağlarını kullanmak ve dağıtmaktır.Temel işlevleri kullanıyorsanız, çok fazla yapılandırmanıza ve değiştirmenize gerek yoktur. Makine öğrenimi kitaplığını derlemenize bile gerek yoktur.Sadece belirli iş uygulamalarına ve nasıl kullanılacağına dikkat etmeniz gerekir.

Aynı zamanda, MDL'nin basit ve anlaşılır kod yapısı, derin öğrenmede yeni olan Ar-Ge mühendislerine referans sağlamak için öğrenme materyalleri olarak da kullanılabilir. Derin öğrenme kodunu ayarlarken mobil platformlar için çapraz derlemeyi ve Linux ve Mac için x86 platform derlemesini desteklediğimizden, kol platformuna dağıtım yapmadan doğrudan iş bilgisayarında derleyip çalıştırabiliriz. İhtiyacınız olan tek şey, MDL'nin GitHub Benioku dosyasında bulunabilen birkaç basit kod satırıdır.

# https://github.com/baidu/mobile-deep-learning # mac veya linux: ./build.sh mac cd build / release / x86 / build ./mdlTest

Karmaşık derleme süreci genellikle geliştirme süresinden daha uzun sürer.MDL'de ./build.sh android'in yalnızca bir satırı her ikisini de kaldırabilir ve test edebilir.Dağıtım çok basittir.

./build.sh android

MDL performansı ve uyumluluğu

  • Hacim armv7300k +

  • Hız iOS GPU mobilenet 40ms'ye, squeezenet 30ms'ye ulaşabilir

MDL, proje kuruluşundan açık kaynağa doğru bir yıldan fazla bir süredir yineleniyor. Mobil terminalin daha iyi performans göstermesi için daha fazla önem verdiği hacim, güç tüketimi ve hız gibi birçok gösterge. Baidu'nun dahili ürün hattı da uygulamadan önce birçok kez karşılaştırılmıştır.Açık kaynak olan ilgili projelerle karşılaştırıldığında MDL, hız ve enerji tüketimini sağlarken mobilenet, googlenet v1, squeezenet gibi çoklu derin öğrenme modellerini destekleyebilir. İOS GPU sürümü için, squeezenet bir seferde 3-40 ms kadar hızlı çalışabilir.

Benzer çerçevelerin karşılaştırılması

Çerçeve Caffe2TensorFlowncnnMDL (CPU) MDL (GPU) Donanım CPUCPUCPUCPUGPU Hız yavaş ve hızlı. Çok hızlı. Boyut büyük ve küçük. AndroidiOSAndroidiOSAndroidiOSAndroidiOSiOS ile uyumlu

CNN'yi destekleyen mobil terminal çerçevesi ile karşılaştırıldığında, MDL hızlıdır, performans açısından kararlıdır, uyumludur ve demoda eksiksizdir.

Uyumluluk

MDL hem iOS hem de Android platformlarında kararlı bir şekilde çalışabilir. Bunların arasında, iOS10 ve üzeri platformlar mükemmel performansa sahip GPU tabanlı API'lara sahiptir. Android platformlarında yalnızca CPU üzerinde çalışır. Üst, orta ve düşük modellerin çalışma durumu ve mobil Baidu ve diğer uygulamaların kapsamı mutlak avantajlara sahiptir.

MDL ayrıca Caffe modellerinin MDL modellerine doğrudan dönüştürülmesini de destekler.

Bir bakışta MDL özellikleri

Mobil yapay zeka ile ilgili araştırma ve geliştirmenin başlangıcında, Baidu görsel arama ekibi, açık kaynak olan benzer CNN çerçevelerinin çoğunu karşılaştırdı ve yüzlerce düşünce okulunun çekişmesi de bu yöndeki sorunları ortaya çıkardı. Bazı çerçeve deney verileri iyi performans gösterdi. Gerçek ürünlerde, ya performans zayıftı ve performans son derece dengesizdi ya da model tam olarak kapsanamadı ya da hacim çevrimiçi standardı karşılamadı. Bu sorunları önlemek için MDL aşağıdaki Özellikleri eklemiştir:

  • Tek tıklamayla dağıtım, komut dosyası parametreleri iOS veya Android'i değiştirebilir

  • Caffe modellerinin MDL modellerine tam otomatik dönüştürülmesini destekler

  • GPU işlemini destekleyin

  • MobileNet, GoogLeNet v1, squeezenet modellerini kararlı bir şekilde çalıştırmak için test edilmiştir

  • Gövde aktif ve küçüktür, herhangi bir üçüncü tarafa güvenmeksizin, tamamen el yapımıdır

  • Niceleme komut dosyası sağlayın, doğrudan 8-bit uint'e 32-bit float desteği, nicelemeden sonra model hacmi 4M civarında

  • ARM ile ilgili algoritma ekipleriyle birçok kez çevrimiçi ve çevrimdışı iletişim kurun ve ARM platformu için optimize etmeye devam edin

  • NEON kullanımı evrişim, normalleştirme, havuzlama ve diğer işlemleri kapsar

  • performansı iyileştirmek ve gereksiz CPU tüketimini azaltmak için döngü açma döngüsü açma döngüsü, tüm geri alma değerlendirme işlemleri

  • Çok sayıda ağır bilgi işlem görevini genel gider sürecine iletin

Takip planlaması

  • MDL'nin boyutunu daha da azaltmak için, MDL, model yapılandırma depolaması olarak protobuf kullanmaz, ancak Json formatını kullanır. Şu anda MDL, Caffe modellerinin MDL modellerine dönüştürülmesini desteklemektedir ve gelecekte tüm ana modellerin MDL modellerine dönüştürülmesini destekleyecektir.

  • Mobil cihazların bilgi işlem performansının iyileştirilmesiyle, GPU'lar mobil bilgi işlemin geleceğinde çok önemli bir rol oynayacak.MDL, GPU'ların uygulanmasına büyük önem veriyor. Şu anda MDL, iOS GPU işlemini zaten desteklemektedir ve iOS10 ve üzeri tüm modeller kullanılabilir. Şimdiye kadar elde edilen istatistiklere göre, iOS10 zaten iOS sistemlerinin çoğunu kapsıyor ve CPU işlemleri iOS10'un altında kullanılabilir. Ayrıca Android platformunun mevcut GPU hesaplama gücü genel olarak CPU'nunkinden daha zayıf olsa da gün geçtikçe ortaya çıkan yeni GPU modelleri daha da güçlü hale geldi. GPU'nun özellik uygulaması da MDL'nin arkasına eklenecek OpenCL tabanlı Android platformu GPU hesaplama, üst düzey modellerin hesaplama performansını bir adım daha artıracak.

Geliştiriciler koda katkıda bulunabilirler

Mobil sinir ağının kararlı ve verimli çalışması, birçok geliştiricinin kodlamasından ayrılamaz. MDL uzun zamandır güvenilir çalışma, pratiklik ve güzellik amacına dayanıyor ve mobil derin öğrenme teknolojisine katkıda bulunmayı umuyor. Derin öğrenme teknolojisini mobil terminallere uygulamak ve bunu tüm dünyaya yaymak için içgörülü insanlara kesinlikle hoş geldiniz.

Son olarak, MDL GitHub dizinini tekrar sunuyorum:

https://github.com/baidu/mobile-deep-learning

Bugünün Tavsiyesi

Okumak için aşağıdaki resme tıklayın

Baidu, RPC çerçeve brpc'sini resmi olarak açık kaynaklı

PS4 Pro çok daha büyük, içinde ne var?
önceki
190324 Dazhibaby envanter güncellemesi, daima küçük güneş parlıyor
Sonraki
7.01 trilyon yuan! Dış ticaretin istikrarlı bir şekilde gelişmesi için yeni itici güç nerede?
Chen Yulin'in ailesi gitmesine izin verdi: Kızımız gerçekten suçlu. İçeriden birinin ailesinin yerel bölgede zengin olduğunu söylediğini itiraf ediyoruz?
Herkese, ailesini öldüren 11 yaşındaki bir çocuk olan, şüpheli bir Amerikan draması olan "The Sinner" ı önerin
Fiyat 3498 yuan, vivo X23 resmen satışta
On Beş Yıllık Işık: "Halo" nun Gizli Kaydı (Bölüm 1)
Nisan ayında Fangfei her yerde yeni, yanan şakayık baharı kucaklıyor
Selina "yaşlı anne" olabileceğiyle alay ederken, Zhao Pinlin'in tiz sesi Yuan Yawei tarafından övüldü
Üç yıl sonra, "Quadi" serisinin ikinci şaheseri "Quadi: Resurrection of Heroes" şok edici bir şekilde geri döndü
Tehlikeyi taklit etmeyin! Açgözlü karabatak balıkçılığı yutmak için bir ısırık sahneledi maalesef sıkışmış
"Aşk Azizleri 2" nin çekilmesiyle ilgili olduğundan şüphelenilen "Dedektif Hawthorne" serbest bırakılacak: Sen gittin, ben buradayım
Sonbahar ve kış aylarında pek çok Amerikan dramasını izledikten sonra "My Gifted Girlfriend" yılın en iyisi olarak kabul edildi.
"Kader / EXTELLA" değerlendirmesi: inanç değeri testi
To Top