github 地址:GitHub - MhLiao/DB: A PyTorch implementation of "Real-time Scene Text Detection with Differentiable Binarization".
其他人的解析:DBNet阅读笔记 - 知乎
DB/DBNet:Real-time Scene Text Detection with Differentiable Binarization 一些问题 - 无左无右 - 博客园DBNet详解_lexi_qi的博客-CSDN博客_dbnet详解? (代码+解释)
论文地址:知乎 - 安全中心
由于作者用的别人框架,通过yaml文件控制加载的类和参数,这样动态生成的方式有利于实验阶段调整参数,却不利于新手快速上手。
本人在训练自己的数据集时,预测阶段结果通常会如下:
?box往上偏移并且包裹不全。在可视化训练阶段的标签时,第一张图是可视化border在原图,第二章是同时可视化gt和border在原图,默认的shrik ratio是相同的0.4,这里为了区分明显,
class: MakeSegDetectionData
shrink_ratio: 0.2
class: MakeBorderMap shrink_ratio: 0.6
可以看到:越长的文本的标签gt的高度越小,预测阶段也是短文本效果好一点,包裹的紧密。
贴下可视化的代码, 用在 image_dataset.py的__getitem__函数返回前:
def visualize_fun(self, data):
'''
想要在原图同时画出 边界图、gt图和原图时,需要设置 MakeSegDetectionData
和 MakeBorderMap 的shrink ratio不一致,这样容易观察
'''
# cv2.imwrite('blend.jpg',(cv2.cvtColor(((data['image'].cpu().numpy().transpose(1,2,0)*255 + np.array([122.67891434, 116.66876762, 104.00698793]))).astype(np.uint8), cv2.COLOR_RGB2BGR)))
# 在原图上绘制
ori = (cv2.cvtColor(((
data['image'].cpu().numpy().transpose(1, 2, 0) * 255 + np.array(
[122.67891434, 116.66876762, 104.00698793]))).astype(np.uint8),
cv2.COLOR_RGB2BGR))
ori[data['thresh_mask'].astype(np.bool)* (data['thresh_map']> 0.3)] = np.stack(
[data['thresh_map'] * 0, data['thresh_map'] * 0,
data['thresh_map'] * 255], axis=-1)[data['thresh_mask'].astype(np.bool)* (data['thresh_map']> 0.3)]
ori += np.repeat(np.expand_dims(data['gt'][0] * 125, axis=-1), 3, axis=-1).astype(np.uint8)
cv2.imwrite('blend.jpg', ori)
|