基于显著性目标检测的非特定类别图像分割实现以及部署过程(附源码+数据集)

Strawssberry778 Strawssberry778     2023-03-28     632

关键词:

基于显著性目标检测的非特定类别图像分割实现以及部署过程

一、前景主体分割要求

  • 模型大小:不超过100M
  • 算法性能指标:在1080 TI GPU上处理一张图片的时间不超过5秒
  • 效果指标:主体边缘细节清晰,MIOU越高越好
  • 网络模型工程化:离线可进行验证的包含全部依赖的C++例程

二、实现方案

使用显著性目标检测(SOD)模型U2Net,U2Net提供了源码以及两个模型,一个167.3M,一个4.7M。

至此,将问题转化为将优化U2Net模型大小,以下为实现方案:

  • 降低模型精度,使用float16进行计算(失败,预测不正确,得到全黑的图像)
  • 将普通的卷积层改为分组卷积,分为2组
  • 将普通的卷积层改为深度可分离卷积

三、训练

3.1 数据集

  • 训练集
    DUTS-TR(5019张图像)、DUTS-TE(10553张图片)作为训练集(总共15572张图像)。
  • 验证集
    DUT-OMRON(5168张)、ECSSD(1000张)、HKU-IS(4447张)、MSRA10K(10000张)、MSRA-B(5000张))中(共25615张)随机取1000张作为验证集。

3.2 训练细节

在两张1080 TI上训练,批次大小(batch size)设置为16,每迭代2000次,保存一次模型,
迭代200000次,结束训练(即保存有100个模型),其他参数使用原U2Net的参数。

训练时使用以下两种参数初始化方式:

  • 加载修改后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左右

修改后的模型初始化参数:训练三十几轮(每轮2000次迭代)从0.44左右降到0.06左右,十几轮就已经降到了0.1左右

四、部署方案

将pytorch下训练得到的pth模型,转为onnx模型,使用OpenCV中的dnn模块加载进行推理(其中对OpenCV进行重新编译,加入CUDA加速处理相关依赖,时间从1800ms左右,降到了120ms左右,在i5-7400 CPU @ 3.00GHz + 1050Ti的主机上)。

五、完整源码

下载链接https://download.csdn.net/download/DeepLearning_/87378107

【目标检测】论文推荐——基于深度神经网络的目标检测

参考技术A原文:ScalableObjectDetectionusingDeepNeuralNetworks——学术范最近,深度卷积神经网络在许多图像识别基准上取得了最先进的性能,包括ImageNet大规模视觉识别挑战(ILSVRC-2012)。在定位子任务中获胜的模型是一个网络,它预测了... 查看详情

用matlab如何通过图像分割来检测边界

...多有用的图像处理函数,做图像分割方法有很多,例如:基于阈值的方法,基于边缘的方法,基于区域的方法,基于凸轮的方法以及基于能量泛函的方法。其中matlab里面有很多做边缘检测的算法,最常用的是sobel,prewitte算法,... 查看详情

基于kmeans聚类算法的图像分割(色彩分割)实战(代码片段)

基于Kmeans聚类算法的图像分割(色彩分割)实战图像分割是将一幅图像分割成多个像素区域的任务。属于同一对象类型的所有像素都被分配到同一类别下。图像分类是给一副完整的图像一个类别,目标检测是检测到图像中的所有... 查看详情

计算机视觉领域的三大任务

计算机视觉的三大分类任务:图像分类、目标检测、图像分割; 1.图像分类(Classification),即是将图像结构化为某一类别的信息,用事先确定好的类别(category)或实例ID来描述图片。2.目标检测(Detection)。分类任务关心整体... 查看详情

运动对象检测和描述

运动图像检测基于背景减法目标跟踪,背景分割器:KNN、MOG2和GMGBasicmotiondetectionandtrackingwithPythonandOpenCV使用背景减除进行目标检测用OpenCV实现多目标追踪(C++/Python)通过形态学改善图像过滤,追踪人脸,检测前景/背景区域和深度... 查看详情

