18/01/2024
MobileNet: Effektiv billedklassifikation til mobilenheder
I en verden hvor smartphones konstant udvikler sig og bliver mere integreret i vores dagligdag, er behovet for effektive og ressourcebesparende kunstig intelligens-modeller vokset eksponentielt. MobileNet-arkitekturen, udviklet af Google, repræsenterer et banebrydende spring fremad inden for computer vision, specifikt designet til at håndtere komplekse opgaver som billedklassifikation på mobile og indlejrede enheder. Denne artikel dykker ned i, hvordan MobileNet fungerer, dens forskellige versioner, dens anvendelser og hvordan du kan komme i gang med at bruge den.

Hvad er MobileNet?
MobileNet er en familie af Convolutional Neural Network (CNN) modeller, der er optimeret til at køre effektivt på enheder med begrænsede computerressourcer, såsom smartphones og tablets. Kernen i MobileNets effektivitet ligger i dens innovative brug af depthwise separable convolutions. Traditionelle CNN-modeller kræver betydelig regnekraft og hukommelse, hvilket gør dem uegnede til mobile applikationer. MobileNet adresserer dette problem ved at nedbryde den standard konvolutionelle operation i to trin: depthwise convolution og pointwise convolution.
Depthwise Separable Convolutions: Nøglen til Effektivitet
For at forstå, hvorfor MobileNet er så effektiv, er det vigtigt at forstå, hvordan depthwise separable convolutions adskiller sig fra standard convolutions:
- Standard Convolution: En standard konvolution anvender et filter, der dækker alle inputkanaler og producerer et enkelt output. Dette indebærer både spatial filtrering og kanal-kombination i ét trin, hvilket er beregningsmæssigt dyrt og kræver mange parametre.
- Depthwise Convolution: Dette trin udfører spatial filtrering uafhængigt for hver inputkanal. Et enkelt filter anvendes på en enkelt kanal, hvilket reducerer antallet af beregninger markant, da det ikke kombinerer information på tværs af kanaler på dette stadie.
- Pointwise Convolution: Dette trin anvender derefter en 1x1 konvolution for at kombinere outputtet fra depthwise convolution på tværs af kanaler. Det fungerer som en lineær kombination af de filtrerede kanaler, hvilket tillader modellen at lære nye features og justere antallet af kanaler.
Ved at adskille disse to operationer reducerer MobileNet drastisk antallet af parametre og beregninger, hvilket resulterer i en markant hurtigere og mere energieffektiv model, uden at gå væsentligt på kompromis med nøjagtigheden.
MobileNet Arkitekturer: Evolutionen
Gennem årene er MobileNet-familien blevet forbedret med nye versioner, der yderligere optimerer ydeevnen:
MobileNetV1
Den oprindelige MobileNet-model introducerede konceptet med depthwise separable convolutions. Den var et stort skridt fremad for deep learning på mobile enheder.
MobileNetV2
MobileNetV2 byggede videre på V1 ved at introducere inverted residuals og linear bottlenecks. I stedet for at reducere kanalerne i starten af en blok som i traditionelle residualblokke, udvider V2 først kanalerne med en 1x1 konvolution, udfører en dybdevis konvolution på den udvidede repræsentation og reducerer derefter kanalerne igen med en lineær 1x1 konvolution. Dette design forbedrer informationsflowet og effektiviteten. Ved at bruge lineære aktiveringsfunktioner i de sidste lag af blokkene undgår V2 uønsket informationstab.
MobileNetV3
MobileNetV3 yderligere optimerer arkitekturen ved at inkorporere nyere opdagelser inden for neural arkitektursøgning (NAS) og effektive blokke. Den introducerer Squeeze-and-Excitation (SE) moduler for at forbedre kanal-vise afhængigheder og bruger redesignede aktiveringsfunktioner som h-swish for bedre ydeevne. MobileNetV3 tilbyder en endnu bedre balance mellem nøjagtighed og latency.

