OpenCV中的深度神经网络(DNN)模块,现在已经支持图像风格迁移、图像分类、对象检测、语义分割、实例分割、图像变换等。
只支持推理,不支持训练
支持主流的深度学习框架生成模型
推荐使用pytorch/onnx/tensorflow
ResNet18的图像分类
模型来自torchvision框架预训练模型
通过脚本转换为onnx格式,转换脚本:
YOLOv5对象检测
主流的对象检测模型
支持导出ONNX格式
YOLOv5推理后处理-非最大抑制
非最大抑制(Non-Maximum Suppression,NMS)来处理重叠的检测框,以提高检测结果的准确性。NMS通过在重叠的检测框中选择具有最高置信度的框,然后消除其他与该框重叠度高于某个阈值的框,从而避免同一个目标被多次检测。
UNet语义分割
语义分割与实例分割 - 道路裂纹检测模型
UNet在医学图像分割等领域取得广泛成功应用。
该模型的特点是具有对称的编码器(下采样路径)和解码器(上采样路径),以及跳跃连接(skip connections)。编码器部分负责从输入图像中提取特征,并将其压缩成较小的表示,而解码器部分负责将这些特征映射回原始输入图像的大小,并生成像素级的预测结果。
人脸+landmark检测
使用的模型YUNet,超轻量极速人脸检测
模型的输入支持动态图像大小
模型输出是Nx15,最后一个是得分,1~4是矩形框xywh,中间十个数是landmark的五点坐标信息。
SSD对象检测
SSD(Single Shot Multibox Detector)能够在单个前向传递中直接预测目标的位置和类别。SSD结合了高效的区域建议(region proposal)和全卷积网络(fully convolutional network)的优势。