数字图像处理帧差法与kirsch边缘检测实现运动目标识别与分割(代码片段)

...色、亮度、纹理以及边缘信息等)来提取视频对象。例如基于边缘的目标提取算法,虽然算法能检测出精确的图像边缘,但是检测过程存在较大的盲目性,检测出的边缘不仅包括所需要的运动目标的边缘,连背景中的静止物体的... 查看详情

深度学习目标分割概述

...中的内容,包含三大基本任务:图像分类(图a)、目标检测(图b)和图像分割,其中图像分割又可分为:语义分割(图c)和实例分割(图d)。这三个任务对图像的理解逐步深入。假设给定一张输入图像,图像分类旨在判断该... 查看详情

图像分割

...以作为后续特征提取的目标对象。本文主要包括以下内容基于梯度的Sobel、Prewitt和Roberts算子的边缘检测LoG边缘检测算法Canny边缘检测算法Hough变换和直线检测阙值分割技术基于区域的图像分割技术本章的典型案例基于LoG和Canny算... 查看详情

图像处理技术:数字图像分割------图像分割边界分割(边缘检测)区域分割

...和连通性。• 均匀性是指该区城中的所有像素点都满足基于灰度、纹理、彩色等特征的某种相似性准则;• 连通性是指该区城内存在连接任意两点的路径。 (2)相邻分割区域之间针对选定的某种差异显著性。 (3)... 查看详情

我所了解的图像分割

...义【像素级别图像】,实例【分割物体有进一步分类】。基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。确定某个准则函数来求解最佳... 查看详情

1.5:基于聚类的“图像分割”实例编写(代码片段)

...区域的颜色值的范围,来达到分割的目的。4.特定理论:基于聚类分析、小波变换等理论完成图像分割。  实例描述目标:利用K-means聚类算法对图像像素点颜色进行聚类实现简单的图像分割输出:同一聚类中的点使用相同... 查看详情

基于matlab编程的粒子群算法优化阈值分割,基于最大信息熵粒子群优化阈值分割

...分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程... 查看详情

手把手教你使用labview实现maskr-cnn图像实例分割(含源码)(代码片段)

...)前言前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现MaskR-CNN图像实例分割。一、什么是图像实例分割?图像实例分割(InstanceSegmentation)是在语义检测(SemanticSegmentation)的基础上进... 查看详情

one-yolov5v1.2.0released(支持分类,检测,实例分割)(代码片段)

...了ultralyticsyolov5的上游分支v7.0,同时支持分类,目标检测,实例分割任务原图目标检测:目标检测是指从图像中检测出多个物体并标记它们的位置和类别。目标检测任务需要给出物体的类别和位置信息,通常使用边... 查看详情

目标检测概念

参考技术A目标检测的实质是多目标的定位,即要在图片中定位多个目标物体。例如下图,既要定位各个目标,还需要将不同目标用不同颜色的框表示。1、目标检测和识别的区别在于:1)目标识别:图像中描述的是哪个物体?输... 查看详情

关于图像的显著性检测

  图像显著性检测-SaliencyDetectionviaGraph-BasedManifoldRanking       显著性检测是很多计算机处理的预处理,有限的计算机资源来处理数以亿计的图片,不仅耗资巨大,而且往往时间复杂度高。  &... 查看详情

显著性检测:'saliencydetectionviagraph-basedmanifoldranking'论文总结

对显著性检测的一些了解:一般认为,良好的显著性检测模型应至少满足以下三个标准:1)良好的检测:丢失实际显著区域的可能性以及将背景错误地标记为显著区域应该是低的;2)高分辨率:显著图应该具有高分辨率或全分... 查看详情

自动驾驶中的深度学习模型量化部署加速实战

这里主要是针对AI算法落地的模型部署,其中有基于TensorRT的部署、基于OpenCV+CUDA的部署以及基于NCNN的部署,项目包括简单的demo案例、目标检测、语义分割、实例分割、车道线检测以及Transformer等。大家可以参考以下的链接进行... 查看详情