Skip to main content

Etiket: Derin öğrenme

MATLAB ile Kestirimci Bakım: İşletme Maliyetlerini Düşürün

Endüstriyel ekipmanların plansız arızalar sebebi ile duraklaması ciddi üretim kayıplarına yol açmaktadır. Kestirimci bakım (predictive maintenance), sensör verileri ve matematiksel modeller kullanarak bir makinenin ne zaman arıza vereceğini öngörmeye çalışır. Doğru uygulandığında bu yaklaşım, gereksiz bakım işlemlerini azaltır, üretim verimliliğini artırır ve işletme maliyetlerini düşürür. Fiziksel modeller ve makine öğrenimi algoritmaları ile birlikte bu süreç, Predictive Maintenance Toolbox ile hızlandırılabilir. Toolbox, motorlar, dişli kutuları, rulmanlar ve piller gibi uygulamalara yönelik durum izleme ve tahmine dayalı bakım algoritmalarını tasarlamaya yardımcı olur.

Bu yazıda, kestirimci bakım için genel iş akışını özetleyecek ve MATLAB ekosistemindeki toolboxları kullanarak uygulanabilir bir senaryo sunacağız. Senaryoda bir pompanın sensör verileri ile oluşturulan dijital ikizden (digital twin) ve rulman arızası örneğinden yararlanacağız. Anlatılan adımlar, gerçek MathWorks örneklerine dayanmaktadır. Aynı yaklaşımları projelerinizde uygulayabilirsiniz.

Predictive Maintenance Toolbox ile Neler Yapabilirsiniz?

MathWorks’ün Predictive Maintenance Toolbox’ı, durum izleme ve kestirimci bakım algoritmalarını tasarlamak için kapsamlı yetenekler sağlar. Toolbox;

  • Koşul göstergeleri ve anomali tespiti tasarlamaya yardımcı olur. Diğer pek çok uygulama gibi rulman, motor ve batarya izleme için özel örnekler sunar. Teşhissel özellik tasarımı (Diagnostic Feature Designer) uygulaması ile zaman, frekans ve zaman-frekans alanlarındaki özellikleri interaktif olarak çıkartıp sıralamanızı sağlar. Kullanıcılar özellikleri görselleştirebilir, nominal ve arızalı veriler arasında en ayırt edici olanları belirleyebilir ve bu özellikleri daha sonra makine öğrenmesi modellerine aktarabilir.
  • Arıza tespiti ve teşhisi için istatistiksel, makine öğrenmesi ve derin öğrenme modellerini eğitmeyi destekler. Koşul göstergeleri kullanılarak sağlıklı ve arızalı durumları ayırt eden karar modelleri geliştirilebilir. Derin öğrenme kullanarak rulman arızalarının teşhisi gibi sorunlar için scalogram (süreç içerisinde sinyalin sürekli dalgacık dönüşümü sonucu oluşan zaman‑frekans temsili) üzerinden transfer öğrenimi yapılabilir.
  • Kalan kullanım ömrü (RUL) tahmini için özel modeller içerir. RUL, bir sistemin tamir ya da değişim gerektirmeden önceki beklenen kullanım süresidir. Toolbox hem trend‑tabanlı degradasyon modelleri (lineer veya üssel) hem de benzerlik tabanlı ve gözetimli hayatta kalma modelleri gibi yaklaşımları barındırır. Bu modeller, zaman içinde değişen koşul göstergelerinin istatistiksel özelliklerini kullanarak bir test makinesinin kalan ömrünü olasılıksal olarak tahmin eder.
  • Veri yönetimi, simülasyon ve dağıtım olanakları sunar. Ölçülen verileri yerel dosyalardan veya bulut depolarından içe aktarabilir, Simulink/Simscape modelleri ile arıza verisi üretebilir ve algoritmaları C/C++ koduna çevirerek uç cihazlara dağıtabilirsiniz.

Predictive Maintenance Toolbox İş Akışı

Aşağıdaki adımlar Predictive Maintenance Toolbox’ın sunduğu yetenekler kullanılarak gerçekleştirilen bir kestirimci bakım iş akışını özetler.

Veri Toplama ve Organize Etme

