Inleiding: Waarom Deep Learning for Image Classification?

Beeldclassificatie .De taak van het toewijzen van een label aan een afbeelding van een vooraf gedefinieerde set van categorieën . is uitgegroeid tot een hoeksteen van de moderne computer visie . Van medische diagnose tot autonoom rijden , nauwkeurige classificatie drijft ontelbare real-world toepassingen . Diep leren , met name convolutionele neurale netwerken (CNNs), heeft dramatisch verbeterde classificatie nauwkeurigheid , vaak overtreffen van de prestaties op menselijk niveau op benchmark datasets . Echter , het bouwen en het trainen van diepe modellen vanaf nul vereist belangrijke gegevens , computationele middelen en expertise . Dit is waar MATLABs Deep Learning Toolbox komt in het beeld , het verstrekken van een geïntegreerde omgeving die de barrière voor toegang terwijl nog steeds biedt de flexibiliteit nodig voor geavanceerde onderzoek en productie systemen .

MATLAB is al lang een favoriet onder ingenieurs en wetenschappers voor numerieke computing en prototypes. De Deep Learning Toolbox breidt deze mogelijkheid uit met vooraf gebouwde lagen, trainingsfuncties en naadloze hardwareversnelling. Of u nu een student bent die neurale netwerken verkent of een professionele implementatie van een real-time classifier, de toolbox biedt een gestructureerde workflow die gegevensvoorbereiding, modelontwerp, training, evaluatie en implementatie omvat.

Overzicht van de Deep Learning Toolbox

De Deep Learning Toolbox (voorheen de Neural Network Toolbox) biedt een uitgebreide set functies en apps voor het ontwerpen, trainen en simuleren van diepe neurale netwerken. Het ondersteunt een breed scala aan architecturen, waaronder:

  • Convolutionaire Neurale Netwerken (CNNs) voor beeld- en ruimtelijke gegevens.
  • Recurrent Neural Networks (RNNs) en LSTMs voor sequentie- en tijdreeksgegevens.
  • Transformerende netwerken voor taken op het gebied van natuurlijke taalverwerking en -visie.
  • Generatieve adverteerdersnetwerken (gans) voor beeldgeneratie.

De toolbox integreert met MATLAB. Dit maakt end-to-end oplossingen mogelijk, waaronder de Image Processing Toolbox, Computer Vision Toolbox en Parallel Computing Toolbox. Belangrijkste functies die specifiek gunstig zijn voor beeldclassificatie zijn:

  • Voorgetrainde modellen zoals AlexNet, VGG-16/19, GoogLeNet, ResNet, Initiation, en EfficientNet, die kunnen worden gebruikt voor het overdragen van leren of functie extractie.
  • Data augmentation via het object, waardoor on-the-fly transformaties zoals rotatie, schaalvergroting, vertaling en reflectie kunstmatig kunnen worden vergroot en overfitting kan worden verminderd.
  • Automatische differentiatie en ondersteuning van de GPU met behulp van parallelle computingtoolbox en ingebouwde MATLAB
  • Visualisatietools zoals en om laagarchitecturen, activeringskaarten en trainingsvoortgang te inspecteren.
  • Implementatieopties inclusief codegeneratie, export naar TensorFlow of ONNX en directe integratie met embedded hardware via MATLAB-coder.

Begrijpen van convolutionaire Neurale netwerken voor beeldclassificatie

De kern van de meeste systemen voor beeldclassificatie ligt een CNN. Deze netwerken leren hiërarchische kenmerken: vroege lagen detecteren randen en texturen, middenlagen herkennen vormen en delen, en diepere lagen identificeren objecten. MATLAB.Deep Learning Toolbox implementeert alle standaardlaagtypes. •Convolution2dLayer, maxPooling2dLayer, volledigConnectedLayer, softmaxLayer en classificatieLayer waardoor het eenvoudig te monteren aangepaste architecturen.De toolbox ondersteunt ook moderne innovaties zoals batch normalisatie, dropout en restverbindingen.

Waarom MATLAB gebruiken voor CNN Design?

