Matlab'ın Derin Öğrenme Aracıbox'ı Image Classification Projects
Giriş: Görüntü Sınıflandırması için Derin Öğrenme Neden?
Resim sınıflandırması - kategori önceden tanımlanmış bir diziden bir görüntüye bir etiket atama görevi - modern bilgisayar vizyonunun temel taşı haline gelir. Tıbbi tanıdan otonom sürüş, doğru sınıflandırma sürücüler sayısız gerçek dünya uygulamaları. Deep learning, özellikle convolutional sinir ağları (CNNs), doğru sınıflandırma doğruyu daha iyi bir şekilde geliştirdi, genellikle doğrulayıcı veri setlerine giriş için gerekli olan esnekliği sağlar.
MATLAB, sayısal bir hesaplama ve prototipleme için mühendisler ve bilim insanları arasında uzun zamandır favori olmuştur. Deep Learning Toolbox bu yeteneği önceden inşa edilmiş katmanlar, eğitim işlevleri ve sorunsuz donanım hızlandırma ile genişletmektedir.Eğer bir öğrenci gerçek zamanlı bir sınıflandırıcıyı keşfederseniz, araç kutusu veri hazırlığı, modelleme, tasarım, eğitim, değerlendirme ve dağıtım içeren bir yapılandırılmış bir iş akışı sunar.
Deep Learning Toolbox'ın Genel Bakışı
Deep Learning Toolbox (eski olarak Neural Network Toolbox), tasarım, eğitim ve derin sinir ağları için kapsamlı bir dizi işlev ve uygulama sağlar. Ayrıca, çok çeşitli mimarileri destekler:
- [FONT:0)Convolutional Neural Networks (CNNs) görüntü ve uzaysal veriler için.
- [FONT:0) Mevcut Neural Networks (RNNs)) ve LSTMs sıra ve zaman serisi verileri için.
- [FONT:0)Transformer ağları [Döneticileri ve vizyon görevleri için .
- [FONT:0)Generative Adversarial Networks (GANs)[Dönderlik için 1 ).
Alet kutusu, Görüntü İşleme Toolbox, Bilgisayar Vizyon Toolbox ve Paralel Hesaplama Toolbox dahil olmak üzere MATLAB'in daha geniş ekosistemiyle entegre eder ve görüntü sınıflandırması için özellikle faydalı özellikler içerir:
- [FONT:0)Öyle alınan modeller [Dönetici:0] AlexNet, VGG-16/19, GoogLeNet, ResNet, Inception, and effectiveNet, which can be used for transfer learning or feature ekstraksiyon.
- [FONT:0)Data augmentation[[Dönetici:0) nesne aracılığıyla, rotasyon gibi uçarak, çeviri ve yapay olarak enlar için yansıma sağlar.
- [0]Automatic farklılaşma[[Dönetici:0) ve GPU desteği Paralel Hesaplama Aracıbox ve MATLAB'in inşa edilmiş-inENFLT:1) daha hızlı eğitim için.
- [FONT:0]Visualization tools[[Dönlendirme araçları[[Dönlendirme:2) ve [[Döneticileri, aktivasyon haritaları ve eğitim ilerlemeleri.
- [FONT=0)İşletme seçenekleri[[[Dönetici: 0 3) kod nesli, TensorFlow veya ONNX'e ihracat ve MATLAB Kodr aracılığıyla gömülü donanımla doğrudan entegrasyon.
Görüntü Sınıflandırması için Convolutional Neural Networks'ı Anlamak
Çoğu görüntü sınıflandırma sistemlerinin özünde CNN vardır. Bu ağlar hiyerarşik özellikleri öğrenir: erken katmanlar kenarlar ve dokular, orta tabakalar şekilleri ve parçaları tanır ve daha derin tabakalar nesneleri tanımlamak için basit. MATLAB'in Deep Learning Toolbox tüm standart tabaka türlerini uygular -konuşturma2dLayer, maxPooling2dLayer, tam olarak temasa geçtiLayer, yumuşakmaxLayer, ve sınıflandırmaLayer - özel mimarileri birleştirmek için basit.
CNN Design için MATLAB neden kullanın?
TensorFlow veya PyTorch gibi çerçeveler ile karşılaştırıldığında, MATLAB birkaç eşsiz avantaj sunuyor:
- [FONT:0) Interaktif çevre[[Dönetici: 1): TheİLFLT:4) Uygulama, yeni başlayanlar veya hızlı prototipleme için ideal olan ağların sürüklenmesine olanak sağlar.
- [FONT:0) Integrated debugging[[DÜT:1): Herhangi bir katmanda eğitim ve inceleme aktivasyonları ile adım atabilirsiniz, model teşhisi basitleştirebilirsiniz.
- [FONT:0)Memory verimliliğini[[[Dönetici: MATLAB otomatik olarak GPU hafızasını ele alır, manuel kodlamayı rahatsız eden yaygın hataları kaçınır.
- [FONT:0]Built-in metric trackers[[Dönetici: Eğitim otomatik olarak doğru, kayıp ve geçerlilik ölçümleri, gerçek zamanlı olarak arsalanabilir.
Veri Hazırlık: Başarılı Sınıflandırıcılık Vakfı
Model ne kadar sofistike olursa olsun, zavallı veriler zayıf performansa yol açıyor. MATLAB, görüntü veri kümelerini verimli bir şekilde yönetmek için birkaç hizmet sunuyor.
[FONTD: 5)
[[TheD: 16) işlevi, büyük görüntü koleksiyonları yüklemek için standart bir yoldur. Otomatik olarak klasör isimlerine dayanan görüntüler otomatik olarak eğitim, doğrulama ve test setlerine bölünmesi ve görüntülerini topludan hafızadan kaçınmak için okuyabilmektedir. Örneğin:
imds = imageDatastore('path/to/images', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
[imdsTrain, imdsValidation, imdsTest] = splitEachLabel(imds, 0.7, 0.15, 'randomized');
Data Augmentation with [[DDD3|)
Genelleştirmeyi geliştirmek için, özellikle sınırlı verilerle, eğitim sırasında rastgele dönüşümler uygulayabilirsiniz. MATLAB'in OLFLT:9) desteklemektedir:
- Random rotasyon (0-360 derece)
- Rastgele yatay /vertical yansımaları
- Rastgele ölçeklendirme ve çeviri
- Shear ve kontrast düzenlemeleri
Bu dönüşümler, model diskte birden fazla kopya depolamadan her bir dönemi biraz farklı bir görüntü görür. Bu önemli ölçüde aşırı yükleme ve sağlamlığı artırmak için aşırı yüklemeyi azaltır.
Imbalanced Datasets
Gerçek dünya veri setleri genellikle eşit sınıf dağıtımları vardır. MATLAB ağırlıklandırılmış sınıflandırma katmanları sunar (). ve sınıf ağırlıkları otomatik olarak eğitim set frekanslarından hesaplayabilir. Alternatif olarak, özel bir veri deposu veya [[DFLT:11) eğitim seçeneğinin mülkünü kullanarak aşırı azınlık sınıf sınıf sınıf sınıf sınıf sınıflarını aşırı derecede üstlenebilirsiniz.
Transfer Öğrenme: Ön lisanslanmış Modellerle Hızlandırmak
Küçük bir veri kümesi üzerinde çizilebilen derin bir CNN eğitim nadiren pratiktir. Transfer öğrenme büyük bir veri kümesi üzerinde önceden eğitim almış bir modelden yararlanır (örneğin, ImageNet) ve yeni bir görev için iyi bir şekilde iyileşir. MATLAB bu süreci olağanüstü basitleştirir.
Bir Pre-trained Network
[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=I=FONT=FONT=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Ağı Özel Bir Görev için Değiştirin
Ön lisanslanmış bir ağ son katmanları 1000 sınıf ResimNet sınıflandırması için tasarlanmıştır. Sınıflarınıza adapte olmak (say, 5), tam bağlantılı katmanı ve sınıflandırma katmanını değiştirirsiniz:
lgraph = layerGraph(net);
newLayers = [
fullyConnectedLayer(numClasses, 'Name', 'fc_new', 'WeightLearnRateFactor', 10, 'BiasLearnRateFactor', 10)
softmaxLayer('Name', 'softmax_new')
classificationLayer('Name', 'classoutput_new')
];
lgraph = replaceLayer(lgraph, 'fc1000', newLayers(1));
lgraph = replaceLayer(lgraph, 'fc1000_softmax', newLayers(2));
lgraph = replaceLayer(lgraph, 'ClassificationLayer_fc1000', newLayers(3));
Güzel-Tuning vs. Feature Ekstraksiyon
İki ortak strateji:
- [FONT:0)Ana Sayfanın Çıkarılması[[Dönetici: 1 ): Erken tabakaları Freeze (öğrenme oranını) ve yeni sınıflandırma tabakalarını sadece yeni veri setinin orijinal veri setine benzediği zaman kullanışlı.
- [FONT:0]Fine-tuning[[Dönetici: Her katman küçük bir öğrenme oranıyla ilgili tüm katmanlar daha iyi veya ImageNet'den önemli ölçüde farklı olduğunda. MATLAB, her katmanın ne kadar adapte olduğunu kontrol etmenizi sağlar.
MATLAB'de Transfer Öğrenmesi için Pratik İpuçları
- Her zaman önceden eğitilmiş ağ tarafından beklenen giriş büyüklüğüne resim yeniden çizer (örneğin, 224x224 for ResNet). Eğitim sırasında verimli yeniden yapılanma için [[Düzücükler için.
- Aşırılık için izleme için geçerli olan verileri kullanın; eğer geçerlilik doğruluk plasleri erken, eğitim çağını azaltır.
- MobilNet gibi farklı önceden eğitilmiş mimarilerle deney daha hızlı ama daha az doğru; ResNet-152 gibi daha derin modeller bir hesaplama maliyetinde daha yüksek doğruluk sunar.
Sınıflandırıcılığı Eğitim: Seçenekler, Hiperparametreler ve İzleme
Ağ tanımlandığında ve veriler hazırlanırken, veri deposu, tabaka grafiği ve eğitim seçenekleri ile birlikte “DÜDÜDÜDÜSÜSÜŞÜNÜ” diyorsunuz.
Eğitim Seçenekleri
[FONT: {2} işlevi, neredeyse her eğitim yönünü kontrol etmenize olanak sağlar:
- [FONT:0]Solver [Döntgen: 1) “Sgdm” (varızla sayısız gradyan) veya “yakıtlı” Âdem genellikle iyileştirici için daha hızlı bir şekilde yakınlaşır.
- [FONT:0)InitialLearnRate[Döntilmiş: 1) 1e-4 iyi eğitim için sıfırdan eğitim için.
- [FONT:0)MiniBatchSize[[Dönetici: GPU belleke bağlı olarak; ortak değerler 32, 64 veya 128.
- [FONT:0)MaxEpochs[[Dönetici: 1 ): Eğitim verileri aracılığıyla tam geçiş sayısı. 10-20 ile iyi bir şekilde başlayın.
- [FONT=0]ValidationData[[Dönetici: Her bir dönemi izlemek için geçerli bir veri deposu sağlayın.
- [FONT:0]ValidationFrequency[[Dönetici: Geçerlilik kontrolleri arasında kaç tane iterasyon.
- [FONT:0]Plots[Dönetici: “Dönetici”, canlı doğruluk ve kaybın gerçek arsalarını görmek için.
- [FONT=0)LearnRateSchedule[[Dönetici: Belirli bir dizi dönemden sonra öğrenme oranını bırakın (örneğin, “başlangıç”).
- [FONT:0)L2Regularizasyon[[DÜT:1): Aşırılık önlemeyi önlemek için Kilo çürümesi (default 1e-4).
Eğitimin İzleme Eğitimi
MATLAB'in eğitim arsası hem eğitim hem de geçerlilik doğruluğu / zaman içinde kaybın devam ederken iyileştirmeyi durdurursa, model aşırı yüklemeyi sağlar - ağ boyutunu azaltır veya daha güçlü bir augmentasyon kullanarak.
Erken Durma ve Checkpointing
Doğrudan inşa edilmedikçe, eğitim seçeneklerinin mülkünü kullanarak erken durabilirsiniz. Alternatif olarak, her sabit sayıda dönem kurtarma seçeneği kullanın, ilerlemenizi sağlamanızı sağlar.
Evaluating Model Performansı
Eğitimden sonra, modelin, görünmez verilere iyi genelleştirildiğini doğrulamanız gerekir. MATLAB birkaç değerlendirme aracı sağlar.
Sınıflama Test Resimleri
YPred = classify(net, imdsTest);
YTest = imdsTest.Labels;
accuracy = sum(YPred == YTest) / numel(YTest);
Confüzyon Matrix ve Per-Class Metriks
[[Use theFLT:26), modelin hata yaptığını görselleştirmek için. sınıfsal hassasiyet için, hatırla ve F1-print, kullanım:
confMat = confusionmat(YTest, YPred);
Ardından metrikleri manuel olarak hesaplayın veya wwwC analizi için tahmin puanları elde etmek için [[ŞUYGÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜyetim.
ROC ve AUC
İkili sınıflandırma veya tek-vs-all senaryoları için, alıcı işletim karakteristik (ROC) eğrileri kullanarak arsayabilirsiniz.Bu özellikle de eşiğin önemli olan tıbbi görüntülemede önemlidir.
İşsizlik: Üretim Modelinin Üretimine Alınması
MATLAB'in gücü, prototypingin ötesine uzanır - eğitimli modelleri gerçek dünya uygulamaları içine dağıtmak için birden fazla yol sunar.
Diğer Çerçevelere ihracat
- [FONT=0)TensorFlow/Keras[Döntilmiş: · 07.30'a ihracat yapmak için, sonra TensorFlow'e dönüştürülür.
- [FONT:0]PyTorch[[DÜDÜT:1): Benzer ONNX ihracat yolu.
MATLAB Coder ve GPU Coder
Bir MATLAB runtime gerektiren sınıflandırıcılara giriş yapmak için tasarlanmıştır. GPU Coder, kenardaki gerçek zamanlı çıkarımlara izin verir.
MATLAB Compiler ve Üretim Server
Sınıflandırıcıyı bir köşeli veya paylaşılan bir kütüphane olarak paketleyin. MATLAB Production Server web uygulamaları, mobil uygulamalar veya işletme yazılımı tarafından tüketilebilecek RESTful APIs olarak modeller dağıtmanıza olanak tanır.
Gömülü Donanıma İş Etmek
Deep Learning Toolbox'ın ARM Cortex-A ve NVIDIA Jetson için desteği ile, doğrudan sistemleri barındırmak için optimize edilmiş ağları dağıtabilirsiniz.TheurFLT:32) işlevi, kaynaklanmış ortamlara uygun donanım optimize edilmiş kod oluşturabilir.
Gerçek Dünya Uygulamaları ve Vaka Çalışmaları
Mühendisler ve araştırmacılar MATLAB'in Deep Learning Toolbox'ı sayısız alanda görüntü sınıflandırma için kullandılar:
- [FONT:0)Medical görüntüleme[DÜT:1): PİLMEYE KOLOJİ - PİLMEYE KOLOJİ:0)Sağlıklı görüntüleme[DÜT 1:0): PİLMEYE KOLOJİ KURALLARI: Diyabetik retinopati için R-rayışınları, kanser tanısı için patolojik görüntüler.
- [FONT:0] Özerk sürüş[[Dönetici: Trafik işaretlerini, yayaları ve araç gömülü sistemlerde kullanılan mobil ağları kullanarak şerit işaretlerini edin.
- [FONT:0)Agriculture[[[DÜT:1): Bitki hastalıklarının yaprak görüntülerinden tanımlanması, olgunluk yoluyla meyvelerin verilmesi.
- [FONT=0)Manufacturing[DÜDÜT:1): Assembly hatlarında kusurların görsel denetimi, genellikle GPU Kodr kullanarak gerçek zamanlı çıkarım ile.
- [FONT:0) Güvenlik): gözetim görüntülerinde yüz tanıma ve nesne algılama.
Beton örnekleri için, bkz.TELFLT:0)MATLAB'in resmi transfer öğrenme öğreticisi[Dönetici:2) ve [[Dönetici görüntülemede derin öğrenme üzerine bu makale ).
Diğer Derin Öğrenme Çerçeveleri ile Karşılaştırma
MATLAB açık kaynak olmasa da, araç zincir zaten MATLAB ekosisteminde çalışan mühendisler için eşsiz bir entegrasyon sunar.For team that require free, open-source solutions, TensorFlow or PyTorch tercih edilebilir. Ancak, MATLAB'in avantajları şunlardır:
- [FONT:0]Ease of use[[Dönetici: Python ortamlarını, sürüm çatışmalarını veya bağımlılıklarını yönetmek zorunda değil.
- [FONT=0]Simulink entegrasyonu[[Dönetici: Sistem düzeyinde modelleme için, derin öğrenme bloklarının daha büyük simülasyonlara dahil edebilirsiniz.
- [FONT:0]Built-in sinyal ve görüntü işleme): Pre processinging steps can be written in the same language without importing additional library.
MATLAB kullanıcıları ile işbirliği kritik olan projeler için, INNX'e ihracat, içilebilirlik sağlar.ETHFLT:0)Buradaki ING ihracat hakkında daha fazla bilgi sahibi olun).
Ortak Pitfalls ve Them'dan Nasıl Kaçırmak
- [FONT=0)Input büyüklüğü yanlış bir eşleşme[[Dönetici: Her zaman giriş katmanının görüntülerinizin boyutunu karşılaştırdığını doğrulayın.UseENFLT:33).
- [FONT:0)Genelleştirme[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜŞÜNÜŞÜNÜŞÜNÜ: SİADYİ, Augmentasyon artırın, ağ kapasitesinin azaltılması veya daha güçlü düzenlileştirilmesi.
- [FONT:0]Slow eğitimi[[[Dönetici:) uyumlu bir GPU'ya sahip olmanızı sağlayın ve MATLAB bunu kullanıyor (yurasıyla kontrol edin)
- [FONT:0]Memory hataları: Mini-batch boyutunu azaltın veya kullanım için [[GİLMÜÇÜÇÜÇÜÇÜÇÜye Olmayan veri kümeleri için diziler kullanın.
- [FONT:0) Sınıf dengesizliğini görmezden gelir ([Dönetici: Her zaman etiketlerin dağılımını kontrol edin; kilo kaybı veya aşırılık kullanın.
Gelişmiş Konular: Özel Eğitim Halkaları ve Araştırma
Araştırmacılar devlet-öğrenme, MATLAB, özel eğitim döngülerini kullanarak MATFLT:36'leri ve otomatik farklı farklılığı uygulamanız için, yeni katmanlar, kayıp fonksiyonları veya eğitim prosedürleri (örneğin, meta-öğrenme, adversarial eğitim).
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
MATLAB'in Deep Learning Toolbox, MATLAB'in daha geniş ekosistemi için güçlü, kullanıcı dostu bir ortam sağlar - hem akademik araştırma hem de endüstriyel dağıtım için mükemmel bir seçim yapın.Bu makalede belirtilen yapısal iş akışlarını takip ederek, gelişmiş uygulamalar için gerekli olan esnekliğin tamamını kullanabilirsiniz.