How does TensorFlow work in TF-AMP?

Træn dine egne SSD-modeller med TensorFlow

11/08/2025

Rating: 4.94 (1347 votes)
Indholdsfortegnelse

Kom i gang med at træne egne SSD-modeller i TensorFlow

TensorFlow og dets omfattende Object Detection API giver udviklere mulighed for at skabe og træne avancerede modeller til objektdetektering. En af de mest populære arkitekturer inden for dette felt er Single Shot MultiBox Detector (SSD), kendt for sin effektivitet og nøjagtighed. Denne artikel vil guide dig trin for trin gennem processen med at træne dine egne SSD-modeller ved hjælp af TensorFlow, herunder hvordan du downloader forudtrænede modeller, forbereder dine data og konfigurerer træningsprocessen.

Can TensorFlow/models train with new SSD models?

Hvad er SSD?

Single Shot MultiBox Detector (SSD) er en dyb læringsmodel til objektdetektering, der opnår høj nøjagtighed og hastighed ved at forudsige bounding boxes og klasse-sandsynligheder direkte fra et enkelt billede i ét enkelt trin (single shot). I modsætning til to-trins detektorer, der først identificerer regioner af interesse og derefter klassificerer objekterne inden for disse regioner, behandler SSD hele billedet på én gang. Dette gør den markant hurtigere og mere velegnet til applikationer i realtid.

Forberedelse af dit miljø

Før du kan begynde at træne, er det essentielt at have et velfungerende udviklingsmiljø. Dette involverer installation af TensorFlow, nødvendige biblioteker og kloning af TensorFlow Models repository.

Hardware og Software Krav

For en optimal træningsoplevelse anbefales det at bruge en kraftig GPU, såsom NVIDIA Tesla V100 eller lignende. Følgende software er typisk påkrævet:

  • TensorFlow (gerne den nyeste version eller en specifik anbefalet version til Object Detection API)
  • Python (version 3.6+ anbefales)
  • CUDA Toolkit og cuDNN (hvis du bruger NVIDIA GPU)
  • TensorFlow Models Repository (indeholder Object Detection API og træningsscripts)
  • Pip (Python package installer)
  • Git (til at klone repositories)
  • Docker (anbefales for at sikre et ensartet miljø)

Opsætning af TensorFlow Models Repository

Det første skridt er at klone TensorFlow Models repository fra GitHub. Dette repository indeholder alle de nødvendige scripts og konfigurationsfiler.

git clone https://github.com/tensorflow/models.git cd models/research 

Efter kloning skal du kompilere Protocol Buffers. Dette er nødvendigt for at TensorFlow kan deserialisere konfigurationsfiler.

