分类目录归档:Deep Neural Network

深度学习在钢珠识别中的应用

工作中要做小球识别,采用的方法大多是基于图像形态学识别的,识别率已经达到90%以上,但是基于图形图像学识别的方法很难有更多提升,改进空间不大。

考虑到深度学习在物体检查方面的应用已经非常成熟和广泛了,所以会在这里记录一些深度学习在钢柱识别方面的应用的相关知识和经验。

我会持续更新,直到项目完成,形成一篇完整的记录文档。

目前基于深度学习的物体检测主要有以下几个框架:

  • R-CNN(Fast R- CNN、 Faster R-CNN,Ren et al., 2015)
  • YOLO(You Only Look Once,Redmon et al., 2015)
  • SSDs(Single Shot Detector,Liu et al., 2015)

目前了解到的信息是:

R-CNN或Fast、Faster R-CNN运行速度是三者中最慢的,但是检测准确度最高;

YOLO检测速度最快,但是碰到小物体密集出现的情况无法处理,失败率极高;

SSDs速度和准确度介于R-CNN与YOLO之间,准确度也比YOLO高。

这些实现大都是借助pyTorch、Tensorflow等实现的,全程C++实现的不多。C++可以使用的深度神经网络推理/预测引擎的主流库有OpenCV、OpenVINO等,OpenCV在图形图像学是绝对的主流,它也提供了深度神经网络dnn模块,用于实现深度学习相关算法。而且OpenCV不但提供基于CPU的版本,还提供基于GPU的版本(NVIDA GPU的Cuda和Intel GPU的OpenCL);OpenVINO是英特尔的视觉推理和神经网络优化库,其深度学习推理引擎只是其中的一部分功能。OpenVINO 由英特尔设计,旨在加速神经网络推理,尤其是分类、检测等任务。OpenVINO 通过以与硬件无关的方式优化模型来加速。

需要注意的是,OpenCV没有深度神经网络的训练功能,而是直接使用Tensorflow、PyTorch、Coffe、DarkNet、ONNX等的训练集,实现预测、推理功能。而且你需要知道的是,这不是OpenCV的劣势,反而因此能部署于很多资源受限的设备,如树莓派等。