0%

1. PaddleOCR

  • 使用PPOCRLabel标注,完成自定义训练数据集的准备;
  • 训练文本检测模型;
  • 训练文本识别模型;
  • 训练模型转换为inference模型;
  • 基于python引擎的PP-OCR模型推理预测,串联检测+识别。

2. PPOCRLabel

PPOCRLabel是一款适用于OCR领域的半自动化图形标注工具,内置PP-OCR模型对数据自动标注和重新识别。使用Python3和PyQT5编写,支持矩形框标注和四点标注模式,导出格式可直接用于PaddleOCR检测和识别模型的训练。

使用步骤:

  • cd ./PPOCRLabel
  • python .\PPOCRLabel.py —lang ch
  • 打开待标注文件夹,加载标注图像
  • 勾选 文件/自动导出标记结果
  • 标注
  • 导出识别结果(切小图)
阅读全文 »

### 1.

边界框回归的三大几何因素:重叠面积、中心点距离、纵横比

  • IOU Loss:考虑了重叠面积,归一化坐标尺度
  • GIOU Loss:考虑了重叠面积,基于IOU解决边界框不相交时loss等于0的问题
  • DIOU Loss:考虑了重叠面积和中心点距离,基于IOU解决GIOU收敛慢的问题
  • CIOU Loss:考虑了重叠面积、中心点距离、纵横比,基于DIOU提升回归精确度
  • EIOU Loss:考虑了重叠面积,中心点距离、长宽边长真实差,基于CIOU解决了纵横比的模糊定义,并添加Focal Loss解决BBox回归中的样本不平衡问题

image-20220107144907598

5. Reference

1. RoI

RoI(Region of Interest), 从原图中通过某些区域选择方法得到的候选区域。

量化(quantization)是指将输入连续值(或者大量可能的离散值)采样为有限多个离散值的过程。或者理解为,将输入数据集(如实数)约束到离散集(如整数)的过程。

RoI Pooling 和 RoI Align 均是将任意大小的特征图(输入),映射为固定尺寸的特征(输出)。

2. RoI Pooling

image-20220106102835274

RoI Pooling的作用本质上是为了将不同尺寸的RoI特征转换为相同的特征图输出,保证特征图展开(flatten)后具有相同的大小尺寸,能够与下层的全连接层连接,分别执行线性分类(linear classifier)和边框回归(bounding box regressor)

阅读全文 »

z 摘录自小纸屑 https://zhuanlan.zhihu.com/p/148738276

1. 简介

FPN结构,特征金字塔网络,主要用作不同尺度的特征融合,从而提高目标检测算法的精度。

image-20211228172104469

常见的物体检测算法,其实可以分解为三个递进的阶段:

  1. Backbone特征提取阶段

    Backbone生成的特征,一般按stage划分,分别记作C1、C2、C3、C4、C5、C6、C7等,其中的数字与stage的编号相同,代表的是分辨率减半的次数,如C2代表stage2输出的特征图,分辨率为输入图片的1/4,C5代表,stage5输出的特征图,分辨率为输入图片的1/32。

  2. Neck特征融合阶段

    FPN一般将上一步生成的不同分辨率特征作为输入,输出经过融合后的特征。输出的特征一般以P作为编号标记。如FPN的输入是,C2、C3、C4、C5、C6,经过融合后,输出为P2、P3、P4、P5、P6。这个过程可以用数学公式表达:

    image-20211228172506926

  3. Head检测阶段

    FPN输出融合后的特征后,就可以输入到检测头做具体的物体检测。

阅读全文 »

YOLOV3-ASFF

1. 简介

YOLOV3-ASFF为了解决FPN不同特征尺度之间的不一致问题,提出自适应空间特征融合策略。它通过设置可学习权重因子对不同尺度的特征进行自适应(可学习)融合,通过在空间上过滤冲突信息从而抑制梯度反传时的不一致问题,从而改善了特征的比例不变性,也降低了时间开销。

image-20211228151839649

除了自适应空间特征融合,YOLOv3-ASFF在YOLOv3基础上博采众长,集合了MixUp数据增强,学习率cosine衰减策略,异步BN,Guided Anchoring,回归loss改为IoU loss等一系列tricks。 其strong yolov3-608 在COCO2017上达到了 38.8AP + 50fps的效果, 超过了原始YOLOv3-608 : 33.0AP + 53fps。

论文 https://arxiv.org/pdf/1911.09516v2.pdf

code: https://github.com/GOATmessi7/ASFF

阅读全文 »

自适应图片缩放

按照以往的经验,目标检测算法在训练和推理阶段都会resize到统一的图像尺寸,YOLOv5在推理阶段采用了自适应的图片缩放trick。

img

在YOLOv5 官方github下有这样一段解释,采用32整数倍的矩形框推理要比resize到等长宽的正方形进行推理的时间减少很多(416 ,416)->(256 , 416)。

训练阶段

假设原图尺寸为(523, 699)

(1) 计算长边缩放比例 r = 416 / 699 = 0.5951

(2)将原图等比例缩放 (523,699) —>> (311, 416)

image-20211221174250645

(3) 填充为(416,416),H侧上下需要填充的大小 pad = (416 - 311) / 2 = 52.5

new

阅读全文 »

C++11中的几种线程锁

线程之间的锁有: 互斥锁,条件锁,自旋锁,读写锁,递归锁。一般情况下,锁的功能是与程序性能成反比。

  1. 互斥锁(Mutex)

    互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量,为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。在某一时刻,只有一个线程可以获取互斥锁,在释放互斥锁之前其他线程都不能获取该互斥锁。如果其他线程想要获取这个互斥锁,那么这个线程只能以阻塞方式进行等待。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <list>
    #include <mutex>

    std::list<int> some_list;
    std::mutex some_mutex;

    void add_to_list(int new_value)
    {
    std::lock_guard<std::mutex> guard(some_mutex);
    some_list.push_back(new_value);
    }
阅读全文 »

阅读原文

直方图均衡化,可以对在不同的光线条件下拍摄不同的图片进行均衡化处理,使得这些图片具有大致相同的光照条件。因此,我们可以用在训练模型之前,对图像进行对预处理。

直方图均衡

1. 直方图与对比度

首先,我们看下面的图像:

左列为原图,我们在观看的时候,感受很差。为什么很差呢?因为前景(关键区域)与背景太相似,无法很好的得到前景的信息。这就是表明,这些图像的对比度小,视觉体验很差

阅读全文 »