MobileNetV4
MobileNetV4, som er en nyere udvikling, sigter mod at være state-of-the-art for mobile og edge-enheder. Den opretholder en god balance mellem høj nøjagtighed og lav beregningsomkostning. Selvom Google endnu ikke har frigivet fortrænede vægte for MobileNetV4, har organisationer som Hugging Face trænet egne versioner, der viser stærk ydeevne på klassifikationsopgaver. MobileNetV4 kan opnå op til 75% reduktion i antallet af parametre sammenlignet med tidligere versioner og er 3-4 gange hurtigere end andre letvægtsmodeller.
Anvendelser af MobileNet
MobileNets effektivitet og nøjagtighed har åbnet dørene for en bred vifte af praktiske anvendelser:
Billedklassifikation af Dyr
En bemærkelsesværdig anvendelse af MobileNet er inden for klassifikation af dyrebilleder. Forskning har vist, at en MobileNet-arkitektur, kombineret med en Support Vector Machine (SVM) klassifikator, kan opnå en imponerende nøjagtighed på op til 99% til at klassificere billeder af forskellige dyr som hunde, katte, elefanter, pandaer og aber. Dette er særligt nyttigt for skovtjenester til at udvikle alarmsystemer og for forskning i dyreadfærd.
Sundhedssektoren
MobileNet har vist sig at være yderst værdifuld i sundhedssektoren, især i områder med begrænset internetforbindelse eller computerressourcer.
- COVID-19 Detektion: Under COVID-19-pandemien blev MobileNet brugt til at kategorisere bryst-røntgenbilleder som normale, COVID-inficerede eller med viral lungebetændelse med høj nøjagtighed.
- Hudkræft Detektion: MobileNetV2 har vist sig effektiv til at detektere to primære former for hudkræft. Dette har været en game-changer for sundhedspleje i områder, der ikke har råd til stabil internetforbindelse.
Landbrug
I landbruget bruges MobileNet til at identificere plantesygdomme. Ved at analysere billeder af afgrøder, kan MobileNet hjælpe med at detektere blad-sygdomme, som f.eks. 10 almindelige bladsygdomme i tomatplanter, via en mobilapplikation.
Sådan kører du MobileNet til Billedklassifikation
At implementere MobileNet til billedklassifikation involverer typisk følgende trin, ofte ved hjælp af biblioteker som Transformers og PyTorch:
Trin 1: Installer Nødvendige Biblioteker
Først skal du installere de påkrævede Python-biblioteker:
!pip install transformers timm torch pillow Trin 2: Importer Biblioteker
Importer de nødvendige moduler:
from urllib.request import urlopen from PIL import Image import timm import torch from transformers import AutoImageProcessor, AutoModelForImageClassification Trin 3: Indlæs Billede
Du kan indlæse et billede enten fra en lokal filsti eller via en URL:
# Fra URL test_img_url1 = 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png' test_img1 = Image.open(urlopen(test_img_url1)) # Fra lokal fil # image = Image.open('/content/din_billedfil.jpg') Trin 4: Indlæs Foruddannet Model og Processor
Brug Transformers-biblioteket til at indlæse en foruddannet MobileNet-model og dens tilhørende processor. For eksempel, for MobileNetV2:
preprocessor = AutoImageProcessor.from_pretrained("google/mobilenet_v2_1.0_224") model = AutoModelForImageClassification.from_pretrained("google/mobilenet_v2_1.0_224") For MobileNetV4 kan du bruge timm-biblioteket og specificere modellen fra Hugging Face Hub:
model_name = "hf_hub:timm/mobilenetv4_hybrid_large.ix_e600_r384_in1k" model = timm.create_model(model_name, pretrained=True) model = model.eval() # Sæt modellen i evaluation mode # Hent model-specifikke transformationer data_config = timm.data.resolve_data_config({}, model=model) transform = timm.data.create_transform(**data_config) Trin 5: Forbehandling af Input
Billedet skal forbehandles, så det passer til modellens inputkrav:
# For MobileNetV2 (ved brug af Transformers) inputs = preprocessor(images=image, return_tensors="pt") # For MobileNetV4 (ved brug af timm) input_tensor = transform(test_img1).unsqueeze(0) Trin 6: Kør Inferens
Send det forbehandlede input gennem modellen for at få forudsigelser:
# For MobileNetV2 outputs = model(**inputs) logits = outputs.logits # For MobileNetV4 with torch.no_grad(): output = model(input_tensor) softmax_output = output.softmax(dim=1) Trin 7: Fortolkning af Output
Konverter output-logits til sandsynligheder og identificer den mest sandsynlige klasse. For modeller trænet på ImageNet, vil du have brug for en liste over labels.