Bakım algoritmalarının temelini sensör verisi oluşturur. Vibrasyon, sıcaklık, basınç, akım veya voltaj sensörlerinden elde edilen ölçümler; yerel dosyalarda, veri tabanlarında veya bulut ortamlarında toplanır. Toolbox, bu verileri ensemble formatında organize etmeyi kolaylaştırır ve Simulink/Simscape modelleri ile simülasyon yoluyla arıza verisi üretebilmenizi sağlar. Böylece gerçek arıza verisi az olduğunda dijital ikiz kullanarak eğitim verisi oluşturabilirsiniz.

Özellik Tasarımı ve Sıralama

Bir makinenin sağlıklı veya arızalı olduğunu belirleyen koşul göstergeleri tanımlanmalıdır. Diagnostic Feature Designer uygulaması; zaman alanı istatistikleri (rms, pik faktörü vb.), frekans alanı ölçümleri (spektral kurtosis, zarf spektrumu), zaman‑frekans temsilleri ve döner makine metriklerini interaktif olarak üretir. Bu özellikleri görselleştirip hangi göstergelerin nominal ve arızalı verileri en iyi ayırdığını görebilir ve denetimli/denetimsiz ya da prognostik sıralama yöntemleri ile en etkili özellikleri seçebilirsiniz.

Arıza Tespiti ve Teşhisi

Seçilen koşul göstergeleri, makine öğrenmesi modellerini eğitmek için kullanılır. Toolbox, destek vektör makineleri (SVM), karışık ağaçlar, k‑en yakın komşu (kNN), rastgele ormanlar ve derin sinir ağları gibi pek çok algoritma sağlar. Örneğin derin öğrenme ile rulman arızalarının teşhisi için titreşim sinyalleri scalogram’lara dönüştürülerek transfer öğrenimi uygulanabilir; bu yöntem küçük veri kümelerinde bile yüksek doğruluk sunar. Arıza tespiti işlemi iteratiftir; farklı özellik ve model kombinasyonları denenerek en iyi sonuç veren yapı seçilir.

Kalan Ömür Tahmini (RUL)

Arıza tespitinden sonra, makinenin ne kadar daha çalışabileceğini tahmin etmek gerekir. RUL, koşul göstergelerinin zaman içindeki eğilimine dayalı olarak istatistiksel bir dağılım şeklinde hesaplanır. Predictive Maintenance Toolbox; üssel veya lineer degradasyon modelleri, benzerlik tabanlı modeller ve hayatta kalma modelleri gibi çeşitli yöntemleri destekler. Benzerlik tabanlı bir RUL tahmininde, run‑to‑failure verileri içeren bir ensemble kümesi hazırlanır, trendlenebilir özellikler seçilir, sensör birleşimi ile bir sağlık göstergesi oluşturulur ve eğitim verisi ile benzerlik ölçümleri kullanılarak tahminci eğitilir.

Uygulama ve Dağıtım

Algoritmalar eğitildikten sonra, kod üretimi ile uç cihazlara veya bulut sistemlerine dağıtılabilir. Simscape tabanlı dijital ikizler, geliştirilen algoritmanın farklı arıza senaryolarında nasıl çalıştığını test etmek için kullanılır. MATLAB Coder ve Simulink Coder, modelleri C/C++ koduna çevirerek PLC’lere, mikrodenetleyicilere veya IoT ağ geçitlerine gömülebilir.

Pompa İstasyonunda Kestirimci Bakım

Bir kimya tesisinde dört kademeli santrifüj pompalar prosesi beslemektedir. Geçmişte pompa arızaları, üretimi durdurmuş ve yüksek maliyetlere yol açmıştır. Bu nedenle, bir kestirimci bakım sistemi kurarak pompaların durumunu izlemek ve arızaları önceden tespit etmek istiyoruz. Senaryoda Predictive Maintenance Toolbox, Simscape ve çeşitli MATLAB toolbox’ları birlikte kullanılacak.

Dijital İkiz ile Eğitim Verisi Oluşturma

Gerçek arıza verisi sınırlı olduğundan, Simscape tabanlı bir triplex pompa modeli kullanıyoruz. MathWorks’ün File Exchange’te sunduğu Predictive Maintenance in a Hydraulic Pump örneği, Simscape ile modellenen bir triplex pompa ve bu pompanın çıkış basıncını izleyerek hangi bileşenin arızalandığını tespit eden bir algoritma içerir. Model;

  • Sızdırmazlık kaçakları, tıkanmış girişler, rulman aşınması ve kırık motor sargıları gibi bozulmaları ayrı ayrı simüle edebilir.
  • Simülasyon sonuçlarını tekrar kullanarak eğitim süresini kısaltmaya yönelik kod örnekleri sağlar.
  • Gerçek sensör verileri ile birleştirilebilir; böylece gerçek dünyaya uygun bir eğitim seti elde edilir.