protoc object_detection/protos/*.proto --python_out=. 

Installer derefter de nødvendige Python-pakker:

pip install tf_slim pip install lxml pip install pillow pip install jupyter pip install matplotlib pip install pycocotools pip install pandas # For TensorFlow 2.x, installer også: pip install tensorflow-gpu==2.2 # Eller en anden kompatibel version 

Det er en god idé at tilføje stierne til TensorFlow Models repository til din PYTHONPATH for at sikre, at alle scripts kan findes:

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/research:`pwd`/research/slim 

Download af forudtrænede SSD-modeller

At starte med en forudtrænet model kan spare enormt meget tid og ressourcer, da modellen allerede har lært generelle træk fra et stort datasæt som COCO. TensorFlow Object Detection Model Zoo tilbyder flere forudtrænede SSD-modeller.

Hvor finder man forudtrænede modeller?

Du kan finde links til de forudtrænede modeller i TensorFlow's officielle dokumentation. En typisk model, du kan downloade, er ssd_mobilenet_v1_coco eller ssd_mobilenet_v2.

How to clone TensorFlow models repository?
clone tensorflow models repository in the workspace tensorflow_model and install related dependencies $ protoc object_detection/protos/*.proto --python_out=. Copy models/research/official and models/research/object_detection from tensorflow_model/models to workspace home directory that is tensorflow_model

Eksempel på download af en SSD MobileNet v1 model:

# Opret en mappe til dine modeller mkdir ~/tensorflow_models/models cd ~/tensorflow_models/models # Download modellen (eksempel for SSD MobileNet v1) wget http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2017_11_17.tar.gz tar xvf ssd_mobilenet_v1_coco_2017_11_17.tar.gz 

Når modellen er downloadet og udpakket, vil du have en mappe, der indeholder model.ckpt filer (checkpoint-filer) og en pipeline.config fil.

Forberedelse af dit eget datasæt

For at træne en SSD-model til dine specifikke behov, skal du bruge dit eget datasæt med annoterede billeder.

Datasætformat

TensorFlow Object Detection API understøtter typisk data i Pascal VOC-format eller COCO-format. Du skal have dine billeder og tilsvarende annoteringsfiler (typisk XML eller JSON), der angiver bounding boxes og klassenavne for objekterne i hvert billede.

Billedmærkning (Image Labelling)

Værktøjer som LabelImg er populære til manuel annotering af billeder. Du skal oprette en mappe med dine billeder og gemme de tilsvarende XML-filer i samme mappe.

Installations- og brugseksempel for LabelImg:

cd ~/tensorflow_models git clone https://github.com/tzutalin/labelImg.git cd labelImg # Installer afhængigheder (følg instruktionerne i labelImg repo for din OS) pip install -r requirements/requirements-linux-python3.txt # Eksempel for Linux Python 3 python labelImg.py 

Konvertering til TFRecord

TensorFlow Object Detection API kræver, at data er i TFRecord-format. Du skal bruge scripts til at konvertere dine billeder og annoteringer til dette format.

Du skal også oprette en label_map.pbtxt fil, der mapper klassenavne til ID'er:

# Eksempel: roadsign_label_map.pbtxt item { id: 1 name: 'stop_sign' } item { id: 2 name: 'speed_limit_50' } 

Derefter kører du scripts til at generere TFRecord-filer:

# Antag at du har dine data i ~/tensorflow_models/data/images/train og ~/tensorflow_models/data/images/test # og dine XML-filer er i ~/tensorflow_models/data/annotations # Konverter XML til CSV (kræver muligvis et hjælpescript) # Derefter brug CSV til TFRecord konvertering # Eksempel på konvertering (kræver passende scripts): python ~/models/research/object_detection/dataset_tools/create_pascal_tf_record.py \ --label_map_path=~/tensorflow_models/data/roadsign_label_map.pbtxt \ --data_dir=~/tensorflow_models/data \ --set=train \ --output_path=~/tensorflow_models/data/train.record python ~/models/research/object_detection/dataset_tools/create_pascal_tf_record.py \ --label_map_path=~/tensorflow_models/data/roadsign_label_map.pbtxt \ --data_dir=~/tensorflow_models/data \ --set=val \ --output_path=~/tensorflow_models/data/val.record 

Konfiguration af træningsprocessen

Konfigurationsfilen (typisk .config) er central for træningsprocessen. Den definerer modelarkitekturen, data-input, træningsparametre og meget mere.

How does TensorFlow work in TF-AMP?

Tilpasning af pipeline.config

Du skal kopiere en eksempel-konfigurationsfil fra TensorFlow Models repository og tilpasse den til dit projekt. For en SSD MobileNet-model skal du typisk ændre følgende parametre:

ParameterBeskrivelseEksempel på ændring
num_classesAntallet af klasser i dit datasæt (eksklusive baggrund).num_classes: 3 (hvis du har 3 objekttyper)
fine_tune_checkpointStien til den forudtrænede model checkpoint-fil.fine_tune_checkpoint: "~/tensorflow_models/models/ssd_mobilenet_v1_coco_2017_11_17/model.ckpt"
fine_tune_checkpoint_typeAngiver typen af checkpoint. For forudtrænede modeller ofte "detection".fine_tune_checkpoint_type: "detection"
label_map_pathStien til din label_map.pbtxt fil.label_map_path: "~/tensorflow_models/data/roadsign_label_map.pbtxt"
train_input_readerStien til din trænings TFRecord-fil.input_path: "~/tensorflow_models/data/train.record"
eval_input_readerStien til din validerings TFRecord-fil.input_path: "~/tensorflow_models/data/val.record"
batch_sizeAntal billeder pr. træningsiteration. Juster efter GPU-hukommelse.batch_size: 16
num_stepsDet samlede antal træningstrin.num_steps: 20000

Du kan også justere parametre for data augmentation, learning rate decay og optimizer-indstillinger for at forbedre træningsresultaterne.

Træning af modellen

Når dit miljø er sat op, dine data er forberedt, og konfigurationsfilen er tilpasset, kan du starte træningsprocessen.

Start af træning

Brug train.py (eller model_main.py/model_main_tf2.py for nyere versioner) scriptet til at starte træningen.

cd ~/tensorflow_models/models/research/object_detection # Brug train.py (ældre versioner): python train.py \ --logtostderr \ --pipeline_config_path=~/tensorflow_models/ssd_mobilenet_v1_roadsign.config \ --train_dir=~/tensorflow_models/training_output # Brug model_main.py (TensorFlow 1.x): python model_main.py \ --pipeline_config_path=~/tensorflow_models/ssd_mobilenet_v1_roadsign.config \ --model_dir=~/tensorflow_models/training_output \ --alsologtostderr # Brug model_main_tf2.py (TensorFlow 2.x): python model_main_tf2.py \ --pipeline_config_path=~/tensorflow_models/ssd_mobilenet_v2_320x320_coco17_tpu-8/pipeline.config \ --model_dir=~/tensorflow_models/trained-checkpoint \ --alsologtostderr \ --num_train_steps=50000 

Træningsprocessen vil gemme checkpoints periodisk i den angivne train_dir. Du kan overvåge træningen ved hjælp af TensorBoard, som giver indsigt i loss-kurver, mAP (mean Average Precision) og andre metrikker.

tensorboard --logdir=~/tensorflow_models/training_output 

Evaluering af modellen

Regelmæssig evaluering er vigtig for at vurdere modellens ydeevne på et separat valideringsdatasæt.

python ~/tensorflow_models/models/research/object_detection/eval.py \ --logtostderr \ --pipeline_config_path=~/tensorflow_models/ssd_mobilenet_v1_roadsign.config \ --checkpoint_dir=~/tensorflow_models/training_output \ --eval_dir=~/tensorflow_models/eval_output 

Eksport af modellen til inferens

Når du er tilfreds med træningsresultaterne, skal du eksportere den trænede model til et format, der kan bruges til inferens.

What is tensorrt SDK?
TensorRT SDK provides FP16 and INT8 optimizations to perform low-latency inference with little to no degradation in model accuracy. TensorRT takes your network definition, performs several optimizations, and generates a TensorRT engine to optimize your model for inference.
# Opret en output-mappe hvis den ikke findes mkdir ~/tensorflow_models/exported-model # Eksempel for TensorFlow 1.x: python ~/tensorflow_models/models/research/object_detection/export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path=~/tensorflow_models/ssd_mobilenet_v1_roadsign.config \ --trained_checkpoint_prefix=~/tensorflow_models/training_output/model.ckpt \ --output_directory=~/tensorflow_models/exported-model # Eksempel for TensorFlow 2.x: python ~/tensorflow_models/models/research/object_detection/exporter_main_v2.py \ --input_type image_tensor \ --pipeline_config_path=~/tensorflow_models/ssd_mobilenet_v2_320x320_coco17_tpu-8/pipeline.config \ --trained_checkpoint_dir=~/tensorflow_models/trained-checkpoint \ --output_directory=~/tensorflow_models/exported-model 

Dette vil generere en saved_model mappe indeholdende den eksporterede model, klar til brug i applikationer.

Kan TensorFlow/models træne med nye SSD-modeller?

Ja, TensorFlow's models repository, især Object Detection API, er designet til at være fleksibelt og understøtter træning af forskellige SSD-arkitekturer. Ved at tilpasse konfigurationsfilen og eventuelt modeldefinitionen, kan du træne med nye varianter af SSD eller endda helt nye modeller, så længe de følger den forventede struktur.

Ofte stillede spørgsmål (FAQ)

Hvilken version af TensorFlow skal jeg bruge?

Det afhænger af den specifikke version af TensorFlow Models repository, du kloner. Nyere versioner af Object Detection API er optimeret til TensorFlow 2.x, mens ældre versioner kan kræve TensorFlow 1.x. Tjek altid dokumentationen for den version, du bruger.

Hvad hvis jeg løber tør for GPU-hukommelse?

Reducer batch_size i din pipeline.config fil. Du kan også overveje at bruge en model med en lavere opløsning eller en mere hukommelseseffektiv arkitektur som MobileNet-varianter.

Hvordan kan jeg genoptage træningen fra et checkpoint?

Sørg for, at fine_tune_checkpoint i din pipeline.config peger på det checkpoint, du vil genoptage fra, og at train_dir er den samme mappe, hvor checkpoints gemmes. Kør derefter træningsscriptet igen.

Konklusion

At træne dine egne SSD-modeller med TensorFlow er en kraftfuld måde at tilpasse objektdetekteringsløsninger til specifikke behov. Ved at følge disse trin – fra miljøopsætning og dataforberedelse til træning og eksport – kan du udnytte dyb læring til at løse komplekse computer vision-opgaver.

Hvis du vil læse andre artikler, der ligner Træn dine egne SSD-modeller med TensorFlow, kan du besøge kategorien Teknologi.

Go up