该周主要是完成对于BiseNet的训练和测试以及模型的相关改进。
因为我们识别车道线,只需要将图片中的事物分为两类即可,第一类则是背景,第二类则是车道线。而同时有场地仍然没有确定,我只能拿自己的训练集进行相关的测试。
BiSeNetV2模型的参数相比于V1的参数更少,而模型更轻量级,速度更快,因此我选择了对于BiSeNet的训练修改,对于作者提出的网络,我进行了复现并训练,根据后面出现的问题再对网络进行一定的修正。
修改配置文件
## bisenetv2
cfg = dict(
model_type='bisenetv2',
n_cats=2,
num_aux_heads=4,
lr_start=5e-3,
weight_decay=5e-4,
warmup_iters=1000,
max_iter=2000,
dataset='CityScapes',
im_root='./datasets/cityscapes',
train_im_anns='./datasets/cityscapes/train.txt',
val_im_anns='./datasets/cityscapes/val.txt',
scales=[0.25, 2.],
cropsize=[640, 256],
eval_crop=[640, 256],
eval_scales=[0.5, 0.75, 1.0, 1.25, 1.5, 1.75],
ims_per_gpu=3,
eval_ims_per_gpu=2,
use_fp16=True,
use_sync_bn=True,
respth='./res',
)
训练
python -m torch.distributed.launch --nproc_per_node=1 tools/train_amp.py
训练过程中的问题:训练过程中的Loss值有时候会变为Nan,这意味着模型不够收敛。我还没找到该问题的答案,而且它的loss值十分不稳定,我认为是我的数据集数量不够多,我只选用了80张图片。
模型的相关改进
因为我们对于精度并不那么需要,而我们应该做的是将我们的模型参数,模型尺寸尽量减小,使得它可以在我们的板子上能够更快的运行,因此我尝试将BiseNet模型中CE模块去除,从而得到更小的体积,但是精度必然下降。
后续如果在发现可以改进速度但又不太会影响精度的情况下进行修改。
版权声明:本文为m0_53446118原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。