Simulink modelini kullanarak her arıza durumunda pompanın çıkış basıncı, vibrasyon ve akım sinyalleri oluşturulur. Bu veriler ensemble formatında düzenlenir ve her koşul için etiketlenir. Daha sonra veriler Diagnostic Feature Designer uygulamasına aktarılır.

Özellik Çıkarma ve Model Eğitimi

Pompa verileri üzerinde; ortalama, RMS, spektral kurtosis, zarf spektrumu ve harmonik bileşenler gibi özellikler çıkarılır. Diagnostic Feature Designer’ın denetimli sıralama modunu kullanarak arıza durumlarını en iyi ayırt eden özellikler seçilir. Seçilen özellikler bir tabloya aktarılır ve şu adımlar uygulanır:

  1. Arıza sınıflandırma: Seçilen özellikler ile bir makine öğrenmesi sınıflandırıcısı (örneğin, rastgele orman veya SVM) eğitilir. Veri seti, her bir arıza türü için eğitim ve test kümelerine ayrılır. K‑katlı çapraz doğrulama ile modelin doğruluk ve F1 skorları değerlendirilir.
  2. Gerçek zamanlı izleme: Eğitilen model, gerçek pompa verileri üzerinde çalıştırılır. Model çıkışı “sağlıklı”, “rulman aşınması” gibi sınıflar döndürür ve işletme sistemi operatörleri anında bilgilendirilir.
  3. RUL tahmini: Sızdırmazlık kaçakları ve rulman aşınması için koşul göstergelerinin zaman içindeki eğilimi izlenir. Üssel degradasyon modeli ve benzerlik tabanlı model gibi RUL tahmincileri eğitilir. Örneğin, rulman aşınması göstergesi her simülasyonun sonuna kadar kaydedilir; “trendability” ve “prognosability” metrikleri hesaplanarak en güvenilir gösterge seçilir ve fit ile degradasyon modeli parametreleri tahmin edilir. Ardından predictRUL fonksiyonu, her pompa için kalan ömür dağılımını verir.

Deneme Yapabileceğiniz Hazır Örnekler

Kullanıma hazır bazı örnekler aşağıdadır.

Derin Öğrenme ile Rulman Arızası Tanıma

Pompalar haricinde, döner makinelerde en sık görülen arızalardan biri rulman hasarıdır. MathWorks’ün Rolling Element Bearing Fault Diagnosis Using Deep Learning örneği, Wavelet Toolbox, Predictive Maintenance Toolbox ve Deep Learning Toolbox’ı bir araya getirerek 1‑boyutlu titreşim sinyallerini 2‑boyutlu scalogram görüntülerine dönüştürür ve önceden eğitilmiş bir evrişimli sinir ağı ile arıza sınıflandırması yapar. Bu yöntem, geleneksel yaklaşımlarda gereken manuel özellik çıkarımı süresini azaltır ve küçük veri kümelerinde bile yüksek doğruluk sağlar.

Örnekte kullanılan Machinery Failure Prevention Technology (MFPT) verisi, farklı yük ve hız koşullarında sağlıklı, dış bilezik hatalı ve iç bilezik hatalı rulmanlardan oluşan 20 veri seti içerir. Titreşim sinyalleri sürekli dalgacık dönüşümü (CWT) ile zaman‑frekans düzleminde temsil edilerek scalogram’lar elde edilir ve bu görüntüler transfer öğrenimi için bir resim sınıflandırma ağının girişine beslenir. Uygulama adımları şunlardır:

  1. Veri Hazırlama: MFPT veri seti indirildikten sonra her ölçüm için titreşim sinyali (gs) ve örnekleme hızı (sr) alınır. İç ve dış bilezik hatalarının kritik frekansları hesaplanır.
  2. Scalogram Oluşturma: cwt fonksiyonu veya plotBearingSignalAndScalogram yardımcı fonksiyonu kullanılarak titreşim sinyali scalogram’a dönüştürülür. Scalogram’ın iki boyutu zaman ve frekansı temsil eder.
  3. Model Eğitimi: Hazır bir derin sinir ağı (örneğin SqueezeNet) yüklenir, son katmanları MFPT verisindeki sınıf sayısına göre yeniden yapılandırılır ve ağırlıkları dondurarak transfer öğrenimi yapılır. Eğitim sırasında augmentedImageDatastore kullanılarak veri artırımı yapılabilir.
  4. Test ve Değerlendirme: Ayrılmış test verileri ile model doğruluğu hesaplanır. Confusion matrix ve ROC eğrileri değerlendirme için kullanılabilir. Eğitim tamamlandığında, kod MATLAB Coder ile gerçek zamanlı uygulamalara gömülebilir.

