# 实现以及部署过程(方案)
## 一、前景主体分割要求
- 模型大小:不超过100M
- 算法性能指标:在1080 TI GPU上处理一张图片的时间不超过5秒
- 效果指标:主体边缘细节清晰,MIOU越高越好
- 网络模型工程化:离线可进行验证的包含全部依赖的C++例程
## 二、实现方案
使用显著性目标检测(SOD)模型[U2Net](https://github.com/xuebinqin/U-2-Net),U2Net提供了源码以及两个模型,一个167.3M,一个4.7M。
至此,将问题转化为将**优化U2Net模型大小**,以下为实现方案:
- 降低模型精度,使用float16进行计算(失败,预测不正确,得到全黑的图像)
- 将普通的卷积层改为分组卷积,分为2组
- 将普通的卷积层改为深度可分离卷积
## 三、训练
### 3.1 数据集
- 训练集
将[DUTS-TR](http://saliencydetection.net/duts)(5019张图像)、[DUTS-TE](http://saliencydetection.net/duts)(10553张图片)作为训练集(总共15572张图像)。
- 验证集
在[DUT-OMRON](http://saliencydetection.net/dut-omron/#org96c3bab)(5168张)、[ECSSD](http://www.cse.cuhk.edu.hk/leojia/projects/hsaliency/dataset.html)(1000张)、[HKU-IS](https://i.cs.hku.hk/~gbli/deep_saliency.html)(4447张)、[MSRA10K](https://mmcheng.net/msra10k/)(10000张)、[MSRA-B](https://mmcheng.net/msra10k/)(5000张))中(共25615张)随机取1000张作为验证集。
### 3.2 训练细节
在两张1080 TI上训练,批次大小(batch size)设置为16,每迭代2000次,保存一次模型,
迭代200000次,结束训练(即保存有100个模型),其他参数使用原U2Net的参数。
<!-- 当训练整体损失(由side1-6以及side fuse分类的损失相加)小于0.5或者side fuse分类的损失小于0.05时停止训练。 -->
训练时使用以下两种参数初始化方式:
- 加载修改后U2Net的模型(167.3M)做为初始化参数、
1. 分组卷积(将卷积层权重相邻的通道,两两切分作为一组,取平均值,得到一个通道,处理权重的所有通道,并将处理后的参数级联到一起。)【模型大小86M】
2. 深度可分离卷积(将depthwise conv的权重设置为原来普通卷积层(out_channels, in_channels, kernel_h, kernel_width)的第一维取平均得到,再第一维与第二位做转置,得到(in_channels, 1, kernel_h, kernel_width)的张量作为初始化参数;depthwise conv的bias,设置为size为(in_channels)的全零张量,pointwise conv的权重,将原来普通卷积层的张量的第三第四维求平均得到(out_channels, in_channels, 1, 1)大小的张量,pointwise conv的bias,使用原来普通卷积层的bias。)【模型大小21M】
- 直接默认的初始化方式,进行训练。(尝试之后,决定放弃这种训练方式)
加载修改后的模型初始化参数,可以加快损失下降速度(而且不只是快一点点。)如下图为分组卷积在两种不同训练方式下的损失变化。
默认初始化:训练十几轮(每轮2000次迭代)从0.48降到0.4左右
![](./Figures/train_groupconv_nopretrain.png)
修改后的模型初始化参数:训练三十几轮(每轮2000次迭代)从0.44左右降到0.06左右,十几轮就已经降到了0.1左右
![](./Figures/train_groupconv_pretrain.png)
## 四、部署方案
将pytorch下训练得到的pth模型,转为onnx模型,使用OpenCV中的dnn模块加载进行推理(其中对OpenCV进行重新编译,加入CUDA加速处理相关依赖,时间从1800ms左右,降到了120ms左右,在i5-7400 CPU @ 3.00GHz + 1050Ti的主机上)。
没有合适的资源?快使用搜索试试~ 我知道了~
基于显著性目标检测的非特定类别图像分割-中国大学生服务外包创新创业大赛.zip
共76个文件
py:48个
cpp:9个
json:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 21 浏览量
2024-06-23
21:00:57
上传
评论
收藏 8.26MB ZIP 举报
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
基于显著性目标检测的非特定类别图像分割-中国大学生服务外包创新创业大赛.zip (76个子文件)
ori_sys
Figures
train_groupconv_pretrain.png 36KB
train_groupconv_nopretrain.png 41KB
Backup
v1
download dataset.sh 504B
utils
__init__.py 78B
transform.py 639B
iou.py 382B
dataset
__init__.py 32B
dataset.py 2KB
nerworks
__init__.py 28B
sod_net_part.py 3KB
sod_net.py 2KB
train.py 4KB
U2NetPy
u2net_groupconv.py 15KB
u2net_refactor.py 6KB
u2net_test.py 4KB
setup_model_weights.py 431B
u2net_dsconv.py 15KB
weight_transform.py 3KB
main.py 5KB
model_summary.py 2KB
u2net_train_amp.py 5KB
u2net.py 15KB
data_loader.py 9KB
load_net.py 246B
sod.py 2KB
saved_models
u2netp.pth 4.47MB
u2netp.onnx 4.35MB
get_opencv_lib_name.py 397B
load_model_opencv.py 2KB
crf.py 7KB
extract_train_loss_info.py 2KB
u2net_train.py 6KB
model_transform.py 3KB
U2Net
U2NetPy
tools
setup_model_weights.py 431B
weight_transform.py 4KB
extract_train_result.py 2KB
model_summary.py 2KB
get_opencv_lib_name.py 397B
model_transform.py 3KB
loss.py 673B
backup
u2net_refactor.py 6KB
load_model_by_opencv_dnn.py 2KB
u2net_test.py 4KB
main.py 5KB
sod.py 2KB
utils
crf.py 7KB
nets
__init__.py 910B
u2net_groupconv.py 15KB
u2net_dsconv.py 15KB
u2net.py 15KB
u2net_val.py 5KB
data_loader.py 9KB
u2net_train.py 6KB
U2NetCPP
.vscode
tasks_backup.json 2KB
c_cpp_properties.json 1KB
launch_bakcup.json 1KB
settings.json 2KB
tasks.json 2KB
launch.json 733B
U2NetCPP_VS
Utils.h 706B
Utils.cpp 1KB
config.ini 156B
readme.md 2KB
U2Net.cpp 3KB
inipp.h 7KB
U2Net.hpp 690B
Main.cpp 2KB
U2NetCPP_VSCODE
U2Netp.hpp 4KB
test_env
hello.cpp 237B
hello_opencv.cpp 264B
hello_opencv_cuda.cpp 184B
hello_main.cpp 119B
SODMain.cpp 1KB
U2Netp.cpp 3KB
.gitignore 65B
README.md 4KB
共 76 条
- 1
资源评论
毕业小助手
- 粉丝: 2750
- 资源: 5583
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功