Directorio de artículos
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
- Descargar MobileNetV3-Pequeños pesos a datos
- Entrada de terminal en la carpeta Awesome-Backbones
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
-
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 archivoannotations.txt
, que se escribirá en el archivo por línea类别名 索引
;
daisy 0
dandelion 1
roses 2
sunflowers 3
tulips 4
1.2 División de conjuntos de datos
- Abierto
Awesome-Backbones/tools/split_data.py
- Modificación
原始数据集路径
y划分后的保存路径
, se recomienda encarecidamente no cambiar la ruta guardada después de la divisióndatasets
En el siguiente paso, la operación se basa en la carpeta por defecto.
init_dataset = 'A:/flower_photos' # 改为你自己的数据路径
new_dataset = 'A:/Awesome-Backbones/datasets'
- Abra
Awesome-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/datasets
debajo ; de lo contrario,get_annotation.py
modifique la ruta del conjunto de datos debajo;
datasets_path = '你的数据集路径'
- Abra
Awesome-Backbones/
una terminal e ingrese el comando:
python tools/get_annotation.py
Awesome-Backbones/datas
El archivo de información del conjunto de datos generado se obtienetrain.txt
bajotest.txt
2. Modificar el archivo de parámetros
- Cada modelo corresponde a su propio archivo de configuración, que se guarda
Awesome-Backbones/models
en 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í,且每个模型均提供预训练权重
model_cfg
Modifíquelonum_classes
a su propio tamaño de categoría de conjunto de datos en- De acuerdo con el rendimiento de su propia computadora,
data_cfg
modifiquebatch_size
ynum_workers
- Si hay un peso de preentrenamiento, puede
pretrained_weights
configurarloTrue
y asignar la ruta del peso de preentrenamiento apretrained_weights
- Si necesita congelar el entrenamiento,
freeze_flag
configúrelo enTrue
, las opciones para congelar son columna vertebral, cuello, cabeza optimizer_cfg
Modifique la tasa de aprendizaje inicial en, de acuerdo con su propia depuraciónbatch 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.txt
la etiqueta está lista - Confirmar y corresponder a
Awesome-Backbones/datas/
_train.txt
test.txt
annotations.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únAwesome-Backbones
Abra una terminal en la ruta y ejecute
python tools/train.py models/davit/davit_tiny.py
4. Evaluación
- Confirme que
Awesome-Backbones/datas/annotations.txt
la etiqueta está lista - Confirmar y corresponder
Awesome-Backbones/datas/
_test.txt
annotations.txt
Awesome-Backbones/models/
Busque el archivo de configuración correspondiente en- En el archivo de configuración de parámetros
修改权重路径
,其余不变
ckpt = '你的训练权重路径'
Awesome-Backbones
Abra una terminal en la ruta y ejecute
python tools/evaluation.py models/davit/davit_tiny.py
- Prueba de imagen única , ejecutar en
Awesome-Backbones
terminal abierta
python tools/single_test.py datasets/test/dandelion/14283011_3e7452c5b2_n.jpg models/davit/davit_tiny.py
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.
- Construcción del entorno
- Preparación del conjunto de datos
- Explicación del archivo de configuración
- tren
- Evaluación de modelos y detección de lotes/detección de video
- Calcular fracasos y parámetros
- Agregar nuevos componentes del modelo
- Categoría Activación Mapa Visualización
- Visualización de políticas de tasa de aprendizaje
Cualquier actualización será notificada en Github y Station B, recuerda seguir a Star y Sanlian~