In vergelijking met kaders als TensorFlow of PyTorch, biedt MATLAB verschillende unieke voordelen:

  • Interactieve omgeving: De app maakt het slepen en neerzetten van netwerken mogelijk, die ideaal is voor beginners of snelle prototypes.
  • Geïntegreerde debugging: Je kunt door trainingsiteraties heen stappen en activeringen inspecteren op elke laag, waardoor de modeldiagnose wordt vereenvoudigd.
  • Geheugenefficiëntie: MATLAB verwerkt automatisch GPU-geheugen, waarbij veel voorkomende buiten-geheugenfouten die handmatig coderen worden vermeden.
  • Ingebouwde metrische trackers: Training logt automatisch nauwkeurigheid, verlies en validatiegegevens, die in realtime kunnen worden uitgezet.

Gegevensvoorbereiding: De Stichting van een Succesvolle Classifier

Hoe verfijnd het model ook is, slechte gegevens leiden tot slechte prestaties. MATLAB biedt verschillende hulpprogramma's om afbeeldingsdatasets efficiënt te beheren.

Gebruik

De functie is de standaard manier om grote collecties afbeeldingen te laden. Het labelt automatisch afbeeldingen op basis van mapnamen, ondersteunt opsplitsen in training, validatie en testsets, en kan afbeeldingen van schijf in batches lezen om geheugenoverloop te voorkomen. Bijvoorbeeld:

imds = imageDatastore('path/to/images', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
[imdsTrain, imdsValidation, imdsTest] = splitEachLabel(imds, 0.7, 0.15, 'randomized');

Gegevensaugmentatie met

Om generalisatie te verbeteren, vooral met beperkte gegevens, kunt u willekeurige transformaties toepassen tijdens de training. MATLAB

  • Willekeurige rotatie (0-360 graden)
  • Willekeurige horizontale/verticale reflecties
  • Willekeurige schaling en vertaling
  • Scheer- en contrastaanpassingen

Deze transformaties worden on-the-fly toegepast, wat betekent dat het model een iets ander beeld ziet elke periode zonder het opslaan van meerdere kopieën op de schijf. Dit vermindert aanzienlijk overpassen en verbetert robuustheid.

Onevenwichtige gegevenssets verwerken

De gegevensverzamelingen in de reële wereld hebben vaak ongelijke klassenverdelingen. MATLAB biedt gewogen classificatielagen () en kan klassegewichten automatisch berekenen vanuit de opleidingsfrequenties. Als alternatief kunt u minderheidsklassen oversampleren door gebruik te maken van een aangepaste datastore of de eigenschap van de trainingsoptie. .

Transfer learning: Versnelling van de ontwikkeling met vooraf opgeleide modellen

Een diepe CNN vanaf nul trainen op een kleine dataset is zelden praktisch. Transfer learning maakt gebruik van een model dat vooraf is opgeleid op een grote dataset (bijv. ImageNet) en maakt het perfect afgestemd op een nieuwe taak. MATLAB maakt dit proces uitzonderlijk eenvoudig.

Een voorgetraind netwerk laden

Gebruik of , , enz. Deze functies downloaden het model automatisch als het niet al aanwezig is op de schijf. De netwerken worden geretourneerd als een of ] object, waarbij gewichten en laagstructuur behouden blijven.

Het netwerk aanpassen voor een aangepaste taak

De laatste lagen van een voorgetraind netwerk zijn ontworpen voor een 1000-klasse ImageNet classificatie. Om het aan te passen aan uw aantal klassen (zeg, 5) vervangt u de volledig aangesloten laag en de classificatielaag:

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));

Fine-Tuning vs. Feature Extraction

Twee gemeenschappelijke strategieën:

  • Functie extractie: Bevries de vroege lagen (zet hun leersnelheid op 0) en train alleen de nieuwe classificatielagen. Handig als de nieuwe dataset klein is en vergelijkbaar met de oorspronkelijke dataset.
  • Fine-tuning: Train alle lagen met een kleine leersnelheid. Beter wanneer de nieuwe dataset groter of aanzienlijk anders is dan ImageNet. MATLAB stelt u in staat om per-layer leersnelheidsfactoren (zoals hierboven getoond) in te stellen om te bepalen hoeveel elke laag zich aanpast.

