DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_图像识别

向AI转型的程序员都关注了这个号????????????

人工智能大数据与深度学习  公众号:datayx

一.DBnet

提出了 Differentiable Binarization (DB),它可以在分割网络中执行二值化过程,可以自适应地设置二值化阈值,不仅简化了后处理,而且提高了文本检测的性能。

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_算法_02

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_图像识别_03

在训练阶段,对概率图、阈值图和近似二值图进行监督,其中概率图和近似二值图共用一个监督。在推理过程中,通过一个box公式化模块,可以很容易地从近似二值图或概率图中得到文本包围框。

可微分二值化

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_图像识别_04

一般的分割模型都是对最终的输出结果取一个固定阈值进行二值化,本文创新点在于将二值化的阈值进行学习,如上图的(a)所示

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_人工智能_05

加入可微分模块,就可以把阈值进行训练,能够更好区分前后景与粘连文本.

P:probability map

T:threshold map

B^:approximate binary map

Loss函数:

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_图像识别_06

loss主要三部分:Ls是收缩之后文本实例的loss, Lb是二值化之后的收缩文本实例loss, Lt是二值化阈值map的loss, Ls和Lb都使用带OHEM的bceloss, Lt使用L1loss。

注意的是论文给的速度只是包含前向传播和后处理,所以实际上包含预处理,速度没这么快的.

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_决策树_07

二.知识蒸馏

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_图像识别_08

其中T是温度,直接使用softmax层的输出值作为soft target, 当softmax输出的概率分布熵相对较小时,负标签的值都很接近0,对损失函数的贡献非常小,小到可以忽略不计。因此"温度"这个变量就派上了用场。T很大时就能软化softmax的输出概率, 分布越趋于平滑,其分布的熵越大,负标签携带的信息会被相对地放大,模型训练将更加关注负标签。也就是从有部分信息量的负标签中学习 --> 温度要高一些,防止受负标签中噪声的影响 -->温度要低一些。

思路:采用resnet50(teacher)先训练,在利用训练好的resnet50(teacher)对resnet18(student)小模型进行联合训练,实验证明f1score比单独训练resnet18涨一个点。

项目 获取方式

关注微信公众号 datayx  然后回复 DB检测  即可获取。

AI项目体验地址 https://loveai.tech


三.torch模型->onnx->tensorrt

思路:采用torch.onnx将.pth转成.onnx格式,在用tensorrt推理。代码见github中的model_to_onnx.py.

四.一些效果展示

文字检测

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_人工智能_09

条形码检测

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_算法_10

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_深度学习_11

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_决策树_12




不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_决策树_13


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)_人工智能_14

长按图片,识别二维码