CMOS图像传感器同时感知和处理光学图像

概述

近年来,机器视觉技术有了巨大的飞跃,现在已经成为各种智能系统的一个组成部分,包括自主车辆和机器人。通常,视觉信息由基于帧的摄像机捕获,转换成数字格式,然后使用机器学习算法(如人工神经网络(ANN)1)进行处理。然而,大量(大多是冗余)数据通过整个信号链,导致低帧速率和高功耗。为了提高人工神经网络中后续信号处理的效率,人们发展了各种可视化数据预处理技术。在这里,我们证明图像传感器本身可以构成一个神经网络,它可以同时感知和处理光学图像,而无需延迟。我们的装置是基于一个可重构的二维(2D)半导体光电二极管阵列,网络的突触重量存储在一个连续可调的光响应矩阵中。我们演示了有监督和无监督学习,并训练传感器对光学投影到芯片上的图像进行分类和编码,其吞吐量为每秒2000万箱。

摄像头 CMOS 构成一个神经网络,它可以同时感知和处理光学图像

作为各家厂商比拼的重点,今天手机上的摄像头已经做到了一亿像素,而摄像头感光器件也是典型的半导体芯片,本质是二极管,这类精密的结构用来做神经网络运算效果如何?最新一期《自然》杂志上的研究告诉我们:速度是传统处理方法的上千倍。

对于计算机视觉,镜头是它的眼睛,获取丰富的视觉信息后就可以传递给处理单元,并依靠它实现各种视觉能力。这是 CV
最常规的范式,也最符合我们的直觉,但是你会发现有两大问题。

首先,从镜头传递信息给处理单元,这一步并不简单,尤其是在使用云计算的情况下,这都怪视觉信息太丰富了。其次,处理单元的工作也不简单,计算量庞大的视觉模型常常让人望而却步。

而在这篇 Nature 最新研究中,研究者表明图像传感器本身也可以「印刻」神经网络,它能同时担当感光与处理图像这两大功能,且还没有延迟。更重要的是,这种机器

视觉芯片比传统卷积神经网络要快上千倍。只要一块芯片,相机秒变智能终端。

与人脑一样,新芯片能以纳秒级的速度感知、分类简单的图像。

除了快以外,因为芯片采用的基本元件是光电二极管,只依靠光就能「发电」并完成计算,运行速度受限于电路中电子的速度。

目前,这项由维也纳科技大学提交的研究已发表在 3 月 4 号的《Nature》杂志上。

为芯片印刻神经网络

为了将神经网络「印刻」到图像传感器上,研究者在芯片上构造了一种光电二极管网络,这些光电二极管非常微小,且对光非常敏感。我们可以通过改变电压来增加或减少每个二极管对光的响应,从而调整每个二极管的灵敏度。

实际上,这些光电传感器网络就等同于神经网络,它们能够执行简单的计算任务。改变光电二极管的光响应强度会改变网络中的连接强度,也就类似于神经网络中的权重。因此,该芯片巧妙地将光学传感与神经形态计算相结合。

a 为神经网络的二极管阵列,具有相同颜色的子像素会并联在一起;b 为光电二极管阵列中单个像素的电路图;c 与 d 就是我们熟悉的神经网络模型,它们可以「内嵌」到该芯片中。

传感器是由一组像素组成,且每个像素代表一个神经元。同时,每个像素再依次由若干个子像素组成,每个子像素代表一个突触。每个光电二极管都基于一层二硒化钨 ( tungsten diselenide ),是一种对光有响应且可调的二维半导体。这种可调节的光响应度就类似于神经网络中的权重。

研究者表示,将光电二极管排列成 9 个像素的方阵,每个像素带有
3 个二极管。当某张图像的光线映射到芯片后,会产生、组合各种二极管电流,从而完成硬件阵列提供的模拟计算形式。也就是说,只要感受到光,片上「神经网络」就开始计算了。

训练神经网络

整个阵列可以进行训练以执行视觉任务,因为阵列产生的电流与预测电流中的不一致,研究者可以在计算机上分析并调整权重,从而更新芯片上的神经网络。虽然训练过程中是需要时间与计算资源的,但一旦训练完成,芯片将能急速地处理视觉任务。

科学家基于这些光电二极管间的连接方式创建了一个神经网络,并且可以训练这些神经网络将图像分类为字母「n」「v」或「z」。

「我们的图像传感器不会在工作时消耗任何电能。」Mennel 说,「被感知的光子会提供电流。」

在实验中,研究者使用激光来投影「v」和「n」到神经网络图像传感器中。传统的计算机视觉技术通常能在每秒处理 100 帧,可能一些更快的系统能够每秒处理 1000 帧。Mennel 表示,相比之下,「我们的系统差不多能每秒处理 2000 万帧。

a 为训练分类器与自编码器的实验配置,b 为用于测量 time-resolved 的实验设置,c 为光学实验的近景照片。


Mennel 提到,系统运行的速度只受限于芯片中电子的速度。原则上,这一策略在皮秒内就可以完成,比现有的视觉方法快 3 到 4 个量级。

除了字母识别与分类模型,研究者在实验中还测试了自编码器模型。该模型在存在信号噪声的情况下,传感器计算阵列也可以学习图像的关键特征,并解码以构建接近原始图像的生成图。只要训练完成,这种无监督生成模型的推断速度同样非常快。

所以,芯片到底有什么用?

这样的传感器有什么用途呢?「在这一阶段,这一技术主要用于特定的科学研究,如流体动力学、燃烧进程、或机械故障处理。」Mennel
说,「对于更复杂的任务,如自动驾驶中的机器视觉,我们可能需要更高的复杂度。」

