OpenCV 4.0 发布 —— 新增QR解码 性能再度优化

OpenCV是英特尔开源的跨平台计算机视觉库。也就是说,它是一套包含从图像预处理到预训练模型调用等大量视觉 API 的库,并可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。

OpenCV最显著的特点是它提供了整套流程的工具,因此我们根本不需要了解各个模型的原理就能一个个 API 构建视觉任务。

OpenCV使用 BSD 许可证,因此对研究和商业用途均免费。它具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统。OpenCV旨在提高计算效率,专注于实时应用。它使用优化的 C/C++写成,能够利用多核处理。

此外,在 OpenCL 的加持下,OpenCV可以利用底层异构计算平台的硬件加速。它的 GitHub 页面中有一个「open_model_zoo」资源库,包含了大量的计算机视觉预训练模型,并提供下载方法,有助于加速开发和产品部署过程。OpenCV应用广泛,目前在全世界约有 4.7 万用户,下载量约为 1400 万。

很多IoT和AI的玩家都会将其用于图像识别和处理。

可以说OpenCV是 CV 领域开发者与研究者的必备工具包,Mask-RCNN 等很多开源项目都依赖于这个工具包。现在距离 3.0 版本的发布已经过去三年多,近日OpenCV4.0 final 版发布,它进一步完善了核心接口,并添加了二维码检测器、ONNX 转换格式等新特点。

重要更新:

  • OpenCV4.0 现在是一个 C++11 库,要求 C++11 兼容的编译器。所需的 CMake 至少是 3.5.1 版本。
  • 移除OpenCV1.x 中的大量 C API。
  • core 模块中的 Persistence(用于存储和加载XML、YAML 或 JSON 格式的结构化数据)可以完全使用 C++ 来重新实现,因此这里的 C API 也被移除。
  • 添加了新模块 G-API,它可作为基于图的高效图像处理流程。
  • dnn 模块包括实验用 Vulkan 后端,且支持 ONNX 格式的网络。
  • 实现了流行的 Kinect Fusion 算法,且为 CPU 和 GPU (OpenCL) 进行优化。
  • objdetect 模块中添加了二维码检测器和解码器。
  • 将高效、高质量的 DIS dense optical flow 算法从 opencv_contrib 移到 video 模块。

此外,OpenCV4.0 支持 Mask-RCNN 模型,性能也有所提升,图像处理操作可实现 15%-30% 的速度提升。

OpenCV与深度学习

在OpenCV4.0 的更新中,它强化了 DNN 模块并添加支持 ONNX 交换格式的神经网络,这一切都表明OpenCV非常注重其与深度学习之间的关系。其实自从OpenCV3.1 以来,它就包含了能实现深度网络前向传播的 DNN 模块,这些深度网络一般都由 Caffe 等深度学习框架预训练而成。在OpenCV3.3 中,DNN 模块从 opencv_contrib 移到了核心代码库,并取得了显著的加速。

更重要的是除了 libprotobuf 以外,OpenCV中的 DNN 模块不包含额外的依赖项,而且现在 libprotobuf 已经包含到了OpenCV中。

以下是目前OpenCV支持的一些框架:

  • Caffe
  • TensorFlow
  • Torch
  • Darknet
  • ONNX 交换格式的模型

目前OpenCV所支持的深度学习层级函数:

  • AbsVal
  • AveragePooling
  • BatchNormalization
  • Concatenation
  • Convolution (including dilated convolution)
  • Crop
  • Deconvolution, a.k.a. transposed convolution or full convolution
  • DetectionOutput (SSD-specific layer)
  • Dropout
  • Eltwise (+, *, max)
  • Flatten
  • FullyConnected
  • LRN
  • LSTM
  • MaxPooling
  • MaxUnpooling
  • MVN
  • NormalizeBBox (SSD-specific layer)
  • Padding
  • Permute
  • Power
  • PReLU (including ChannelPReLU with channel-specific slopes)
  • PriorBox (SSD-specific layer)
  • ReLU
  • RNN
  • Scale
  • Shift
  • Sigmoid
  • Slice
  • Softmax
  • Split
  • TanH

对于对性能要求很高的神经网络层,这个 DNN 模块包括 SSE、AVX、AVX2 和 NEON 等底层加速库,且还有持续优化中的 Halide 后端。

你可以在这里找到最新的基准结果:https://github.com/opencv/opencv/wiki/DNN-Efficiency

