事情是这样的。
维多利亚警察局,是澳大利亚维多利亚州的主要执法机构。过去一年,维多利亚州共有超过1.6万辆车被盗,预计损失约为1.7亿美元,警方正在试验各种技术驱动的解决方案,打击汽车盗窃。
为了防止盗用车辆的欺诈性销售,维州公路局已经建立了一个,基于网络的注册识别系统,来检查车辆注册状况。然而,情况并没有好多少。
维多利亚警察局打算投资8600万美元左右,研发一套基于计算机视觉识别的系统。一位业内评论员指出,这个系统要配置到220辆车上,相当于每辆车要花费成本390909美元。
一位叫 Tait Brown 的小伙坐不住了,觉得维多利亚警局简直是在浪费金钱。他突发奇想,利用开源技术,仅仅写了57行代码,就完爆了维州警局。
UC Santa Barbara计算机科学系助理教授王威廉,也为这个小伙点赞。
△现有固定车牌识别系统
▍开发准备
在开始之前,他简要介绍了产品设计的几个关键点。
图像处理必须在本地执行
将直播视频直接传输到中央处理仓库,似乎是解决此问题的效率最差的方法。除了数据流量庞大的帐单之外,还会产生网络延迟。
虽然,集中式机器学习算法,只会随着时间的推移而变得更加准确,但他想了解本地的设备实现是否“足够好”。
必须能够识别低质量的图像
由于 Tait Brown 没有Raspberry Pi(树莓派,微型电脑)摄像头或USB网络摄像头,所以他使用了dashcam摄像头 - 它是随时可用的、一个理想的样本数据源。
附加的好处是,dashcam的成像效果,比车载摄像机预期的镜头质量大致相当。
需要使用开源技术构建
依赖专有软件意味着,您每次请求更改或更新时都会被攻击。傻瓜都知道开源技术可以省钱。
▍解决方案
高级的解决方案是,从Dashcam视频中获取图像,通过本地安装在设备上的开源车牌识别系统来传输数据,来查询注册检查服务,然后返回结果进行显示。
传输到执法车辆安装设备的数据包括:车辆出场型号,注册状态和车辆被盗时的通知报告。
听起来是不是特简单。举个例子,图像处理都可以由openalpr库处理。这真的涉及到识别车牌上的字符:
openalpr.IdentifyLicense(imagePath, function (error, output) {
// handle result
});
注意:
维州公路局公开的API是不可用的,因此需要通过从官方网络网络下载数据,来进行车牌识别。
如下所示:
// Open form and submit enquire for `rego`
function getInfo(rego) {
horseman
.userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0')
.open(url)
.type('#registration-number-ctrl input[type=text]', rego)
.click('.btn-holder input')
.waitForSelector('.ctrl-holder.ctrl-readonly')
.html()
.then(function(body) {
console.log(processInfo(body, rego));
return horseman.close();
});
}
// Scrape the results for key info
function processInfo(html, rego) {
var $ = cheerio.load(html);
var vehicle = $('label.label').filter(function() {
return $(this).text().trim() === 'Vehicle:';
}).next().text().trim();
var stolen = $('label.label').filter(function() {
return $(this).text().trim() === 'Stolen status:';
}).next().text().trim();
var registration = $('label.label').filter(function() {
return $(this).text().trim() === 'Registration status & expiry date:';
}).next().text().trim();
return {
rego,
vehicle,
stolen,
registration
};
}
▍结果
Tait Brown 对结果感到惊讶。
他预计开源系统,来识别车牌不会很好。此外,图像识别算法可能未针对澳大利亚车牌进行优化。
但,最终的解决方案,却能够在宽泛的视野中识别车牌。
△在摄像头失真情况下的识别效果
虽然解决方案,偶尔会在识别特殊车牌时会出问题。
△读数不正确
但是...解决方案最终会纠正错误,给出正确反馈。
△几帧后被正确识别
正如你在上述两幅图像中看到的那样,几秒钟后的图像处理,从87%的置信度评分,上升到超过91%。
Tait Brown确信,准确性可以通过提高采样率来提高,然后按最高置信度排序。或者,可以设置,仅在接受验证注册车牌之前,接受大于90%的置信度的阈值。
可以直接code-first修复,并且不排除使用本地数据集,来训练车牌识别软件。
▍8600万美元?!
公平地说,Tait Brown想不明白为什么要花费 8600万美元,他也没觉得,经过本地训练的开源系统比BlueNet系统(第三方技术服务商)差。
他预计,这笔预算的一部分包括:更换几个数据库和软件应用程序,以支持每辆车每秒多次高速、低延迟的车牌查询次数。
另一方面,每辆车的成本约为391万美元,相当土豪。另外,如果BlueNet在没有大规模的IT项目停产或升级相关系统的情况下,根本用不了这么多钱。
未来这种技术有很多积极的应用场景。想象一下,如果这个识别系统,可以自动扫描偷车贼的车牌,并自动报警以及告知家属位置和方向,那该有多酷。
特斯拉已经掌握了相机和传感器技术,能够接收OTA更新,造福人类啊。Ubers和Lyft司机也可以配备这样的系统,来增加安全性。
使用开源技术和现有组件,似乎有可能提供一个更省钱的解决方案,投资远低于8600万美元哟。
★推荐阅读★
Bengio主办 ‖ 2017蒙特利尔大学DL+ML暑期班课程
长期招聘志愿者
加入「AI从业者社群」请备注个人信息
添加小鸡微信 liulailiuwang