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

Stella981
• 阅读 364

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

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

一.DBnet

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

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

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

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

可微分二值化

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

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

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

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

P:probability map

T:threshold map

B^:approximate binary map

Loss函数:

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

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

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

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

二.知识蒸馏

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

其中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推理(文字检测+条形码检测)

条形码检测

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

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

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

原文地址 https://blog.csdn.net/fanzonghao/article/details/107199538


阅读过本文的人还看了以下文章:

**TensorFlow 2.0深度学习案例实战
**

**基于40万表格数据集TableBank,用MaskRCNN做表格检测
**

**《基于深度学习的自然语言处理》中/英PDF
**

**Deep Learning 中文版初版-周志华团队
**

**【全套视频课】最全的目标检测算法系列讲解,通俗易懂!
**

**《美团机器学习实践》_美团算法团队.pdf
**

**《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
**

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

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

搜索公众号添加: datayx

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


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

搜索公众号添加: datanlp

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

长按图片,识别二维码

本文分享自微信公众号 - 机器学习AI算法工程(datayx)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
小森森 小森森
2个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本 欢迎添加左边的微信一起探讨!项目地址:](https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n) \2. Bug修复更新日历 2. 情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意), \ \ 和 注意
Peter20 Peter20
1年前
mysql中like用法
like 的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\. name以"李"开头where name like '李%' 2\. name中包含"云",“云”可以在任何位置where name like '%云%' 3\. 第二个和第三个字符是0的值where salary like '\00%' 4\
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
> MemFire Cloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“**Java进阶架构师**”,点击右上角,将我们设为**★**“**星标**”!这样才不会错过每日进阶架构文章呀。   ![](http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)   **2
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
# Javascript ## 判断对象是否为空 ```js Object.keys(myObject).length === 0 ``` ## 经常使用的三元运算 > 我们经常遇到处理表格列状态字段如 `status` 的时候可以用到 ``` vue
helloworld_34035044 helloworld_34035044
4个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为