Praktische tips voor transferleren in MATLAB

  • Altijd de grootte van de afbeeldingen aanpassen aan de invoergrootte die wordt verwacht door het voorgetrainde netwerk (bijv. 224x224 voor ResNet). Gebruik de voor een efficiënte grootteverandering tijdens de training.
  • Gebruik validatiegegevens om te controleren of ze te veel zijn; als de valideringsnauwkeurigheid vroeg plateert, vermindert het aantal trainingsperioden.
  • Experimenteren met verschillende vooraf getrainde architecturen. Lichtere modellen zoals MobileNet zijn sneller maar minder nauwkeurig; diepere modellen zoals ResNet-152 bieden een hogere nauwkeurigheid tegen een rekenkosten.

Training van de Classifier: Opties, Hyperparameters, en Monitoring

Zodra het netwerk is gedefinieerd en de gegevens zijn voorbereid, belt u met de datastore, de laaggrafiek en trainingsopties.

Trainingsopties instellen

De functie laat je vrijwel elk aspect van de training controleren:

  • Solver: 'sgdm' (stochastische hellingsdaling met momentum), 'adam' of 'rmsprop'. Adam komt vaak sneller samen voor fine-tuning.
  • InitialLearnRate: Typisch 1e-4 voor fine-tuning, 1e-3 voor training vanaf nul.
  • MiniBatchSize: Afhankelijk van het GPU-geheugen; gemeenschappelijke waarden zijn 32, 64 of 128.
  • MaxEpochs: Aantal volledige doorlaat door de trainingsgegevens. Begin met 10
  • ValidatieData: Een validatiedatastore leveren om de prestaties per periode te monitoren.
  • ValidatieFrequentie: Hoeveel iteraties tussen validatiecontroles.
  • Plots: 'training-vooruitgang' om levende percelen van nauwkeurigheid en verlies te zien.
  • LeerRateSchedule: Laat de leersnelheid vallen na een bepaald aantal tijdperken (bijvoorbeeld 'stukssgewijze').
  • L2Regulering: Gewichtsverlies om overfitting te voorkomen (standaard 1e-4).

Monitoring van de voortgang van de opleiding

MATLAB

Vroegtijdige stopzetting en controlepunten

Hoewel niet direct ingebouwd, kunt u vroeg stoppen implementeren door gebruik te maken van de eigenschap van trainingsopties. Als alternatief kunt u de optie gebruiken om elk vast aantal tijdperken te besparen, zodat u geen vooruitgang verliest.

Modelprestaties evalueren

Na training moet u controleren of het model goed generaliseert tot ongeziene gegevens. MATLAB biedt verschillende evaluatietools.

Testafbeeldingen classificeren

YPred = classify(net, imdsTest);
YTest = imdsTest.Labels;
accuracy = sum(YPred == YTest) / numel(YTest);

Verwarringsmatrix en metrische per klasse

Gebruik om te visualiseren waar het model fouten maakt. Voor per-klasse precisie, terugroepen en F1-score, gebruik:

confMat = confusionmat(YTest, YPred);

Bereken dan de metrics handmatig of gebruik de uitvoer met de optie om voorspellingsscores voor ROC-analyse te verkrijgen.

ROC en AUC

Voor binaire classificatie of one-vs-all scenario's kunt u met behulp van ) de kenmerkende curven van de ontvanger (ROC) plotten. Dit is vooral belangrijk bij medische beeldvorming waar drempelstemming van belang is.

Inzet: Het model naar de productie brengen

MATLAB breidt de kracht uit tot voorbij prototyping . Het biedt meerdere routes om getrainde modellen in real-world toepassingen in te zetten.

Exporteren naar andere kaders

  • TensorFlow/Keras: Gebruik om naar ONNX-formaat te exporteren en vervolgens naar TensorFlow te converteren.
  • PyTorch: Soortgelijk ONNX-exportpad.

MATLAB Coder en GPU Coder