单张图像前向传播的中位最佳时间(以毫秒为单位,基于 CPU 在 float32 上计算)。

以下网络已经经过测试并证实可行:

  • AlexNet
  • GoogLeNetv1 (也称为 Inception-5h)
  • ResNet-34/50/…
  • SqueezeNet v1.1
  • VGG-based FCN(语义分割网络)
  • ENet(轻量级语义分割网络)
  • VGG-basedSSD(目标检测网络)
  • MobileNet-basedSSD(轻量级目标检测网络)

OpenCV4.0 发布地址:https://opencv.org/opencv-4-0-0.html

双因素认证就够了?让我们用树莓派做个三因素的

双因素认证就够了?让我们用树莓派做个三因素的。

虽然双因素认证一直在我们在线访问电子邮件和网上银行时提供更多的安全性,但在物理世界,现在已经有三因素认证可以保护我们的贵重物品。

扫描指纹进行身份验证

不明白什么意思? 以下是来自Switched On Network的视频,演示了如何使用Raspberry Pi构建三因素门锁,包括RFID密钥环,6位密码和发送到手机的一次性密码。

(视频地址:https://v.qq.com/x/page/t07975pca69.html

Alex Bate的三因素门锁制作关键

要构建Switched On Network的三因素门锁,你需要采购Raspberry Pi 3,USB RFID读取器和遥控器,触摸屏,电子门锁和继电器开关。如果这些都有了,你最好再找个电源和胶枪。

胶水枪

为屏幕安装适当的驱动程序(如果点不亮屏幕)后,你就可以安装Switched On Network在GitHub repo公布的Python脚本。

地址:https://github.com/paulfp/Three-Factor-Security-Door

在竖屏模式下连接到Pi的三因素认证

然后是物理构造:你需要把门锁、引线和其他东西连接到Pi上,所有这些都要连接到门和门框上。

三因素认证门锁组件

最终成品是一个你提供密码、RFID标签(或卡片)和手机短信才能打开的高级门锁。 虽然我们不建议你用这种技术从外侧保护你的房屋,但它却是办公室或密室的完美配置。

《德克斯特实验室》经典台词

正如美国经典动画角色,德克斯特说的那样:“每个人都要有个私密之地。”

手机变PC —— Linux on DeX让开发者更自在

2017年底,三星 Samsung 宣布了一个在手机上跑 Linux 的项目 —— Linux on DeX。

2018年11月,他们把这个项目升级了。

和2017版相比,2018版不再需要昂贵的专用底座,只需要一条视频线。而在前些日子的 SDC 开发者大会上,三星宣布 DeX 已完整支持 Linux。

虽然还在 Beta 测试,但相关 APK 安装包已开放下载。官网对它的描述是,Linux on DeX 可让你随时随地写代码。

简单来说,通过该应用三星手机可以启动 Linux 容器。

然后再连接显示器,就会获得 Ubuntu 桌面环境,从而在手机上达到 PC 开发的体验。不过目前只支持 Galaxy Note 9 和 Galaxy Tab S4。

通过一根线与显示器进行连接就能把手机秒变 PC —— 是不是似曾相识的感觉?

不过 Linux on DeX 目前仅支持一个定制的 Ubuntu 镜像(Canonical 提供的 Ubuntu 16.04 LTS 版本)。此外,对设备的硬件要求也比较高,至少需要 8GB 存储空间和 4GB RAM,如需要安装其他软件包或应用程序,还需要额外的存储空间。

显然,Linux on DeX 是一个面向开发者和专业用户的项目,那么我们可以用它做什么呢?

1、安装和使用你需要的软件

2、使用 CLI 管理服务器

3、用你喜欢的 IDE 创建或维护开发项目

4、常规的学习或办公

详细的使用教程和说明,请访问项目官网以了解更多。

相关视频:http://v.qq.com/x/page/x079509hd7a.html

官网地址:

https://www.linuxondex.com/

不要以太网 内存减一半 —— “轻薄”的树莓派3A+来了

近日,树莓派基金会发布树莓派3代A+版(Raspberry Pi 3 MODEL A+)。

继承了3代的双频2.4GHz和5GHz无线网络、蓝牙4.2/BLE,以及经过改进的散热管理。拥有64位四核1.4 GHz处理器,并且价格低至25美元(树莓派3B+是35美元)。

(轻薄的3A+)

而被削减的硬件主要是以太网网口和内存,3A+版直接将以太网口拿掉因此用户必须使用无线网络。

内存削减至512MB(3B+版为1GB),USB 2.0端口削减至1个(3B+版是4个)。

(3B+和3A+的对比图)

板卡的长度和厚度都有所改观,几乎是要奔着Raspberry Pi Zero的路数去了。

在IoT前哨站看来,除了内存削减这点略微减分以外,其他都是加分项。毕竟现在给终端用以太网的人不多,而四个USB口的高度除了能跟以太网口对齐,并非刚性需求。

不让你困楼里 —— 高空救援无人机来了

在着火的高层建筑物中救人有多难,电影《摩天营救》已经讲的很明白了,这里放张海报让大家感受一下。

那没有战斗力爆棚的英雄人物在场,仅用当前科技可以有效解救人命吗?

来自中国广州的六位学生认为答案是肯定的,为此他们推出了一款名为“Net Guard”的自动驾驶救援机,可以把无人机变成救命的守护天使。

(演示视频:http://v.qq.com/x/page/x0788ya66cj.html)

其核心目的是为了将人们从着火的高层建筑中救出来 —— 当收到求救信号时,它会先使用GPS来精确定位火灾的位置,然后高空飞行以避开交通堵塞,并以最快的速度抵达。

接近事发地后展开成四个部分,中心是一个高韧性网。这样可以将困在高处的人安全转移到地面。

据悉,设计团队之所以选择四轴无人机是因为它在飞行过程中相对稳定,这源于其螺旋桨被安在一个静态的刚性框架中。

(机身的组成)

(救援网的组成)

(工作流程)

很显然这个概念非常酷,学生们的想象力值得称赞,而他们的这一创意也为他们赢得了1.3万美元的奖金,但将其变为现实绝对会是一个浩大的工程。

用树莓派和TV HAT做个电视机

不知道是不是用树莓派看电视的人非常多,树莓派官方干脆在近日推出一款电视帽(TV HAT),让树莓派粉丝直接拥有做电视机的能力。

该电视帽的全称是”Raspberry Pi DVB TV HAT”,价格是20英镑。相信将给喜欢看电视的树莓派开发者带来极大的满足。

电视帽可以让任何版本的树莓派(带有40针GPIO)实时解码数字电视信号,并将其传输到远程设备。比如另一台Pi、电脑,甚至智能手机。

电视帽内置的Sony CXD2880调谐器支持DVB-T2和DVB-T标准(英国Freeview),你可以通过它观看所有喜欢的频道。

在这里,我们向你展示如何设置它,甚至通过它把树莓派变成全合一的电视/PVR。

装配工作

将随附的银色射频电缆适配器的细端插入电视帽侧面的金色接头。取出40针的接头,将其插入电视帽底部的孔(不是插入顶部的黑色母头)!

然后把电视帽扣在Pi上,将RF适配器装在microSD卡插槽端。 为了确保安全,你要将螺丝和螺帽拧紧。

安装Tvheadend

首先你需要一个靠谱的数字电视(比如英国的Freeview)接收装置才能让调谐器工作。然后把电视信号线插入电视帽上的射频适配器。

在microSD卡上装好树莓派系统,启动后会看见一个绿色的LED点亮电视帽。

我们需要安装一个名为Tvheadend的后端电视服务来流化视频。

打开终端窗口并输入:

sudo apt-get update
sudo apt-get install tvheadend

配置Tvheadend

安装Tvheadend需要几分钟,所以你可能想去泡杯茶。

最后会出现一个配置屏幕,提示你输入Tvheadend管理员用户名。为了简单起见,在这里输入kodi,然后也输入kodi作为密码,你以后可以随时更改它。现在可以从另一个设备登录了。

远程登录

现在,Tvheadend正在运行,你可以从另一台计算机访问它(可以是第二个树莓派)。

在Web浏览器中,输入http://raspberrypi.local:9981/extjs.html。

如果不行就用Pi的IP地址,后面跟着:9981/extjs.html。

使用kodi这个用户名和密码登录后。将出现一个配置向导,允许你选择电视网络类型和信号源。

配置电视网络

在配置向导的“网络设置”中,应该显示“Tuner: Sony CDX2880 #0 DVB-T #0”。

对于网络类型,选择“DVB-T网络”。

对于预定义的muxes,选择你本地信号源。

例如,我们的是uk-Rowridge。单击Save & Next,它将开始扫描mux和服务(通道)。

当它达到100%后,在所有三个框中打勾(映射所有服务、创建提供者标记、创建网络标记),一个电视频道列表(EPG)将出现。

看电视

现在你可以在浏览器中通过电视帽观看直播。在EPG中,点击任何节目左边的电视图标,都可以在窗口中显示,可以全屏。也有计划任务和记录等选项 —— 使用“帮助”获得更多细节。

除了使用Web浏览器,你还能使用各种客户端,比如Kodi、omxplayer、VLC和智能手机应用程序 —— 你可以在Tvheadend网站上找到完整的列表。

友情提示:不是所有国家都支持这款电视帽,采购时请注意自己所在地区支持该标准和协议。

来自:https://www.raspberrypi.org/magpi/raspberry-pi-tv-hat-kodi/

编译:IoT前哨站

MacBook的安全芯片不仅防窃听,还让第三方维修站丢饭碗

苹果这次「狠心」要把安全性提到一个新高度了:硬件物理断连。

就在前几天人们还在讨论苹果新发布的多款新产品时,TechCrunch 负责安全领域的编辑 Zack Whittaker 发文表示,苹果刚刚发布的新款 MacBook Air 其实还有一个不为人知的新功能:麦克风防窃听。

这其实得益于苹果在发布会上重点提到的 T2 安全芯片。除了新款 MacBook Air 以外,苹果在七月底悄悄上架的 MacBook Pro 2018 以及 2017 年 12 月发布的 iMac Pro 中都使用了这款安全芯片。

T2 是一款 64 位的 ARMv8 芯片,运行名为 BridgeOS 操作系统,主打保护设备密钥、存储文档、指纹数据、系统级应用和启动进程等方面的安全性功能。

苹果的安全「执念」

TechCrunch 提到,T2 芯片拥有强制关闭麦克风的功能,当用户合上笔记本时,系统会自动强制关闭电脑的麦克风。需要指出的是,这并不是软件意义上的关闭,哪怕用户突破了系统的 root 权限,或者黑进了 T2 芯片的固件,都无法阻止麦克风的关闭。

苹果表示这项功能给 Mac 系列带来了「前所未有」的安全性,但这并不意味着 Mac 彻底不会遭受恶意软件的袭击。

苹果以封闭的软硬件生态闻名,安全性也一直是 macOS 引以为豪的属性,也是许多用户选择它的重要理由之一。

几年前,黑客使用远程管理工具黑进电脑摄像头的事件引发了人们对于电脑安全性的讨论,加上斯诺登和「棱镜计划」的曝光,不少谨慎的用户选择在摄像头上贴纸「封印」摄像头,杜绝被监视的可能。

在这种情况下,苹果笔记本却幸免于难。Mac 系列笔记本上的摄像头连接着一个指示灯,当摄像头处于使用状态时,摄像头旁边的绿色小灯便会亮起,这种情况下黑客的盗用就很容易会被用户发现。

但就在去年,前 NSA(国家安全局)黑客,现任 Synack 首席安全研究员 Patrick Wardle 发现了 Fruitfly——一款能够远程控制已被感染的计算机的文件、摄像头、屏幕、键盘和鼠标的恶意软件,具有极高的隐秘性。

令不少人担心的是,Fruitfly 已经悄悄运行多年,直到去年才被发现,这也使得「苹果电脑绝对安全」的神话破灭。

这一次,在 Mac 全系列上相继搭载 T2 芯片,也是苹果想要传递出的一个信号:请放心选购苹果设备,就安全性上,我们只增不减。

维修店躺枪

然而苹果高度封闭的软硬件体系,也使得每一次硬件上的调整,对第三方维修来说都是一次考验。随着苹果设备日益精密、复杂和高度统一,近年来苹果第三方维修服务逐渐沦落到「要么不用修,要么修不好」的地步。

这次 T2 的应用,则从软硬件上都近乎于「封杀」了第三方维修服务的可能。

在 10 月 6 日,MacRumors 曾报道过苹果就 T2 芯片在维修政策上的调整,据报道,只要搭载了 T2 芯片的苹果硬件产品,都必须通过特定的苹果诊断软件来检测。

MacRumors 称,苹果官方服务提供商内部详细指南文件上显示,若 2018 款 MacBook 没有运行特定诊断软件就擅自维修显示屏、Trackpad、Touch Bar、键盘和电池,可能会导致死机。

苹果只将诊断软件提供给自己的商店和授权服务提供商,这项维修策略的调整意味着,更便宜、更方便的传统第三方维修将会受到极大限制,至少就对搭载了 T2 芯片的苹果设备而言,苹果彻底阻止了除授权服务提供商以外的第三方维修服务。

在未来,倘若 T2 芯片也被应用到了 iPhone 或 iPad 上,这对所有未授权的苹果设备第三方改装、维修服务来说,都将是一次毁灭性的打击。

为避免重新洗衣服而做的降雨报警机

没有什么比刚晾干的衣服更舒服了,除非一场突如其来的阵雨把一切都毁了。

从一名家庭成员那里听到:“下雨了!”,然后紧接着是楼梯上雷鸣般的脚步声。

这样的话太惨了。

想要拯救你最好的周日时光,免于再一次去洗衣房的痛苦吗?

看看这个小东西。

当雨点开始时,这个简单的设备就会在你的手机检测到雨点时发出警报。不需要焊接,只需要几根电缆。借助低功耗电路板和WiFi,我们能做出一个基于Raspberry Pi Zero W的完美项目。

测雨器需要的组件:

2个雨水传感器板和一个控制器
面包板
充电宝
密封小食品容器
跳线
树莓派 Zero w

核心代码:

from gpiozero import DigitalInputDevice
from time import sleep
import http.client, urllib.parse

# Some setup first:
APP_TOKEN = ‘YOUR_PUSHOVER_APP_TOKEN’ # The app token – required for Pushover
USER_TOKEN = ‘YOUR_PUSHOVER_USER_TOKEN’ # Ths user token – required for Pushover

# Set up our digital input and assume it’s not currently raining
rainSensor = DigitalInputDevice(17)
dryLastCheck = True

# Send the pushover alert
def pushover(message):
print(message)
conn = http.client.HTTPSConnection(“api.pushover.net:443”)
conn.request(“POST”, “/1/messages.json”,
urllib.parse.urlencode({
“token”: APP_TOKEN, # Insert app token here
“user”: USER_TOKEN, # Insert user token here
“title”: “Rain Detector”,
“message”: message,
}), { “Content-type”: “application/x-www-form-urlencoded” })
conn.getresponse()

# Loop forever
while True:

# Get the current reading
dryNow = rainSensor.value
print(“Sensor says: ” + str(dryNow))

if dryLastCheck and not dryNow:

pushover(“It’s Raining!”)

elif not dryLastCheck and dryNow:

pushover(“Yay, no more rain!”)

# Remember what the reading was for next check
dryLastCheck = dryNow

# Wait a bit
sleep(5)

在做其他事情之前,在SD卡上安装一个Raspbian Stretch Lite(我们不需要桌面),然后插入到Pi中。确保已启用SSH访问。执行sudo apt更新和升级的常规程序,然后重启,检查SSH连接,然后关机。

将传感器安装到盖子上:

你可以使用任意数量的传感器,但是两个就可以了。用保温层或管道胶带将两块板固定在盖子上。

注:3d打印外壳图片(STL文件可从这里得到)。

需要连接两对跳线;每个传感器板一个,极性无关紧要。电缆的另一端必须穿入容器内,所以在适当的地方尽可能地挖一个小洞,这样电线才能通过,从而减少水进入的机会。

将传感器连接到控制器

为了让树莓派明白发生了什么,一个小的控制板(与传感器一起提供)是必需的。这就把被水短路的小电流转换成数字信号。利用面包板,将传感器上的两对导线并联起来(这样两个传感器都可以构成电路),然后将控制器的接收引脚(带有两个连接器的一侧)插入到面包板上,使每个引脚与传感器上的一根导线相连。

连接控制器

为了完成我们的电路,仔细看看控制板上的四个引脚。它们将被标记为A0、D0、GND和VCC。

使用一些跳线,将控制器与Pi连接如下:

VCC到GPIO pin 2 (5v),

GND到GPIO上的任何GND(例如pin 6),

D0到GPIO 17 (pin 11)。

D0和A0是传感器读取输出的两种不同方式。D0是一个直接的数字开关,阈值由板子上的可变电阻控制。A0是一个模拟输出(当转换为数字时),范围在0到1024之间,取决于雨的强度。

装配雨探测器

把充电宝接上树莓派,然后放进容器。理想情况下,东西不应该移动,所以要用胶带或大头针把所有东西都固定好。

你现在应该可以把所有东西都密封在容器里了,连接传感器板的电线不会被挤压或变形。一旦你高兴,打开它并连接电源,然后再次关闭它并检查你的连接。确保充电宝能给树莓派至少几个小时的电力。

检测软件

在这个特性的末尾添加脚本,并将其保存为rainbot.py(或从GitHub下载)到一个方便的位置,比如~/pi/rainbot。一旦就位,通过运行python3 ~/pi/rainbot/rainbo.py来执行一个初始测试。你应该每五秒钟就会看到一个读数:

如果是干的,是“真”;如果是湿的,是“假”。按CTRL+C停止脚本。

Pushover:在你的手机上获取降雨警报

为了获得提醒,我们将使用Pushover,这是一个向智能手机推送消息的服务(有七天的免费试用)。

注册pushover.net后,你将看到一个“用户密钥”,把这个复印一份。按照说明创建一个“应用程序令牌”。

编辑脚本,把现有的API键值替换成你自己的(在提示的地方),然后在你的手机安装了“pushover”程序。

再次运行脚本。把其中一块感应板稍微弄湿。控制器上应该亮一盏灯。如果一切正常,几秒钟后你的手机就会显示一个警报。

自动运行雨探测器

让我们设置脚本在启动时运行。 作为超级用户创建以下文件:

sudo nano /lib/systemd/system/rainbot.service
填入:

[Unit]
Description=Rainbot
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/pi/rainbot/rainbot.py

[Install]
WantedBy=multi-user.target

按CTRL+X保存并退出nano。

然后输入以下命令:

sudo chmod 644 /lib/systemd/system/rainbot.service
sudo systemctl enable rainbot.service
sudo systemctl daemon-reload
重新启动树莓派。脚本将在重新启动时运行(尽管您不会看到任何输出)。再用水测试一下。

为你的雨天探测器做改进

Pushover很方便,而且可以很容易地替换为任何你喜欢的函数。检查的频率可以改变(目前是每五秒一次)。或者把模拟电路改成数字电路,然后用A0输出来测量雨下得有多大。

如果你开始记录这些数据,这对气象站项目来说也是一个很好的起步。你还可以增加一个使用后安全关闭树莓派的按钮。

Google 新一代音乐识别

文 / Google  James Lyon

2017 年,我们发布了具有闻曲知音功能的 Pixel 2,就是利用深度神经网络为移动设备带来低功耗、始终开启的音乐识别功能。

在开发 “闻曲知音” 时,我们的目标是打造一个小巧高效的音乐识别器,这需要数据库中的每个曲目有一个非常小的指纹,以支持音乐识别功能完全在设备上运行,而无需连接互联网。

事实证明,“闻曲知音” 不仅对设备上的音乐识别器有效,其准确性和效率也大大超出我们当时使用的服务器侧系统声音搜索,后者构建之时深度神经网络尚未得到广泛应用。

很自然地,我们就想能否将 “闻曲知音” 背后的技术用于服务器侧 “声音搜索” 中,让 Google 的音乐识别功能成为世界之最优。

最近,我们发布了新版本 “声音搜索”,其中就采用了 “闻曲知音” 中使用的部分技术。您可以在任意 Android 手机上通过 Google 搜索应用或 Google 智能助理来使用这一功能。

只要开启语音查询功能,当您附近有音乐正在播放时,系统就会弹出 “这首歌的歌名是什么?” 的提示,供您点击查询。或者,您也可以直接问:“Hey Google,这首歌的歌名是什么?” 使用最新版本的 “声音搜索”,即可获得比以往更快更准确的搜索结果!

“闻曲知音” 与 “声音搜索” 对比

“闻曲知音” 使音乐识别技术微型化,令其变得小而高效,足以在移动设备上连续运行而不会对电池产生明显影响。

为此,我们开发了一个全新的系统,使用卷积神经网络将几秒的音频转换成一个独特的 “指纹”。然后,系统会将指纹与设备上储存海量音乐的数据库进行比对,该数据库会定期更新以添加最新发布的曲目并删除过气曲目。

相比之下,服务器侧 “声音搜索” 系统则不同,其需要比对的曲目约为 “闻曲知音” 的 1000 倍之多。

由于音乐库的数量过于庞大,这对搜索的速度和准确性都是极大的挑战。在深入讨论这部分内容之前,我们先来了解一下 “闻曲知音” 的运作原理。

“闻曲知音” 的核心匹配流程

“闻曲知音” 通过将八秒音频片段的音乐特征投影到一系列低维嵌入式空间来生成音乐 “指纹”,这些低维嵌入式空间包含七个时长两秒的音频片段,片数之间的时间间隔为一秒,由此产生如下分段图:

然后,“闻曲知音” 会搜索设备内置的歌曲数据库,寻找相似的嵌入序列,该数据库也是通过使用同一神经网络处理流行歌曲而生成。“数据库搜索” 使用两阶段算法来识别匹配的歌曲,第一阶段使用快速但欠准确的算法搜索整个歌曲数据库,以找出可能的一些候选歌曲;第二阶段对每首候选歌曲进行详细分析以找出正确匹配的歌曲(如有)。

匹配,阶段 1:找出合适的候选歌曲:对于每次嵌入,“闻曲知音” 都会对设备内置数据库中的歌曲进行最邻近搜索以找出类似嵌入。数据库使用空间分割和向量量化混合法,以有效搜索数百万嵌入向量。由于音频缓冲区非常嘈杂,因此只能进行近似搜索,而且并非每次嵌入都能在数据库中找到正确歌曲的邻近匹配。但是,在整个音频片断中找到正确歌曲的几个邻近嵌入的机率非常高,因此,搜索范围会缩小到获得多次嵌入的一小组歌曲。

匹配,阶段 2:最终匹配:由于上述数据库搜索方法为近似搜索,“闻曲知音” 可能无法找到我们查询的某些嵌入附近的歌曲嵌入。因此,为获得准确的相似度分数,“闻曲知音” 会检索数据库中每首歌所有可能相关的嵌入,以填补 “缺口”。然后,结合音频缓冲区的嵌入序列和设备内置数据库歌曲中的另一个嵌入序列,“闻曲知音” 会两两评估其相似性分数并相加,以得到最终的匹配分数。

使用一系列嵌入而非单次嵌入对于 “闻曲知音” 匹配歌曲的准确性至关重要。指纹识别神经网络还不够准确,无法仅通过单次嵌入识别歌曲 — 每次嵌入都会生成大量误报结果。

但是,结合多次嵌入的结果,很容易就能消除误报,这是因为正确的歌曲能够匹配到每一次嵌入,而误报匹配仅接近输入音频的一两次嵌入。

扩展 “声音搜索” 服务器的 “闻曲知音” 功能

截止目前,我们已详细介绍了 “闻曲知音” 如何将歌曲与设备内置数据库中的歌曲相匹配。

从拥有成千上万首歌曲的 “闻曲知音” 到拥有数以亿计首歌曲的 “声音搜索”,最大的挑战在于,很多歌曲会有数千次产生误报结果。为了能够在不作其他改动的情况下补偿这一点,我们不得不提高识别阈值,这意味着如要得到确认的匹配结果,就需要识别更多音频。

然而,新版 “声音搜索” 服务器的目标是比 “闻曲知音” 匹配速度更快,而不是更慢,因此,我们不希望用户为一个结果等待 10 秒以上。

由于 “声音搜索” 是服务器侧系统,和 “闻曲知音” 一样,不受处理和存储数据制约条件的限制。因此,我们在指纹识别方面做了两大改动,两者均以牺牲服务器资源为代价提高准确性:

我们将所用神经网络的大小增加了四倍,并将每次嵌入从 96 维增加到 128 维,这就减少了神经网络将高维输入音频打包成低维嵌入所需的工作量。这对提高第二阶段的搜索质量至关重要,因为其十分依赖于原始神经网络输出的准确性。

我们将嵌入密度增加了一倍,事实证明,每 0.5 秒(而不是 1 秒)进行一次音频指纹识别并不会显著降低个别嵌入的质量,由于可用于匹配的嵌入数量增加一倍,质量反而有很大提升。

我们还决定根据歌曲的受欢迎程度对索引进行加权,实际上,我们降低了人气歌曲的匹配阈值,并且提高了不知名歌曲的匹配阈值。总而言之,这意味着我们几乎可以在数据库中无限制地添加更多(不知名)歌曲,而不会明显拖慢识别速度。

结论

对于 “闻曲知音”,我们原打算利用机器学习来创建一个音频指纹识别系统,该系统不仅要功能强大,而且设计要精简到足以完全在手机上运行。

但其实,我们已成功创建了一个出色的全方位音频指纹识别系统,并且将其设计思想很好地延续到了服务器侧 “声音搜索” 系统,尽管 “声音搜索” 面临的挑战与 “闻曲知音” 不尽相同。

当音乐声音很小或处于非常嘈杂的环境中时,我们尚无法做到每次都能匹配,这意味着我们仍有很大提升空间,但我们坚信,我们能够提升系统的识别速度。我们会继续以提供新一代音乐识别技术为目标,应对这些挑战。

如果下次您想知道播放的是什么音乐,不妨一试!您可以在主屏幕上创建一个快捷方式,如下所示:

致谢

我们对以下人员表示衷心感谢:Micha Riser、Mihajlo Velimirovic、Marvin Ritter、Ruiqi Guo、Sanjiv Kumar、Stephen Wu、Diego Melendo Casado‎、Katia Naliuka、Jason Sanders、Beat Gfeller、Julian Odell、Christian Frank、Dominik Roblek、Matt Sharifi 以及 Blaise Aguera y Arcas‎。

更多 AI 相关阅读:
· 通过 Google 照片库 API 打造新体验
· 构建 Google Dataset Search 和打造开放数据生态系统
· 针对资源匮乏语言的文字转语音系统:任重而道远

IoT是公钥基础设施(PKI)应用的推动关键

报告称,未来2年将有42%的IoT设备采用数字证书进行身份验证。

泰勒斯与波耐蒙研究所近期报告显示,IoT设备使用的快速增长得益于采用公钥基础设施(PKI)的应用部署激增,而英国在这方面处于领先位置。

但PKI“所有权”的归属问题仍是其采纳的主要障碍。PKI是用于创建、管理、分发、使用、存储和撤销数字证书与公钥的一组硬件、软件、策略、过程和规程。

《2018全球PKI趋势研究》呈现了对1600位IT与安全从业者的调查研究结果,受访对象遍及英国、美国、澳大利亚、巴西、日本等12个国家。

调查发现,70%的受访者认为没人承担起管理PKI的责任,这是多年来的一大难题了。

“最佳实践假设有足够的人员和能力来定义和维护现代PKI所依赖的流程和程序,并以此为基准,但缺乏清晰的所有权不符合这种最佳实践。

IoT使用激增

44%的应用在使用PKI,比2015年的21%增加了一倍多。IoT是今年PKI使用增长的唯一激励因素,因为云服务和消费级移动应用都有所下降。PKI为IoT应用提供至关重要的核心身份验证技术。

波耐蒙此前就曾表示:

“之前几年,我们将PKI作为解决云应用增长所需身份验证及其他挑战的支撑性成熟技术。如今,企业高管令其团队利用IoT来提升和驱动业务发展。于是,需要保护的终端数量大幅增加,网络风险随之激增,也就更需要理解PKI的关键驱动力地位了。

PKI采用的制造业推手

工业制造行业也是PKI采用的有力推手,业内平均每家公司都管理着4.3万个证书。

行业内受访者描述了自家公司的企业PKI部署方式,其中54%提到了内部证书颁发机构(CA),30%采用外部托管私有CA,34%用的是公共CA服务,还有24%是在公共云上运营私有CA。

金融服务行业是内部企业CA部署比例最高的,72%都设有内部CA。

IoT安全:为打造安全网络而增加PKI采用

公司企业在应用更强的PKI安全,雇佣PKI专家,投资多因子身份验证之类的附加安全控制。49%的受访者称自己要么广泛加密自身IoT设备数据,要么部分加密之。

泰勒斯安全策略高级总监表示:为部署安全的IoT,公司企业需拥抱经时间检验的安全技术,比如PKI。这样才能确保自身IoT系统的完整性与安全性。

Gartner预测,为匹配联网设备的猛增,2021年的IoT安全开支将会翻倍。而今年的全球IoT安全开支眼看就要达到15亿美元了。

但趋势科技宣称,IoT安全如今仍只是IT主管在出事后才会考虑的次要事项,仅53%的IT及安全决策者会将IoT视为安全风险。

泰勒斯与波耐蒙研究所《2018全球PKI趋势研究》报告:

https://www.thalesesecurity.com/2018/pki-trends-study

来自:安全牛