# For MobileNetV2 predicted_class_idx = logits.argmax(-1).item() print("Forudsagt klasse:", model.config.id2label[predicted_class_idx]) # For MobileNetV4 (få top 5 forudsigelser) top5_probabilities, top5_class_indices = torch.topk(softmax_output, k=5) top5_probabilities = top5_probabilities * 100 top5_class = top5_class_indices[0] list_form_c = top5_class.tolist() top5_prob = top5_probabilities[0] list_form_p = top5_prob.tolist() # Antag at 'image_net_labels' er en liste/dictionary med ImageNet labels predictions=[] for i in range(5): predictions.append([image_net_labels[list_form_c[i]], round(list_form_p[i], 2)]) print("Top 5 forudsigelser:", predictions) Sammenligning af MobileNet Versioner
Her er en oversigt over de vigtigste forskelle og forbedringer mellem MobileNet-versionerne:
| Version | Nøglefunktioner | Fordele | Ulemper |
|---|---|---|---|
| MobileNetV1 | Depthwise separable convolutions | Grundlæggende effektivitet på mobile enheder | Mindre nøjagtig end senere versioner |
| MobileNetV2 | Inverted residuals, linear bottlenecks | Forbedret nøjagtighed og effektivitet | Stadig plads til optimering |
| MobileNetV3 | NAS, Squeeze-and-Excitation, h-swish | Endnu bedre balance mellem nøjagtighed og latency | Kompleksitet i arkitekturen |
| MobileNetV4 | State-of-the-art optimering, reduceret parameterantal | Højeste effektivitet og hastighed for mobile enheder | Begrænset tilgængelighed af officielle foruddannede modeller |
Ofte Stillede Spørgsmål (FAQ)
Q1: Hvad gør MobileNetV2 anderledes end andre CNN-modeller?
MobileNetV2 bruger depthwise separable convolutions og de unikke inverted residuals med linear bottlenecks, hvilket gør den mere effektiv til mobile og indlejrede systemer sammenlignet med traditionelle CNN'er.
Q2: Kan MobileNetV2 bruges til realtidsapplikationer?
Ja, MobileNetV2 er optimeret til lav latency og realtidsbilledklassifikationsopgaver, hvilket gør den velegnet til mobile enheder og edge computing.
Q3: Hvor nøjagtig er MobileNetV2 sammenlignet med større modeller?
Selvom MobileNetV2 er optimeret til effektivitet, opretholder den en høj nøjagtighed, der ofte er tæt på større modeller. Dette gør den til et stærkt valg for mobile AI-applikationer, hvor ressourcerne er begrænsede.
Q4: Hvilken version af MobileNet er bedst til en specifik opgave?
Valget afhænger af dine specifikke behov. MobileNetV1 er god til grundlæggende opgaver. MobileNetV2 og V3 tilbyder en bedre balance mellem nøjagtighed og hastighed. MobileNetV4 repræsenterer den seneste state-of-the-art teknologi, hvis tilgængelighed er et problem.
Konklusion
MobileNet-arkitekturen er et vidnesbyrd om Googles innovation inden for effektiv deep learning. Ved at revolutionere konvolutionelle operationer og optimere for mobile enheder har MobileNet gjort det muligt at implementere avancerede computer vision-opgaver på tværs af et bredt spektrum af enheder. Fra at identificere dyr i naturen til at forbedre sundhedspleje og landbrug, demonstrerer MobileNets alsidighed og effektivitet dens utrolige potentiale. Uanset om du er udvikler, forsker eller blot teknologientusiast, tilbyder MobileNet en kraftfuld og tilgængelig vej ind i fremtiden for mobil AI.
Hvis du vil læse andre artikler, der ligner MobileNet: Effektiv billedklassifikation til mobilenheder, kan du besøge kategorien Teknologi.
