Nature | 光学CNN层替换传统CNN层,超省电
CNN 计算效率的研究一直备受关注,但由于功率和带宽的严格限制,CNN 仍难以应用在嵌入式系统如移动视觉、自动驾驶中。在斯坦福大学发表在 Nature 旗下 Scientific Reports 的这篇论文中,研究者提出在 CNN 网络前端替换一个光学卷积层(opt-conv)的方案,可以在保持网络性能的同时显著降低能耗,并在 CIFAR-10 数据集的分类任务上验证了其结论。光学卷积层也就是用光学器件实现的卷积层,其光学运算具备高带宽、高互联和并行处理特性,并能光速执行运算,功耗接近于零。该技术有望在低功耗机器学习领域得到进一步发掘。
选自Nature
作者:Julie Chang 等
引言
深度神经网络已在各个领域取得了广泛应用,从计算机视觉到自然语言处理以及游戏等。卷积神经网络(CNN)利用各种图像特征的空间不变性,在图像分类、图像分割甚至图像生成等计算机问题中非常受欢迎。随着各类任务的性能大幅提高,这些网络中的参数和节点数也急剧增加,训练和使用这些网络的能耗和内存也相应增加。
虽然学习网络权值的训练阶段很缓慢,但在推理过程中,由于要数百万次的引用内存和矩阵乘法,就算是大型模型也需要大量能耗和内存。为了提高效率,可采取保持性能的同时压缩 CNN 的方法,包括修剪法、量化训练、霍夫曼编码,以及更换架构。硬件方面,有很多机器学习的专门处理单元,如如 IBM 的 TrueNorth 芯片、Movidius 视觉处理单元(VPU)、谷歌的张量处理单元(TPU)。其他以推理为重点的针对嵌入式视觉应用尝试将一部分图像处理结合到传感器上,以消除或减少将完整图像数据传送到处理器的需求。CNN 计算效率的研究一直备受关注,但由于功率和带宽的严格限制,CNN 仍难以应用在嵌入式系统如移动视觉、自动驾驶和机器人、无线智能传感器中。
研究者试图采取一种互补的策略,在模拟电路或数字电路计算前增加一层光学计算,提高性能的同时,仅增加最小电路的计算成本和处理时间。光学计算因其高带宽、高互联和固有的并行处理特性而备受关注,计算速度都为光速。在自由空间或光子芯片上就可以进行一些超低功耗甚至零功耗的操作。作为构建光学 CNN 的框架,可优化和扩展的光学配置将保留这些优势,并将引起计算机视觉、机器人、机器学习和光学社区的兴趣。光学神经网络(ONN)最初是由光学器件执行计算量巨大的全连接层矩阵乘法的研究引起。最近在学术研究和工业领域都重新引起了人们的关注。然而,ONN 的文献中都未涉及卷积层,但卷积层在计算机视觉应用中非常重要。此外,这些方法都是利用相干光作为信号发展起来的,这使它们难以适应计算摄像系统。
研究者从计算成像的角度实现光学 CNN:通过光学和算法协同设计,将图像采集和计算结合起来。计算型摄像机利用定制光学器件中光的物理传播特性,来编码在标准 2D 图像抓取中丢失的场景信息。研究者提出一个位于前馈 CNN 之后的计算成像系统模型,用来协助输入图像的分类。通过将 CNN 的第一个卷积层引入光学器件,可以减少推理过程中的电路处理器的负载。此外,在成像场景中,输入信号已经是光信号了,所以在传感器读取之前,很容易通过额外的无源光学元件进行传播。ASP 视觉系统曾探究过一种混合光电 CNN 的概念,使用 angle sensitive pixel(APS)来近似经典 CNN 的第一个卷积层,但是卷积核集是固定的。同时另一项研究将优化的元素结合到神经网络启发的多层光学系统中,但并没有创建出新的 CNN。相比之下,他们的目标是设计一个带有光学卷积层的系统,用于解决特定分类优化问题,进而通过自定义的光电 CNN,实现低功耗推理。
本文提出一种光学卷积(opt-conv)层的设计,该层具有可优化的相位掩模,该掩模利用由线性和空间不变的成像系统执行的固有卷积。首先研究者在两个模拟模型的图像分类中测试了他们的方法。光学相关器作为卷积层中最简单的应用,由一个对图像进行了模板匹配的卷积层构成,曾被用于光学目标检测和追踪。下面将说明 opt-conv 层如何拟合更大的混合光电 CNN,该卷积层的输出会馈送到数字化的全连接层。在这两种情况下,研究者证明了模拟光电配置的分类准确率可以与同一网络结构的无约束电子的分类准确率相媲美。最后研究者通过创建优化的相位掩模并构建双层混合光电网络原型,在灰度 CIFAR-10 数据集上进行分类,验证了模拟结果。数字全连接层在测试数据集上的分类准确率约为 30%,而研究者采用的模型原型得到了 44% 以上的准确率,在计算成本相同时,可得到近 50% 的单层性能提升。相比之下,增加一个标准卷积层也能提升相似的准确率,但会使计算成本数量级增加。综上,研究者证明了包含初始光学计算层的混合光电卷积神经网络如何在性能上得到提升,同时将系统的延迟或功耗降到最低。
论文:Hybrid optical-electronic convolutional neural networks with optimized diffractive optics for image classification

