Niñera utiliza PyTorch para entrenar y evaluar su propio tutorial de red DaViT

inserte la descripción de la imagen aquí

prefacio

Dirección del proyecto: https://github.com/Fafa-DL/Awesome-Backbones

Tutorial de funcionamiento: https://www.bilibili.com/video/BV1SY411P7Nd

Documento original de DaViT: haz clic en mí para saltar

Si cree que el almacén solo admite el entrenamiento de un modelo, es un gran error. Pongo los 42 modelos compatibles actualmente (LeNet5, AlexNet, VGG, DenseNet, ResNet, Wide-ResNet, ResNeXt, SEResNet, SEResNeXt, RegNet, MobileNetV2, MobileNetV3, ShuffleNetV1, ShuffleNetV2, EfficientNet, RepVGG, Res2Net, ConvNeXt, HRNet, ConvMixer, CSPNet, Swin-Transformer, Vision-Transformer, Transformer-in-Transformer, MLP-Mixer, DeiT, Conformer, T2T-ViT, Twins, PoolFormer, VAN, HorNet, EfficientFormer, Swin Transformer V2, MViT V2, MobileViT, DaViT, RepLKNet, BEiT, EVA, MixMIM, EfficientNetV2), el uso es exactamente el mismo . Y en la actualidad, se cumplen la mayoría de los requisitos de clasificación de imágenes, y los estudiantes que progresan rápidamente incluso tienen trabajos en revisión.

0. Construcción del entorno e inicio rápido

  • También grabé recientemente un video de este paso.

La última configuración de Windows entorno VSCode y Anaconda

La "clasificación de imágenes" se basa en un entorno cero y comienza rápidamente

  • Si no quieres ver el video, pon aquí la versión en texto. Se recomienda utilizar Anaconda para la gestión del entorno, el comando para crear el entorno es el siguiente
conda create -n [name] python=3.6 其中[name]改成自己的环境名,如[name]->torch,conda create -n torch python=3.6
  • Mi entorno de prueba es el siguiente
torch==1.7.1
torchvision==0.8.2
scipy==1.4.1
numpy==1.19.2
matplotlib==3.2.1
opencv_python==3.4.1.15
tqdm==4.62.3
Pillow==8.4.0
h5py==3.1.0
terminaltables==3.1.0
packaging==21.3
  • Primero instale Pytorch. La versión recomendada es la misma que la mía. Ingrese al sitio web oficial de Pytorch , haga clic en install previous versions of PyTorch, tome 1.7.1 como ejemplo, la instalación proporcionada en el sitio web oficial es la siguiente, seleccione la versión cuda adecuada
# CUDA 11.0
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

# CUDA 10.2
pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2

# CUDA 10.1
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

# CUDA 9.2
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

# CPU only
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
  • Después de instalar Pytorch , ejecute
pip install -r requirements.txt
python tools/single_test.py datas/cat-dog.png models/mobilenet/mobilenet_v3_small.py --classes-map datas/imageNet1kAnnotation.txt

1. Producción de conjuntos de datos

1.1 Creación de archivos de etiquetas

  • Descargar el código del proyecto localmente
    inserte la descripción de la imagen aquí

  • Esta demostración toma el conjunto de datos de flores como ejemplo, y la estructura del directorio es la siguiente:

├─flower_photos
│  ├─daisy
│  │      100080576_f52e8ee070_n.jpg
│  │      10140303196_b88d3d6cec.jpg
│  │      ...
│  ├─dandelion
│  │      10043234166_e6dd915111_n.jpg
│  │      10200780773_c6051a7d71_n.jpg
│  │      ...
│  ├─roses
│  │      10090824183_d02c613f10_m.jpg
│  │      102501987_3cdb8e5394_n.jpg
│  │      ...
│  ├─sunflowers
│  │      1008566138_6927679c8a.jpg
│  │      1022552002_2b93faf9e7_n.jpg
│  │      ...
│  └─tulips
│  │      100930342_92e8746431_n.jpg
│  │      10094729603_eeca3f2cb6.jpg
│  │      ...
  • Awesome-Backbones/datas/Cree un archivo de etiquetas en el archivo annotations.txt, que se escribirá en el archivo por línea 类别名 索引;
daisy 0
dandelion 1
roses 2
sunflowers 3
tulips 4

inserte la descripción de la imagen aquí

1.2 División de conjuntos de datos

  • AbiertoAwesome-Backbones/tools/split_data.py
  • Modificación 原始数据集路径y 划分后的保存路径, se recomienda encarecidamente no cambiar la ruta guardada después de la división datasetsEn el siguiente paso, la operación se basa en la carpeta por defecto.