Bu yöntem, pompa senaryosunda da kullanılabilir: pompa vibrasyon verileri scalogram’lara dönüştürülüp rulman arızaları bir derin ağla sınıflandırılabilir. Transfer öğreniminin sağladığı hız ve doğruluk avantajları, veri kümesinin küçük olduğu durumlarda özellikle önemlidir.

Kalan Ömür Tahmini ve Bakım Planlaması

Arıza türü tespit edildikten sonra, bakım planlaması için kalan ömrün tahmin edilmesi gerekir. RUL tahmini modelleri, koşul göstergelerinin zaman serilerindeki eğilimleri analiz ederek arızanın ne kadar süre sonra gerçekleşeceğine ilişkin olasılık dağılımları üretir. Predictive Maintenance Toolbox; üssel ve lineer degradasyon modelleri, benzerlik tabanlı modeller ve hayatta kalma modelleri gibi seçenekler sunar. Benzerlik tabanlı bir tahmin için tipik adımlar şöyledir:

  1. Veri hazırlığı: Run‑to‑failure (arızaya kadar çalışma) verilerini içeren bir ensemble oluşturulur. PHM 2008 turbofan motoru veri seti gibi açık veri setleri bu amaçla kullanılabilir. Her makine için zaman, çalışma koşulları ve çoklu sensör ölçümleri tablo halinde saklanır.
  2. Çalışma rejimi kümeleme ve normalizasyon: Farklı çalışma koşullarındaki veriler birbiriyle karşılaştırılabilmesi için kümeleme ve normalizasyon yapılır. Bu adım, hız ve yük gibi değişkenlerin etkisini azaltır.
  3. Trendability analizi ve sağlık göstergesi oluşturma: Tek tek özelliklerin eğilimleri incelenir, en trendlenebilir ve prognostik özellikler seçilir ve sensör füzyonu ile tek bir sağlık göstergesi elde edilir.
  4. Model eğitimi ve tahmin: Sağlık göstergesi kullanılarak bir benzerlik tabanlı RUL modeli (residualSimilarityModel veya pairwiseSimilarityModel) eğitilir. predictRUL fonksiyonu, her yeni ölçüm geldiğinde kalan ömür tahminini günceller.

RUL tahmini sonucunda, bakım müdahalelerinin ne zaman yapılacağı planlanabilir. Örneğin bir pompanın rulman aşınmasının 200 saat içinde arızaya yol açacağı tahmin ediliyorsa, planlı duruş buna göre ayarlanır. Tahminler belirsizlik içerdiğinden, güven aralıkları veya risk tabanlı karar yöntemleri ile desteklenmelidir.

Sonuç

MATLAB ve Predictive Maintenance Toolbox, kestirimci bakım algoritmaları geliştirmek için uçtan uca bir çözüm sunar. Diagnostic Feature Designer ile özellik çıkarmadan makine öğrenmesine, Simscape ile dijital ikiz oluşturup arıza verisi üretmeye ve RUL tahmini ile bakım planlamasına kadar tüm aşamalar tek bir ortamda gerçekleştirilebilir. Bu yazıdaki pompa senaryosu ve rulman örneği, MathWorks’ün gerçek örneklerinden uyarlanmış olup, pratikte uygulanabilir adımlar içerir. Sensör verisini toplayıp koşul göstergeleri tasarlamak, arıza tespit ve teşhisi için uygun modeller seçmek ve kalan ömrü tahmin etmek, modern endüstriyel tesislerde arıza riskini azaltmak için kritik öneme sahiptir.

Kestirimci bakım projelerine başlarken, mevcut verinin kalitesi ve miktarı ile başlayın. Yeterli arıza verisi yoksa, Simscape tabanlı modeller ve benzetimlerle veri üretin ve makine öğrenmesi algoritmalarınızı bu verilerle eğitin. Küçük veri kümeleri için transfer öğrenimi ve otomatik özellik çıkarımı büyük avantaj sağlar. Son olarak, RUL tahminlerinin belirsizlik içerdiğini ve bakım kararlarının mühendislik yargısı ile desteklenmesi gerektiğini unutmayın. İyi planlanmış bir kestirimci bakım stratejisi, ekipman ömrünü uzatır ve üretim hatlarınızın kesintisiz çalışmasını sağlar.

