快速入门#
本章节以dvs-mnist为例,说明BIDL工程的使用方法。
选择配置文件#
dvs-mnist数据集使用 clif3fc3dm_itout-b16x1-dvsmnist.py 配置文件。由于dvs-mnist属于dvs数据的分类,所以在 applications/classification/dvs 目录下创建 dvs-mnist 文件夹,又根据其模型结构,在新建的 dvs-mnist 文件夹下创建 clif3fc3dm 文件夹,最后将配置文件放到该路径下。
注意
配置文件都是Python源代码文件,文件名后缀都是.py。
准备数据集#
查看 选择配置文件 中选择的配置文件中设定的数据集路径,然后在工程根目录下新建对应的数据集的目录。
data = dict(
samples_per_gpu=16,
workers_per_gpu=2,
train=dict(
type=dataset_type,
data_prefix='data/dvsmnist/train/',
pipeline=train_pipeline
),
val=dict(
type=dataset_type,
data_prefix='data/dvsmnist/val/',
pipeline=test_pipeline,
test_mode=True
),
test=dict(
type=dataset_type,
data_prefix='data/dvsmnist/test/',
pipeline=test_pipeline,
test_mode=True
)
)
模型训练#
在 tools 目录下,执行以下命令,开始训练模型。
python train.py --config clif3fc3dm_itout-b16x1-dvsmnist
注意
--config 后的参数 clif3fc3dm_itout-b16x1-dvsmnist 是 选择配置文件
章节中选择的配置文件的名称去掉.py。
训练开始后,会依次打印:
本次训练所涉及到的配置信息,包括:
配置文件中的信息
checkpoint保存的路径信息。
checkpoint文件默认会保存在项目根目录 /work_dirs/clif3fc3dm_itout-b16x1-dvsmnist/ 下,会在此路径下生成一个 lastest.pth 文件,为最后一个epoch保存的checkpoint文件,此外还会生成一个 best.pth 文件,保存的是验证集精度最优的checkpoint文件。目录树如下:
clif3fc3dm_itout-b16x1-dvsmnist/ ├── 20240829_171552.log #本次训程中的所有日志,如损失、正确率 ├── best.pth #验证集最优的模型存档点,即权重 └── latest.pth #最后一轮训练的模型存档点,即权重
注意
如无特殊需求,不要用
--work-dir传入其他路径来保存 checkpoint 文件。之后的内容为模型训练的日志信息,如下是前两个epoch输出的日志信息:
2024-08-29 17:33:37,021 - cls - INFO - Epoch [1][100/452] lr:
2.060e-02 top-1: 22.7500 top-5: 62.5000 loss: 2.1440
2024-08-29 17:33:48,696 - cls - INFO - Epoch [1][200/452] lr:
4.040e-02 top-1: 73.8750 top-5: 96.8125 loss: 1.1264
2024-08-29 17:34:00,255 - cls - INFO - Epoch [1][300/452] lr:
6.020e-02 top-1: 89.1875 top-5: 98.6250 loss: 0.8457
2024-08-29 17:34:11,309 - cls - INFO - Epoch [1][400/452] lr:
8.000e-02 top-1: 90.6250 top-5: 99.1250 loss: 0.7871
2024-08-29 17:34:16,431 - cls - INFO - Saving checkpoint at 1 epochs
2024-08-29 17:34:21,611 - cls - INFO - Epoch(val) [1][20] top-1:
87.1275 top-5: 98.9238
2024-08-29 17:34:31,200 - cls - INFO - Epoch [2][100/452] lr:
9.980e-02 top-1: 94.3750 top-5: 99.6250 loss: 0.7186
2024-08-29 17:34:41,470 - cls - INFO - Epoch [2][200/452] lr:
9.980e-02 top-1: 94.6875 top-5: 99.6250 loss: 0.6894
2024-08-29 17:34:51,961 - cls - INFO - Epoch [2][300/452] lr:
9.980e-02 top-1: 97.3125 top-5: 99.8750 loss: 0.6128
2024-08-29 17:35:02,393 - cls - INFO - Epoch [2][400/452] lr:
9.980e-02 top-1: 97.3750 top-5: 99.9375 loss: 0.5926
2024-08-29 17:35:07,965 - cls - INFO - Saving checkpoint at 2 epochs
2024-08-29 17:35:14,549 - cls - INFO - Epoch(val) [2][20] top-1:
98.1374 top-5: 100.0000
训练结束,将最优的权重文件拷贝到资源包中的权重文件路径中: /weight_files/classification/clif3fc3dm/lif
模型推理(GPU)#
在 tools 目录下,执行以下命令,进行模型推理。
python test.py --config clif3fc3dm_itout-b16x1-dvsmnist --checkpoint latest.pth --use_lyngor 0 --use_legacy 0
推理过程如下:
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2409/2409 [01:23<00:00, 28.85it/s]
acc top-1: 99.21 top-5: 100.00
gpu test speed = 576.6303 fps
gpu test speed (without pipeline) = 583.3422 fps
由于在进行训练的时候,checkpoint文件的保存路径默认是固定的,且次级目录与配置文件名称相同,所以 --checkpoint 的参数只需指定 pth 文件名称即可。
模型推理(灵汐芯片)#
在BIDL框架中,采用开关切换后台执行环境,具体的,在使用 test.py 进行时,需配置:
配置项 |
说明 |
|---|---|
--us_lyngor |
用于标识是否使用Lyngor进行编译。 【数据类型】ENUM 【取值范围】
|
--use_legacy |
用于标识是否直接加载历史编译生成物、跳过编译环节。 【数据类型】ENUM 【取值范围】
|
如:
python test.py --config clif3fc3dm_itout-b16x1-dvsmnist --checkpoint latest.pth --use_lyngor 1 --use_legacy 0
注意
需要将训练好的文件(位于 work_dirs )及验证数据集拷贝到灵汐类脑计算设备中才可执行此脚本。