init_dataset = 'A:/flower_photos' # 改为你自己的数据路径
new_dataset = 'A:/Awesome-Backbones/datasets'
  • AbraAwesome-Backbones/ una terminal e ingrese el comando:
python tools/split_data.py
  • El formato del conjunto de datos dividido es el siguiente:
├─...
├─datasets
│  ├─test
│  │  ├─daisy
│  │  ├─dandelion
│  │  ├─roses
│  │  ├─sunflowers
│  │  └─tulips
│  └─train
│      ├─daisy
│      ├─dandelion
│      ├─roses
│      ├─sunflowers
│      └─tulips
├─...

1.3 Preparación de archivos de información del conjunto de datos

  • Asegúrese de que el conjunto de datos dividido esté Awesome-Backbones/datasetsdebajo ; de lo contrario, get_annotation.pymodifique la ruta del conjunto de datos debajo;
datasets_path   = '你的数据集路径'
  • AbraAwesome-Backbones/ una terminal e ingrese el comando:
python tools/get_annotation.py
  • Awesome-Backbones/datasEl archivo de información del conjunto de datos generado se obtiene train.txtbajotest.txt
    inserte la descripción de la imagen aquí

2. Modificar el archivo de parámetros

  • Cada modelo corresponde a su propio archivo de configuración, que se guarda Awesome-Backbones/modelsen el siguiente
  • Un modelo completo está formado por backbone, neck, head,head.loss
  • Encuentre el archivo de configuración de parámetros de DaViT, puede verlo 所有支持的类型todo aquí,且每个模型均提供预训练权重
    inserte la descripción de la imagen aquí
  • model_cfgModifíquelo num_classesa su propio tamaño de categoría de conjunto de datos en
  • De acuerdo con el rendimiento de su propia computadora, data_cfgmodifique batch_sizeynum_workers
  • Si hay un peso de preentrenamiento, puede pretrained_weightsconfigurarlo Truey asignar la ruta del peso de preentrenamiento apretrained_weights
  • Si necesita congelar el entrenamiento, freeze_flag configúrelo en True, las opciones para congelar son columna vertebral, cuello, cabeza
  • optimizer_cfgModifique la tasa de aprendizaje inicial en, de acuerdo con su propia depuración batch size, 若使用了预训练权重se recomienda学习率调小
  • Consulte la actualización de la tasa de aprendizaje para obtener más detalles core/optimizers/lr_update.py, y también prepare la estrategia de actualización de la tasa de aprendizaje de video "Clasificación de imágenes"|optimizador
  • Para una modificación más específica del archivo de configuración, consulte la explicación del archivo de configuración y también prepare la descripción complementaria del archivo de configuración de "clasificación de imágenes" del video

3. Entrenamiento

  • Confirme que Awesome-Backbones/datas/annotations.txtla etiqueta está lista
  • Confirmar y corresponder a Awesome-Backbones/datas/_train.txttest.txtannotations.txt
  • Seleccione el modelo que desea entrenar, busque el archivo de configuración correspondiente Awesome-Backbones/models/a continuación , tome davit_tiny como ejemplo
  • 配置文件解释Modificar parámetros según
  • Awesome-BackbonesAbra una terminal en la ruta y ejecute
python tools/train.py models/davit/davit_tiny.py

inserte la descripción de la imagen aquí

4. Evaluación

  • Confirme que Awesome-Backbones/datas/annotations.txtla etiqueta está lista
  • Confirmar y corresponder Awesome-Backbones/datas/_test.txtannotations.txt
  • Awesome-Backbones/models/Busque el archivo de configuración correspondiente en
  • En el archivo de configuración de parámetros 修改权重路径,其余不变
ckpt = '你的训练权重路径'
  • Awesome-BackbonesAbra una terminal en la ruta y ejecute
python tools/evaluation.py models/davit/davit_tiny.py

inserte la descripción de la imagen aquí

  • Prueba de imagen única , ejecutar en Awesome-Backbonesterminal abierta
python tools/single_test.py datasets/test/dandelion/14283011_3e7452c5b2_n.jpg models/davit/davit_tiny.py

inserte la descripción de la imagen aquí
Hasta ahora, si no se está ejecutando, ve a la estación B para ver el video que te enseñará a ejecutar ~

5. Otros tutoriales

Además de lo anterior, también he preparado otros tutoriales de operación necesarios para usted, todos los cuales están ubicados en la página de inicio del proyecto GitHub y pegados aquí para su conveniencia.

Cualquier actualización será notificada en Github y Station B, recuerda seguir a Star y Sanlian~

Supongo que te gusta

Origin blog.csdn.net/zzh516451964zzh/article/details/129442263
Recomendado
Clasificación