YOLOv2+MobileNet,windows下调试

部署运行你感兴趣的模型镜像

作者github更新了YOLO2代码,加入了groups机制,加了LSTM功能。要实现基于MobileNet的YOLO2,根据之前基于darknet的YOLO2版本可以简单修改。几个修改的地方:

1、部分源文件中net定义变为指针。比如parser.c文件。一一修改。

2、在data.c中线程代码段,有些产生随机数的代码需要修改,否则训练会一直跑同一张图像。比如

rand()%m,用没有groups版本的替换即可。

3、一些函数参数数量改变,需要添加。

4、darknet.h前面加上定义:

#if (defined(WIN32) || defined(WIN64)) && !defined(__cplusplus)  
#define inline __inline  
#endif  

其他零零散散修改,剩下就是写MobileNet的网络结构文件,可以参考宋木,训练正常,但是感觉MobileNet_voc训练速度比darknet_voc慢了,而且没有预训练模型,模型大小190M左右,比darknet版本(260M)的降低30%左右。我的配置不高,训练起来收敛不了,loss在15左右一直降不下去,而且测试时发现没有任何检测结果。一个可能是模型问题,一个可能是检测代码的参数问题。

--------------------------------------------------------------------------------------

20180222

设置训练参数,发现需要在较大学习率(0.001)下迭代较长时间(5000代改一次学习率),loss才会慢慢下降。




您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

要将YOLOv5s的主干网络替换为MobileNet-V3,可参考以下步骤: ### 了解MobileNet-V3 MobileNetV3是Google研究团队推出的下一代MobileNet系列模型,专为移动设备设计的高效卷积神经网络。它结合了互补的搜索技术和新颖的架构设计,旨在为移动CPU优化,并在准确率、延迟和模型大小之间取得更好的平衡 [^2]。 ### 替换操作 #### 1. 设定网络结构的传参细节 修改`models/yolo.py`文件,将MobileNet-V3类名加入其中。当新的自定义模块中存在输入输出维度时,要使用qw调整输出维度 [^3]。示例代码如下(此处仅为示意,实际需根据具体情况修改): ```python # 在models/yolo.py中添加MobileNet-V3相关代码 import torch import torch.nn as nn # 这里假设已经有MobileNet-V3的实现类 MobileNetV3 class MobileNetV3(nn.Module): def __init__(self, ...): super(MobileNetV3, self).__init__() # 定义MobileNet-V3的层结构 ... def forward(self, x): # 定义前向传播逻辑 ... # 在YOLOv5的模型构建部分添加MobileNet-V3 def create_model(cfg, ...): ... if 'MobileNetV3' in cfg: backbone = MobileNetV3(...) ... return model ``` #### 2. 修改现有模型结构配置文件 修改`models/yolov5s.yaml`文件。当引入新的层时,要修改后续的结构中的`from`参数;当仅替换主干网络时,要注意特征图的变换,如`/8`,`/16`,`/32` [^3]。示例配置如下(仅为示意,实际需根据具体情况修改): ```yaml # models/yolov5s.yaml nc: 80 # number of classes depth_multiple: 0.33 # model depth multiple width_multiple: 0.50 # layer channel multiple anchors: - [10,13, 16,30, 33,23] # P3/8 - [30,61, 62,45, 59,119] # P4/16 - [116,90, 156,198, 373,326] # P5/32 backbone: # MobileNet-V3 结构定义 [[-1, 1, MobileNetV3, [args]], # 替换原有的主干网络层 ... ] head: [[-1, 1, Conv, [256, 1, 1]], ... ] ``` ### 训练与验证 完成上述修改后,就可以使用修改后的YOLOv5s模型进行训练和验证。使用YOLOv5的训练脚本进行训练: ```bash python train.py --img 640 --batch 16 --epochs 100 --data coco.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt ``` ### 注意事项 - MobileNetV3-large模型比MobileNetV3-small多了更多的MobileNet_Block结构,残差倒置结构中通道数维度也增大了许多,速度比YOLOv5s慢将近一半,但是参数变少,效果介乎MobileNetV3-small和YOLOv5s之间,可以根据实际需求选择合适的版本 [^1]。
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值