mindspore(二)-yolov5的训练、改进及MindConverter的使用

mindspore-yolov5的训练、改进及MindConverter的使用

YOLO系列的目标检测算法发展迅速,yolov5在v4的基础上增加了一些训练的小tricks使得精度进一步提升,此次实验训练mindspore框架下的yolov5并进行简单的改进

目标检测

目标检测主要解决两个问题:
1.判定图像上有哪些目标物体,解决目标物体存在性的问题;
2.判定图像中目标物体的具体位置,解决目标物体在哪里的问题。
在这里插入图片描述


训练环境

mindspore-gpu=1.5.0
liunx操作系统

准备

获取官方的yolov5代码 链接: https://gitee.com/mindspore/models/tree/master/official/cv/yolov5
各个领域经典算法官方都给出了复现的代码,直接通过华为modelzoo获取
数据集准备 ,数据集的格式如下:

在这里插入图片描述
包含:训练图像数据,验证图像,以及两个json文件,至于如何制作这样的数据集,网上教程及代码很多可以参考

开始训练

在制作好数据集后,需要在default_config .yaml文件中修改数据集路径,预训练模型,yolov5的模式,类别数
修改好配置文件后执行下面命令

#run training example(1p) by python command
python train.py \
    --data_dir=xxx/dataset \
    --yolov5_version='yolov5s' \
    --is_distributed=0 \
    --lr=0.01 \
    --T_max=320
    --max_epoch=320 \
    --warmup_epochs=4 \
    --per_batch_size=32 \
    --lr_scheduler=cosine_annealing > log.txt 2>&1 &

然后就成功训练起来了
在这里插入图片描述

mindspore-yolov5的小改动

看了几篇中文核心,大抵上都是加了注意力模块,修改了损失函数等(甚至有几篇加的注意力和修改的损失都一样,离谱),那就仿照着做吧
做了以下优化:
1.yolov5的主干网络加入了SE注意力(只是用来测试,所以选择了最简单的注意力,已发表的核心主要加的是CA,ECA注意力等)
2.将giou损失修改为GIOU损失,提高边界框定位精度

SEnet的torch代码实现如下:

import torch
import torch.nn as nn
import math
class se_block(nn.Module):
    def __init__(self, channel, ratio=16):
        super(se_block, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
                nn.Linear(channel, channel // ratio, bias=False),
                nn.ReLU(inplace=True),
                nn.Linear(channel // ratio, channel, bias=False),
                nn.Sigmoid()
        )
    def forward(self
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值