论文链接:https://www.nature.com/articles/s41598-018-30619-y#author-information
卷积神经网络(CNN)在各类计算机视觉应用中都有惊艳表现,但它们的高性能需要以高计算成本为代价。尽管在算法和硬件方面都有所提高,但由于功率限制,在嵌入式系统中运行 CNN 仍然很困难。在本文中,研究者尝试采取一种互补的策略,在电路计算前增加一层光学计算,在提高图像分类性能同时,仅增加最小电路计算成本和处理时长。研究者设计了一种基于优化衍射光学元件的光学卷积层,并在两个模拟实验中进行了测试:一个学习到的光学相关器和一个双层光电 CNN。研究者在仿真和光学原型中证明了他们的光学系统的分类准确率可以与对应的电学实现相媲美,同时大大节省了计算成本。

图 1:光学卷积层设计。(a)4f 系统图,可以通过在傅里叶平面上放置相位掩模来实现光学卷积层(opt-conv)。(b)数字卷积层的标准组成,包括输入图像、卷积核堆栈和相应的输出量。(c)opt-conv 层中的等效组成,核和输出以二维数组的形式平铺在平面,而不是堆叠在深度维数中。
实验结果

图 2:学习到的光学相关器。(a)光学相关器示意图,其中 conv 块由图 1 所示的 4f 系统组成。(b)多通道无约束数字卷积层、多通道非负数字卷积层、平铺核单通道 opt-conv 层,以及以先前优化的平铺核为目标的相位掩模优化产生的 PSF 的特征优化核。

图 3:混合光电 CNN。(a)有单个 opt-conv 层的模型原理图,对传感器图像进行处理并送入后续的数字 CNN 层。(b)优化的相位掩模模板和生成的相位掩模在不同缩放级别的显微图像。(c)在相应的正(顶部两行)和负(底部两行)子图像做差后,由相位掩模、样本输入图像、各自传感器图像和假阴性子图像产生的 PSF 的仿真和捕获版本的比较。

表 1:各类模型中的混合光电 CNN 在灰度 CIFAR-10 中分类的表现。模拟模型的分类准确率是五次试验的平均值。计算了模拟模型的标准差。在相关时,学习参数和 FLOP 被分为网络的光学部分和电学部分。