Genereer standalone C/C++-code van uw getrainde netwerk met behulp van MATLAB-coder. Dit is ideaal voor het insluiten van classifiers in desktop- of embedded systemen zonder dat er een MATLAB-runtime nodig is. GPU-coder genereert CUDA-code voor NVIDIA GPU's, waardoor real-time-inferentie aan de rand mogelijk is.

MATLAB Compiler en Productie Server

Pak de classifier als een standalone uitvoerbare of gedeelde bibliotheek. MATLAB Production Server kunt u modellen als RESTful API's die kunnen worden verbruikt door webapplicaties, mobiele apps of enterprise software.

Ingeschakelde hardware inschakelen

Met de Deep Learning Toolbox activeert u de ondersteuning van ARM Cortex-A en NVIDIA Jetson, zodat u geoptimaliseerde netwerken direct kunt inzetten op embedded systemen. De functie kan hardwaregeoptimaliseerde code genereren die past in resource-gestrainde omgevingen.

Toepassingen en casestudies in de praktijk

Ingenieurs en onderzoekers hebben MATLAB

  • Medische beeldvorming: Het classificeren van röntgenfoto's van de borst voor longontsteking detectie, retinale fundus beelden voor diabetische retinopathie gradering, en histopathologie dia's voor kanker diagnose.
  • Autonome rijgedrag: Herkent verkeersborden, voetgangers en rijstrookmarkeringen met gebruikmaking van mobiele netwerken die op voertuig ingebedde systemen worden ingezet.
  • Landbouw: Het identificeren van plantenziekten van bladafbeeldingen, het sorteren van vruchten door rijpheid.
  • Manuturing: Visuele controle op defecten aan assemblagelijnen, vaak met real-time gevolgtrekkingen met behulp van GPU-coder.
  • Beveiliging: Gezichtsherkenning en objectdetectie in bewakingsbeelden.

Voor concrete voorbeelden, zie MATLAB

MATLAB vergelijken met andere diepe leerkaders

Hoewel MATLAB geen open-source is, biedt de toolchain een ongeëvenaarde integratie voor ingenieurs die al in het MATLAB-ecosysteem werken. Voor teams die vrije, open-source oplossingen nodig hebben, kan TensorFlow of PyTorch de voorkeur krijgen. Echter, MATLAB heeft voordelen zoals:

  • Gebruiksgemak: Python-omgevingen, versieconflicten of afhankelijkheidshel hoeven niet te worden beheerd.
  • Simuline-integratie: Voor systeemmodellering kun je diepe leerblokken in grotere simulaties integreren.
  • Ingebouwd signaal en beeldverwerking: Voorbewerkingsstappen kunnen in dezelfde taal worden geschreven zonder extra bibliotheken te importeren.

Voor projecten waarbij samenwerking met niet-MATLAB-gebruikers cruciaal is, zorgt exporteren naar ONNX voor interoperabiliteit. Lees hier meer over ONNX-export.

Vaak Pitfalls en hoe ze te vermijden

  • Inputgrootte mismatch: Controleer altijd of de invoerlaag overeenkomt met de grootte van uw afbeeldingen. Gebruik om de grootte te wijzigen.
  • Overbouw: Verhoog de augmentatie, voeg dropoutlagen toe, verminder de netwerkcapaciteit of gebruik een sterkere regularisatie.
  • Slow training: Zorg ervoor dat u een compatibele GPU hebt en dat MATLAB het gebruikt (check met ). Schakel parallelle werknemers in als u meerdere GPU's heeft.
  • Geheugenfouten: Verminder minibatchgrootte of gebruik arrays voor buiten-geheugendatasets.
  • Onbalans van de klassen negeren: Controleer altijd de verdeling van etiketten; gebruik gewogen verlies of oversampling.

Geavanceerde onderwerpen: aangepaste training Loops en onderzoek

Voor onderzoekers die de modernste techniek gebruiken, ondersteunt MATLAB aangepaste trainingslussen met behulp van objecten en automatische differentiatie. U kunt nieuwe lagen, verliesfuncties of trainingsprocedures implementeren (bijvoorbeeld meta-learning, tegenopleiding).De documentatie over aangepaste trainingslussen geeft voorbeelden.

Conclusie

MATLAB