TensorFlow Lite+OpenCV实现移动端水印的检测与去除

本文详细介绍了如何利用TensorFlow Lite和OpenCV在移动端实现水印检测与去除。首先,通过TensorFlow Object Detection API训练SSD模型,接着进行模型优化和转换为tflite模型。然后,在iOS端使用C++执行SSD模型进行水印检测,并应用非极大值抑制算法。最后,采用OpenCV的inpainter函数和像素反色中和方法去除水印。
摘要由CSDN通过智能技术生成

概要:

本篇文章介绍了TensorFlow Lite与OpenCV配合使用的一个应用场景,并详细介绍了其中用到的SSD模型从训练到端上使用的整个链路流程。在APP中的使用场景为,用户在发布图片时,在端上实现水印的检测和定位,并提供去水印的功能。

具体步骤有:

  • 1,使用TensorFlow Object Detection API进行SSD模型的训练

  • 2,模型的优化和转换,模型在端上的解析使用(本篇主要使用iOS端的C++代码作为示例)

  • 3,将输出locations值通过NMS(非极大值抑制)算法得到最优的框

  • 4,使用OpenCV去除水印

使用的库及工具:

TensorFlow v:1.8r +

TensorFlowLite v:0.0.2 +

OpenCV

labelImg

640?wx_fmt=png


SSD检测并定位水印

SSD简介

SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法,截至目前是主要的检测框架之一,相比Faster RCNN有明显的速度优势,相比YOLO又有明显的mAP优势(不过已经被CVPR 2017的YOLO9000超越)。SSD具有如下主要特点:

1,从YOLO中继承了将detection转化为regression的思路,同时一次即可完成网络训练

2,基于Faster RCNN中的anchor,提出了相似的prior box

3,加入基于特征金字塔(Pyramidal Feature Hierarchy)的检测方式,相当于半个FPN思路

TensorFlow Object Detection API提供了多种目标检测的网络结构预训练的权重,全部是用COCO数据集进行训练,各个模型的精度和计算所需时间如下:

640?wx_fmt=png

我们直接使用TensorFlow提供的模型重训练,可以专注于工程不用重新构建网络,本文选用模型为SSD-300 mobilenet-based

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值