Derin Öğrenme Modellerini PyTorch, TensorFlow ve MATLAB ile Dönüştürme

Bu yazıda, derin öğrenme modellerinin PyTorch, TensorFlow ve MATLAB platformları arasında nasıl dönüştürülebileceğine ve bu dönüşümün sağladığı avantajlara değineceğiz. Özellikle PyTorch model dönüştürme ve TensorFlow model aktarımı süreçleri, farklı platformlarda çalışan araştırmacılar için kritik öneme sahiptir.

Günümüzdeki akademik çalışmalar, öğrenci projeleri ya da endüstriyel uygulamalarda, sıklıkla birden fazla yazılımın birlikte kullanılması gerekebilmektedir. Bu durum, özellikle farklı uzmanlık alanlarından gelen ekiplerin birlikte çalıştığı, çeşitli donanım altyapılarının söz konusu olduğu projelerde yaygın olarak karşımıza çıkmaktadır. MATLAB’in de yeteneklerine baktığımızda, farklı platformlarla birlikte çalışabilme özelliği dikkat çekmektedir. Mühendislik ve bilimsel uygulama çalışmalarında da bu durum çok yaygındır.

MATLAB, bu ihtiyaca yanıt verebilecek şekilde en popüler yapay zekâ kütüphanelerinden ikisi olan PyTorch ve TensorFlow gibi popüler derin öğrenme platformlarıyla birlikte çalışabilme yeteneğine sahiptir. Bu bağlamda MATLAB derin öğrenme iş akışları, mühendislik ve bilimsel uygulamalarda yaygın olarak tercih edilmektedir. ONNX (Open Neural Network Exchange) formatı sayesinde de farklı modeller farklı platformlar arasında taşınabilir hale gelmektedir. Bu durum geliştirme sürecini hızlandırırken modelin ortamlarda yeniden kullanılmasına da olanak tanımaktadır.

Farklı derin öğrenme platformları arasında model dönüşümü hem esneklik hem de iş birliği açısından geliştiricilere büyük bir kolaylık sunmaktadır.

Bu blog yazımızda, sizlere MATLAB, TensorFlow veya PyTorch fonksiyonlarını kullanarak algoritmalarınızın gidişatına nasıl yön verebileceğinizi göstereceğiz. Böylece derin öğrenme eğitimi veya endüstriyel projelerinizde doğru iş akışını seçebilirsiniz.

  1. Modelleri TensorFlow ve PyTorch’tan MATLAB’a aktarma
  2. Modelleri MATLAB’den TensorFlow ve PyTorch’a aktarma

MATLAB, PyTorch® ve TensorFlow™ arasında derin öğrenme modellerini dönüştürmek için doğru fonksiyonları ve diğer kaynakları gösteren blog yazımızı okumaya başlamadan önce iki kaynağı inceleyebilirsiniz; Derin Öğrenme Araç Kutusu, TensorFlow, PyTorch ve ONNX Arasında Birlikte Çalışabilirlik ve TensorFlow, PyTorch ve ONNX’ten Modelleri İçe Aktarmaya İlişkin İpuçları.

Modelleri MATLAB’e Aktarma

PyTorch veya TensorFlow’dan modelleri sadece bir satır kodla içe aktarabilirsiniz. Bu sayede farklı platformlarda geliştirilmiş ağları doğrudan MATLAB derin öğrenme ortamına taşıyabilir ve üzerinde işlem yapabilirsiniz.

     
Ne?PyTorch modellerini içe aktarın.TensorFlow modellerini içe aktarın.PyTorch ve TensorFlow modellerini etkileşimli olarak içe aktarın.
Nasıl?importNetworkFromPyTorch fonksiyonunu kullanın.importNetworkFromTensorFlow fonksiyonunu kullanın.Deep Network Designer uygulamasını kullanın.
Ne zaman?R2022b’de tanıtıldı.R2023b’de tanıtıldı.İçe aktarma özelliği R2023b’de tanıtıldı.

Hızlıca Bir Örnek Yapalım