参考链接:https://www.nature.com/articles/s41598-018-30619-y#author-information
Nature | 光学CNN层替换传统CNN层,超省电的更多相关文章
- 应用程序框架实战二十二 : DDD分层架构之仓储(层超类型基础篇)
前一篇介绍了仓储的基本概念,并谈了我对仓储的一些认识,本文将实现仓储的基本功能. 仓储代表聚合在内存中的集合,所以仓储的接口需要模拟得像一个集合.仓储中有很多操作都是可以通用的,可以把这部分操作抽取到 ...
- 应用程序框架实战十七:DDD分层架构之值对象(层超类型篇)
上一篇介绍了值对象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意见.这其实是很自然的事情,设计本来就充满了各种可能性,没有绝对正确的做法,只有更好的实践.但是设计与实践的好与坏,对于不 ...
- DDD分层架构之值对象(层超类型篇)
DDD分层架构之值对象(层超类型篇) 上一篇介绍了值对象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意见.这其实是很自然的事情,设计本来就充满了各种可能性,没有绝对正确的做法,只有更好 ...
- 可视化CNN神经网路第一层参数
在上Andrew Ng的课的时候搜集到了课程里面自带的显示NN参数的代码,但是只能显示灰度图,而且NN里的参数没有通道的概念.所以想要获得可视化CNN的参数,并且达到彩色的效果就不行了. 所以就自己写 ...
- 深入解析CNN pooling 池化层原理及其作用
原文地址:https://blog.csdn.net/CVSvsvsvsvs/article/details/90477062 池化层作用机理我们以最简单的最常用的max pooling最大池化层为例 ...
- CNN之池化层tf.nn.max_pool | tf.nn.avg_pool | tf.reduce_mean | padding的规则解释
摘要:池化层的主要目的是降维,通过滤波器映射区域内取最大值.平均值等操作. 均值池化:tf.nn.avg_pool(input,ksize,strides,padding) 最大池化:tf.nn.ma ...
- Pytorch CNN网络MNIST数字识别 [超详细记录] 学习笔记(三)
目录 1. 准备数据集 1.1 MNIST数据集获取: 1.2 程序部分 2. 设计网络结构 2.1 网络设计 2.2 程序部分 3. 迭代训练 4. 测试集预测部分 5. 全部代码 1. 准备数据集 ...
- <<Joint Deep Modeling of Users and Items Using Reviews for Recommendation>> 评论打分预测
综述: 本文将 CNN 与 FM(Factorization Machine) 结合,基于评论文本来进行评分预测. 简介: 目前将神经网络应用推荐系统的研究工作中,有一类思路是把如CNN等神经网络作为 ...
- 由浅入深:CNN中卷积层与转置卷积层的关系
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由forrestlin发表于云+社区专栏 导语:转置卷积层(Transpose Convolution Layer)又称反卷积层或分数卷 ...
随机推荐
- HDU 1591 Encoded Love-letter(简单字符串)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- 原生js实现数据的双向绑定
原生js实现数据的双向绑定 需要了解的属性是原色js的Object.definePrototype(obj,pop,descript); obj:被构造的对象 pop:被构造的对象的属性,创建对象或修 ...
- BZOJ1369/BZOJ2865 【后缀数组+线段树】
Description XX在进行字符串研究的时候,遇到了一个十分棘手的问题. 在这个问题中,给定一个字符串S,与一个整数K,定义S的子串T=S(i, j)是关于第K位的识别子串,满足以下两个条件: ...
- mysql完整版
mysql: dbs 数据库系统 bdms 数据库管理系统 bda 数据库管理员 db 数据库 dba通过dbms来操作db! 关系型数据库和非关系型数据库 登录mysql mysql -h主机地址 ...
- VSCode搭建node + typescript开发环境
我们一起来喜欢TypeScript 现在写js不用TypeScript,伦家可能会觉得你是外星人. 是的,TypeScript很大程度增强了代码的可读性,可跟踪性,可维护性和减少了bug. 那么没有理 ...
- $.grep()的用法
grep()方法用于数组元素过滤筛选 grep(array,callback,invert) array:待过滤数组; callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个 ...
- cin和cout详解
无论输入数字还是字符串,一个回车键是把输入的这个东西送到变量中,可以一次性送到 一个(或者多个)空格键是分隔这些值的 cout <<N; for(int i=0;i<5;i++) { ...
- ZH奶酪:最简单的Django安装方法(Windows 7)
前提是你已经在机器上安装了python~并且你的机器能够上网~ 1.进入:https://bootstrap.pypa.io/get-pip.py,ctrl+s保存网页(其实是.py文件)到某一目录: ...
- 根据IP获得城市信息(百度API的运用)
/** * 根据IP获取城市 * @param string $ip ip地址 * @return array * http://api.map.baidu.c ...
- 协程、gevent实现异步io、进程、线程、协程对比
异步io的说白了就是遇到io操作的时候,就停下来去做别的事情.io分网络io和磁盘io,网络io比如说打开一个网站获取数据,下载一首歌等等,磁盘io就是把数据存到一个文件里面,写到磁盘上. 从网站上获 ...