在投入实际应用前,这种感光+计算的芯片还有很长的路要走。对于真实视觉信息而言,它还包含三维信息、动态图像以及视频的时间轴等。而当前的图像感知技术都只能将三维压缩到二维,芯片也就丢失了很多信息。

与此同时,作者表示,芯片昏暗条件下需要重新设计,以增加可检测的光强度范围。这种「重新设计」需要高压并消耗大量能源。最后就是半导体制作能力了,这种超薄半导体难以大面积生产,且难以加工。

不过尽管面临着重重阻碍,但将神经网络与感光能力结合到一起,在感光的同时产生电流,在产生电流的同时完成视觉任务,这样的芯片还是非常有意思。

CMOS图像传感器同时感知和处理光学图像的更多相关文章

  1. 全球CMOS图像传感器厂商

    近期,台湾地区的Yuanta Research发布报告,介绍了其对CMOS图像传感器(CIS)市场的看法,以及到2022年的前景预期. 从该研究报告可以看出,2018年全球CMOS图像传感器的市场规模 ...

  2. CMOS图像传感器理解

    CMOS图像传感器理解 水流方向从左边流向右边,上面有一个开关,拧下去的时候水流停止,拧上去的时候水流打开.左边是水流的源头我们给它起个名字,叫做源端(就是源头的意思嘛),右边是水流出去的地方,也就是 ...

  3. 【图像处理】ISP 图像传感器camera原理

    1.Color Filter Array — CFA 随着数码相机.手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用. 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR ...

  4. 中国摄像头CMOS需求潜力旺盛

    中国摄像头CMOS需求潜力旺盛 CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体)的缩写.它是指制造大规模集成电路芯片用的一种技术或用这种 ...

  5. 视音频技术作业一:比较CCD与CMOS摄像的区别

    作业详解: CCD与CMOS简介: CCD: CCD是Charge Coupled Device(电荷耦合器件)的缩写,它是一种半导体成像器件,因而具有灵敏度高.抗强光.畸变小.体积小.寿命长.抗震动 ...

  6. CCD与CMOS的区别

    我们在购买相机或是摄像机时,都会看到使用CMOS镜头或是CCD镜头,那么CCD与CMOS是什么意思呢,CCD与CMOS的区别是什么?首先,让我们了解CCD与CMOS的意思. CCDCCD使用一种高感光 ...

  7. CCD与CMOS的区别?

    我们在购买相机或是摄像机时,都会看到使用CMOS镜头或是CCD镜头,那么CCD与CMOS是什么意思呢,CCD与CMOS的区别是什么?首先,让我们了解CCD与CMOS的意思. CCDCCD使用一种高感光 ...

  8. CCD 与 CMOS

    窗帘快门与全局快门: 窗帘快门,每次只允许一条缝的光线摄入,因此会呈现自上而下的扫描式拍摄,也就意味着画面上的不同高度,其实拍摄的时间是不同的,也就进一步造成了在高速移动的火车上,如果拍摄窗外的景物, ...

  9. CMOS

    CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体)的缩写.它是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上 ...

随机推荐

  1. hdu4396 多状态spfa

    题意:       给你一个图,让你送起点走到终点,至少经过k条边,问你最短路径是多少.... 思路:       把每个点拆成50点,记为dis[i][j] (i 1---50 ,j 1---n); ...

  2. hdu4454 三分 求点到圆,然后在到矩形的最短路

    题意:       求点到圆,然后在到矩形的最短路. 思路:       把圆切成两半,然后对于每一半这个答案都是凸性的,最后输出两半中小的那个就行了,其中有一点,就是求点到矩形的距离,点到矩形的距离 ...

  3. Python第三章-字符串

    第三章  字符串 3.1 基本字符串操作 Python的字符串和元组差不多,是不可以进行改变的,如果想改变值,可以尝试list序列化之后在进行修改. {    website = 'http://ww ...

  4. Python中shodan模块的使用

    关于shodan的安装和使用,传送门--> 渗透测试之Shodan的安装和使用 常用 Shodan 库函数 shodan.Shodan(key) :初始化连接API Shodan.count(q ...

  5. Linux系统中stat查看文件的相关时间

    目录 对于文件来说 对于目录来说 利用touch命令修改时间 在Linux下,对于一个文件有很多个时间戳属性,文件的创建时间,文件的修改时间,文件的读取时间.我们用stat来查看文件的相关时间属性. ...

  6. (翻译)Attacking Interoperability(攻击互操作性)in Black Hat 2009 研究报告

    前言 攻击互操作性(Attacking Interoperability)是 Mark & Ryan & David 发表于 2009 年的美国黑帽大会(Black Hat)上的一份研 ...

  7. Windows核心编程 第十九章 DLL基础

    第1 9章 D L L基础 这章是介绍基本dll,我就记录一些简单应用,dll的坑点以及扩展后面两章会说,到时候在总结. 自从M i c r o s o f t公司推出第一个版本的Wi n d o w ...

  8. git取消更改 恢复版本命令

      #删除远程的xxx分支 git push origin :xxx #取消对文件的修改.还原到最近的版本,废弃本地做的修改. git checkout -- <file>   #取消已经 ...

  9. Python正则表达式的七个使用范例

    本文由 伯乐在线 - 左手的灵魂 翻译.未经许可,禁止转载!英文出处:thegeekstuff.欢迎加入翻译组.http://blog.jobbole.com/74844/ 作为一个概念而言,正则表达 ...

  10. Servlet-授课

    1 Servlet 1.1 Servlet概述 Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一.我们可以像学习Java基础一样,通过API来学习Ser ...