Önceden eğitilmiş bir PyTorch görüntü sınıflandırma modelini MATLAB ortamına nasıl aktarabileceğimizi adım adım inceleyelim.

TorchVision kütüphanesinde yer alan MnasNet modeli kullanılacaktır. Bu model, daha önce PyTorch’ta eğitilmiş ve doğruluk gibi performans ölçütleri değerlendirilmiştir.

import torch
from torchvision import models
model = models.mnasnet1_0(pretrained=True)

İlk olarak PyTorch modelini gözlemleyerek dönüştürme sürecine hazırlıyoruz. Bu adım, modelin giriş verisine verdiği yanıtı takip ederek çalışma şeklini kaydetmemizi sağlar. PyTorch modelinin nasıl izleneceği hakkında daha fazla bilgi edinmek için Torch belgelerine gidin: Bir fonksiyonu izleme başlığına göz atabilirsiniz. İzleme işleminin ardından, PyTorch modelini kaydederek MATLAB ortamına aktarmaya hazır hale getiriyoruz.

X = torch.rand(1,3,224,224)
traced_model = torch.jit.trace(model.forward,X)
traced_model.save(“traced_mnasnet1_0.pt”)

Şimdi MATLAB tarafına dönebiliriz ve ONNX formatı üzerinden dışa aktardığımız modeli, importNetworkFromPyTorch fonksiyonunu kullanarak MATLAB ortamına içeri aktarabiliriz. Bu adımda, modelin giriş boyutlarını belirtmek için PyTorchInputSizes ad-değer bağımsız değişkenini belirtmemiz gerekir.

