社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

在图像处理中应用深度学习技术

小白学视觉 • 3 年前 • 279 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

 

工业应用中FPGA 上的神经元网络(CNN)


深度学习应用凭借其在识别应用中超高的预测准确率,在图像处理领域获得了极大关注,这势必将提升现有图像处理系统的性能并开创新的应用领域。

利用卷积神经网络(Convolutional Neural Network, CNN) 等深层神经网络的解决方案,可以逐渐取代基于算法说明的传统图像处理工作。尽管图像预处理、后期处理和信号处理仍采用现有方法进行,但在图像分类应用中(缺陷、对象以及特征分类),深度学习变得愈加重要。

利用深度学习处理某些任务更简单,效果更好,甚至某些任务只能用深度学习方法来解决。深度学习正在逐渐威胁传统图像处理方法的地位——特别是处理任务中包含有复杂变量时(如反射面、光照不佳的环境、光照变化或移动的对象)。

深度学习具有平移不变性的优点,这部分使用传统处理方式需要大量的投入。但如果需要对图像中的对象或错误进行定位、标定、代码读取或后期处理,则传统算法更具有优势。

图1:传统图像处理及深度学习的适用范围对比。


传统图像处理深度学习
典型应用典型应用
l  尺寸测量l  代码读取l  有/无检测l  机器人引导l  印刷检测l  汽车l  电子l  表面检测(裂纹、划痕)l  食品、植物、木材检测l  塑料、注塑成型l  织物检测l  医疗成像l  农业 
典型特征典型特征
l  对目标有严格要求l  方向固定l  客户提供容差范围内的正式规格l  可靠性100%l  目标可变l  方向可变l  客户提供模糊的规格,提供Good和Bad零件的样本l  可靠性99%

深度学习包括神经网络的训练和学习、网络的实现和推断运算、网络的CNN 算法在图像上的执行与分类结果的输出。用于训练的数据越多,分类的预测精度就会越高。由于数据量庞大,训练神经网络时通常选用GPU。

图2:训练数据越多,预测精度越高。

速度与精度


基于各种不同技术的处理器,是否都能满足工业图像处理中的特殊需求呢?CNN应用必须执行快速(推断)同时满足极低的时延。在满足处理速度的同时,还要满足高带宽、低发热、实时性以及供货周期长这些需求,仅仅使用传统CPU 或GPU 是难以实现的,它们通常可以为非工业领域的图像处理任务提供更合适的解决方案,在这些领域的识别任务尽管同样复杂,但相对较低的数据吞吐性能即可满足需求。各个平台之间区别很大,仅从技术指标方面就能看出,它们无法应用于高要求的任务。尽管GPU 的推断耗时比CPU 或特殊芯片短得多(如TPU -TensorFlow Processing Units、TensorFlow 处理单元以及Intel Movidius处理器),但是其数据吞吐量这项指标只能达到大约每秒50MB这样一个较低的水平。

在通常的图像处理应用中,只需要对少数几个特性进行分类,因此选择小型或中型网络通常就足以应对,AlexNet、SqueezeNet 或MobileNet 都是这类网络的典型代表。这几种网络类型在机器视觉领域,预测精度、网络大小和计算速度以及带宽这几方面有着良好的平衡。这里可以很明显地看到,通过选择合适的网络,可以在牺牲小部分检测精度的同时,获得数据吞吐量方面的极大提高,同时也为优化资源和提高分类质量提供了可能性。


图3:《对用于实际应用的深层神经网络模式的分析》,Alfredo Canziani、Adam Paszke、Eugenio Culurciello (2017)
推断应用中的FPGA 和SoC


在很多图像处理任务的需求中,特别是机器视觉领域,FPGA可以作为独立处理单元或与ARM 处理器一起构成SoC。FPGA 具有高度并行处理能力、稳定的图像采集能力以及相对于CPU 和GPU更高的运算性能、图像帧率和带宽。基于FPGA的CNN应用可完成高带宽的分类工作,这尤其适用于高速在线检测。

FPGA支持直接在图像采集卡或在嵌入式视觉设备上处理图像数据——从采集到输出以及外围设备控制——且无任何CPU占用,这个特点让FPGA特别适用于高强度运算的应用,如CNN。因此未配备GPU 的小型PC 也能使用,从而可降低整体系统成本。在工业环境温度下,FPGA的能效比GPU高十倍,是嵌入式设备的理想之选,这显著扩大了深度学习在工业4.0 以及无人机和自动驾驶领域的应用。

GPU拥有更高的计算精度和更高的预测精度,但这些是以更短的供货周期、更高的功耗以及更低的数据吞吐量为代价的。在一个示范性的对比中,基于FPGA的解决方案的数据处理性能是使用GPU的类似解决方案的7.3倍左右。

图4:FPGA 的性能大约是GPU 性能的7.3倍


优化FPGA 资源


在深度学习领域,存在各种不用降低分类质量就能节省资源的方法。其中之一是通过图像缩放来降低数据吞吐量,或者改变数据位深:我们的项目经验表明,数据的位深对后来的预测精度影响甚微。将数据位深32位浮点数降为8位定点数或整数,可以让FPGA将节省下来的资源用于更大的网络架构,或实现更高的数据吞吐量,从而实现处理速度的提升,这对例如焊缝检测或机器人技术这类应用非常有意义。通过类似的预处理降低数据量,让更适合FPGA的小型网络的使用成为可能,这样的网络通常足以处理缺陷特征较少的简单分类任务。

32 位浮点GPU 虽然拥有更高的计算精度,但这一点对深度学习的推断而言无关紧要,在FPGA中使用8位定点运算的网络,能为大多数深度学习应用提供足够精确的预测精度,误差几乎可以忽略不计。如果需要特别高的计算精度,可以采取一种资源折中策略,在更大的FPGA 上使用16位定点运算。

现在已经有了能完美满足工业生产的高速处理需求的解决方案,通常使用高性能图像采集卡或者嵌入式视觉设备,例如使用大型FPGA和高分辨率传感器的智能相机。利用多种多样的FPGA 资源,可以处理更复杂的架构以及应用。有了更高的数据带宽,能够在FPGA上对整幅图像进行处理,或进行额外的图像预处理以及后期处理,例如对GigE Vision相机的最大数据输出带宽的深度学习运算也完全能够满足。

结语


与传统图像处理相比,深度学习应用需要在训练方面投入较多时间,但是相较其带来的可靠性和处理速度,这些投入是值得的。图像采集卡和(嵌入式)视觉设备上所使用的FPGA技术,令神经网络应用于工业级应用成为可能,这需要强大的实时处理能力、低延迟(实时在线检测)、高数据吞吐量、高带宽和低功耗低发热(嵌入式视觉应用),以及高分辨率。FPGA 及图像采集卡较长的供货周期保障了投资安全性,同时由于系统可快速的整合且整体系统成本较低,用户可以节省长期支出。

文/Silicon Software,Martin Cassel

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复: OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133604
 
279 次点击