net = importNetworkFromPyTorch(“mnasnet1_0.pt”,PyTorchInputSizes=[NaN,3,224,224]
net =
 
  dlnetwork with properties:
 
                 Layers: [153×1 nnet.cnn.layer.Layer]
    Connections: [162×2 table]
        Learnables: [210×3 table]
                    State: [104×3 table]
     InputNames: {‘InputLayer1’}
 OutputNames: {‘aten__linear12’}
            Initialized: 1
 
  View summary with summary.

Böylece içe aktarma fonksiyonu bir grup görüntü için giriş katmanını otomatik olarak oluşturur ve workspace’mize ekler. Daha sonrasında içeriye aldığımız modeli sınıflandırmak istediğiniz görüntü için kullanmak üzere, girdimizi modelimize uygun formatta düzenleriz ve giriş boyutlarını modelimizin giriş katmanına göre uygun hale getiririz.

Im_og = imread(“peacock.jpg”);
InputSize = [224 224 3];
Im = imresize(Im_og,InputSize(1:2));

MnasNet’in girdileri için daha fazla ön işleme gerekir. Bu sebeple görüntüyü yeniden ölçeklendirmemiz gerekmektedir. Ardından, eğitim görüntülerinin ortalamasını çıkarıp eğitim görüntülerinin standart sapmasına bölerek görüntüyü normalleştiririz. Daha fazla bilgi için Girdi Verisi Ön İşleme bölümünü inceleyebilirsiniz.

Im = rescale(Im,0,1);
 
meanIm = [0.485 0.456 0.406];
stdIm = [0.229 0.224 0.225];
Im = (Im – reshape(meanIm,[1 1 3]))./reshape(stdIm,[1 1 3]);

Görüntüyü bir dlarray nesnesine dönüştürürüz ve “SSCB” (spatial, spatial, channel, batch) boyutlarıyla biçimlendiririz. Böylece MATLAB, görüntüyü derin öğrenme modelinde doğru şekilde işler.

Im_dlarray = dlarray(single(Im),”SSCB”);

Artık görüntüyü sınıflandırıp tahmin edilen etiket değerini bulma aşamasına geldik. Bunun için de aşağıdaki kodu kullanabiliriz.

prob = predict(net,Im_dlarray);
[~,label_ind] = max(prob);

Son olarak görüntüyü ve sınıflandırma sonucunu görselleştirerek sonucu inceleyebiliriz.

imshow(Im_og)
title(strcat(“Classification Result: “,ClassNames(label_ind)),FontSize=16)

TensorFlow da bir modeli içe aktarmak PyTorch’tan bir modeli içe aktarmaya oldukça benzerdir. Elbette bunun yerine importNetworkFromTensorFlow fonksiyonunu kullanmamız gerekir. Bunun yanında TensorFlow modelinizin de SavedModel biçiminde olması ve Python tarafında aşağıdaki kodu kullanarak kaydedilmesi gerektiğini unutmamalıyız.

model.save(“myModelTF”)

Daha fazla örnek için importNetworkFromPyTorch ve importNetworkFromTensorFlow fonksiyonlarının referans sayfalarına ve Harici Platformlardan Önceden Eğitilmiş Ağlar hakkındaki dokümantasyon sayfasına göz atabilirsiniz.

Neden Modelleri MATLAB’e Aktarmalısınız?

Kısaca söylemek gerekirse, bir modeli MATLAB’e aktardığınızda artık o model bir MATLAB ağı haline gelir. Bu da şu anlama gelir: Aktardığınız ağ ile MATLAB’in yerleşik araçlarını kullanarak aşağıdaki tüm işlemleri gerçekleştirebilirsiniz. Daha fazla bilgi için Deep Learning Toolbox’a göz atabilirsiniz.

 GörevÖrnekDaha Fazla Kaynak
Kolayca transfer öğrenimi gerçekleştirin ve ağı yeniden eğitin.Derin Ağ Tasarımcısı Kullanarak Transfer Öğrenimi için Ağ HazırlamaTransfer Öğrenimi için Derin Sinir Ağını İçe Aktarın
Aktivasyonları görselleştirin, kararları açıklayın ve ağın sağlamlığını doğrulayın (Deep Learning Toolbox Doğrulama Kitaplığı ile).LIME Kullanarak Ağ Tahminlerini AnlayınDerin Sinir Ağlarını Görselleştirme ve Doğrulama
Ağı Simulink’te simüle edin ve daha büyük bir sistem içindeki performansını test edin.Simulink’te Görüntüleri İçe Aktarılan TensorFlow Ağı ile SınıflandırmaSimulink ile Derin Öğrenme
Ağı niceleme, projeksiyon veya budama ile sıkıştırın.Projeksiyon Kullanarak Sinir Ağını SıkıştırmaNiceleme, Projeksiyon ve Budama
Ağ için otomatik olarak C/C++, CUDA ve HDL kodu oluşturun.Derin Öğrenme Ağları için Kod ÜretimiKod Üretimi ve Dağıtımı

Bu avantajlar sayesinde MATLAB, yalnızca model dönüştürme değil, aynı zamanda endüstriyel yapay zekâ uygulamaları için eksiksiz bir geliştirme ortamı sunar.

MATLAB’den Modelleri Dışa Aktarma

Modelleri doğrudan TensorFlow’a aktarabilirsiniz. Bir modeli PyTorch’a aktarmak için önce modeli ONNX model formatına dönüştürmeniz gerekir.

 
Ne?Modelleri TensorFlow’a aktarın.Modelleri PyTorch’a aktarın.
Nasıl?exportNetworkToTensorFlow işlevini kullanın.exportONNXNetwork işlevini kullanarak ONNX üzerinden dışa aktarın.
Ne zaman?R2022b’de tanıtıldı.ONNX dışa aktarımı R2018a’da tanıtıldı.

Hızlıca Bir Örnek Yapalım

Şimdi, imagePretrainedNetwork kullanarak önceden eğitilmiş SqueezeNet evrişimsel ağını MATLAB ortamına yükleyelim. R2024a versiyonunda tanıtılan bu fonksiyon, önceden eğitilmiş görüntü sınıflandırma ağlarını yüklemenin en kolay ve önerilen yoludur.

[net,ClassNames] = imagePretrainedNetwork(“squeezenet”);

Ağı TensorFlow’a direkt olarak aktarabiliriz. exportNetworkToTensorFlow fonksiyonu, TensorFlow modelini Python paketi myModel’e kaydeder.

exportNetworkToTensorFlow(net,”myModel”)

Böylelikle dışa aktarma işlemini tamamlarız.

Python’da modeli test etmek istediğimizde, MATLAB’de bulunan bir görüntüyü kullanabiliriz. Sınıflandırmak istediğimiz görüntüyü okur ve ağın giriş boyutuna göre yeniden boyutlandırırız.

Im = imread(“peacock.jpg”);
InputSize = net.Layers(1).InputSize;
Im = imresize(Im,InputSize(1:2));

2 boyutlu görüntü verilerini, MATLAB sıralamasından (HWCN) TensorFlow sıralamasına (NHWC) geçiririz; burada H, W ve C sırasıyla görüntünün yüksekliği, genişliği ve kanal sayısıdır ve N görüntü sayısıdır. Daha fazla bilgi için Girdi Boyutu Sıralaması bölümünü inceleyebilirsiniz. Son olarak, görüntüyü bir MAT dosyasına kaydederiz.

ImTF = permute(Im,[4,1,2,3]);
filename = “peacock.mat”;
save(filename,”ImTF”)

Aşağıdaki kod, dışa aktarılan modeli Python’da tahmin etmek için nasıl kullanabileceğinizi ve SavedModel biçiminde nasıl kaydedeceğinizi gösterir. İlk olarak, myModel paketinden dışa aktarılan TensorFlow modelini yüklüyoruz.

import myModel
model = myModel.load_model()

Dışa aktarılan modeli TensorFlow SavedModel formatında kaydedebilirsiniz. Modeli SavedModel formatında kaydetmek isteğe bağlıdır. Derin öğrenme iş akışlarını doğrudan modelle gerçekleştirebilirsiniz.

model.save(“myModelTF”)

Daha sonrasında da görüntüyü, dışa aktarılan model ile sınıflandırırız.

import scipy.io as sio
x = sio.loadmat(“peacock.mat”)
x = x[“ImTF”]
 
import numpy as np
x_np = np.asarray(x, dtype=np.float32)
 
scores = model.predict(x_np)

Derin sinir ağlarını TensorFlow’a dışa aktarma hakkında daha fazla bilgi için bu blog gönderisini inceleyebilirsiniz. Daha fazla örnek için exportNetworkToTensorFlow ve exportONNXNetwork referans sayfalarına ve Derin Sinir Ağlarını Dışa Aktarma ile ilgili belgeler sayfasına göz atın.

MATLAB ve Simulink’te Python Tabanlı Modelleri Birlikte Yürütme

Model performansını ve sistem entegrasyonunu test etmek için Python tabanlı yapay zekâ modellerini doğrudan MATLAB iş akışımızda veya Simulink sistemimizde kullanabiliriz.

Karşılaştırma: Birlikte Yürütme (Co-Execution) & Model Dönüştürme (Model Conversion)

Tabii daha öncesinde birlikte yürütme ve model dönüştürme konularına geçmeden önce bunların ne olduğunu kısaca özetleme ihtiyacı hissediyorum.

Python’da yazılmış yapay zekâ modelini olduğu gibi, dönüştürmeden MATLAB veya Simulink içinde doğrudan çalıştırmak istiyorsak buna Co-Execution denir. Bu yol haritasında modelimizi hızlıca test edip kullanabiliriz. Fakat Python modelini MATLAB formatına çevirip, MATLAB’in kendi araçlarıyla kullanmak istiyorsak buna Model Conversion denir. Bu sayede daha hızlı çalışma ve MATLAB içi işlemler kolaylaşır.

Yani Co-Execution hızlı ve pratik; Model Conversion ise daha uyumlu ve performanslıdır.

İlk olarak, MATLAB ortamında bir PyTorch veya TensorFlow modelini birlikte yürütmeyi, harici platform modelini bir MATLAB ağına dönüştürmekle karşılaştıralım. Böylece hangi iş akışının algoritmamıza en uygun olduğu kararına varabiliriz.

 Birlikte Yürütme (Co-Execution)Model Dönüştürme (Model Conversion)
  Her PyTorch ve TensorFlow modeli için çalışır  EvetHayır
  Simulink’te model simülasyonu  EvetEvet
  Otomatik olarak kod üretme  HayırEvet
  Açıklanabilirlik tekniklerini uygulayın  Yalnızca nesne algılama içinEvet
  Sağlamlık ve güvenilirliği doğrulayın  HayırEvet
  Düşük kodlu (Low-Code) yapay zekâ uygulamalarını kullanın  HayırEvet
  Ağı sıkıştır  HayırEvet

Blog yazımızın sonuna yaklaşırken, sizler için faydalı olabileceğini düşündüğümüz bazı kaynakları paylaşmak istiyoruz. Daha önce yayınladığımız MATLAB ve Python Birlikte Nasıl Kullanılır? başlıklı blog yazımızı inceleyebilir ve ayrıca Python’da görüntü işleme için sıkça tercih edilen OpenCV kütüphanesinin MATLAB Script’inde nasıl çalıştırılacağını anlattığım videoyu izleyebilirsiniz.

© FİGES A.Ş. Tüm hakları saklıdır. Tasarım ordek.co.