57行价值八千万美元的车牌识别代码

简介: 为了防止被窃车辆进入黑市销售,警方使用了一个名为VicRoads的基于网络的服务,该服务用于检查车辆的登记状态。该警局还投资研发了一个固定式汽车牌照扫描器:一个固定的三脚架摄像头,可扫描过往的车辆,并自动识别被窃车辆。

1.jpeg

维多利亚警察局是澳大利亚维多利亚州的主要执法机构。在过去一年里,维多利亚州共有超过1.6万辆车被盗,价值约为1.7亿美元。目前警方正在试验各种技术方案,以打击汽车盗窃行为。

为了防止被窃车辆进入黑市销售,警方使用了一个名为VicRoads的基于网络的服务,该服务用于检查车辆的登记状态。该警局还投资研发了一个固定式汽车牌照扫描器:一个固定的三脚架摄像头,可扫描过往的车辆,并自动识别被窃车辆。

不要问我为什么,但有一天下午,我突然想设计一个车载式汽车牌照扫描器,如果车辆被盗或未登记,它会自动通知你。同时,我还想了解要组成这样一个扫描器需要哪些独立的组件,将这些组件结合在一起有多困难。

但是,经过一番谷歌搜索之后,我发现维多利亚警察局最近已经在试用类似的装置,推广使用的话估计费用在8600万美元左右。一位敏锐的评论员指出,配置220辆车的总成本是8600万美元,相当于每辆车390,909美元

当然,我们可以做得比这更好。

2.png

现有的固定式汽车牌照识别系统

成功的标准

在开始之前,我将简要介绍一下产品设计的几个关键要求。

图像处理必须在本地执行

将视频流传送到中央处理仓库进行处理似乎是解决这个问题最低效的方法。因为除了巨额的数据流量账单以外,你还会将网络延迟引入到这个可能已经相当缓慢的过程当中。

虽然集中式机器学习算法会随着时间的推移而变得越来越准确,但我还是想看一下本地的设备实现是否“足够好”。

必须支持低质量的图像

由于我没有树莓派相机或USB摄像头,所以我将使用dashcam镜头。它是现成的,而且是样本数据的理想来源。有一个额外的好处,dashcam视频质量代表了你对车载摄像机预期的整体质量。

需要使用开源技术构建

依靠专有软件意味着每次你要求修改或改进时,都会感到麻烦。而使用开源技术则不需要担心这个。

解决方案

从整体上来说,我的解决方案是从Dashcam视频中获取图像,通过安装在本地设备上的开源车牌识别系统将数据发送出去,查询注册检查服务,然后接收返回的结果并显示出来。

返回到执法车辆的数据包括:车辆的样式和型号(验证车牌是否被盗)、登记状态,以及如果车辆被盗时的通知。

如果这听起来很简单的话,那是因为它真的很简单。例如,图像处理可以由openalpr库来处理。这就是识别车牌字符的全部内容:

openalpr.IdentifyLicense(imagePath, function (error, output) {
   
   // handle result
});

小小的附加说明

VicRoads 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
    };
}

结果

我必须要说,我感到非常惊讶。

我原来预计开源的车牌识别会相当垃圾。而且图像识别算法可能并没有针对澳大利亚的牌照进行优化。

该解决方案能够在宽阔的视野中识别车牌。

3.jpeg
添加注释的效果。尽管存在光线反射和镜头失真,但车牌号还是识别出来了。

虽然该解决方案偶尔会有特定字母出现问题。

4.jpeg
车牌号码识别错误,误将M识别为H

但是…… 该解决方案最终还是把车牌识别出来了。

5.jpeg
几帧过后,M被正确识别出来了,并具有更高的置信度

你可以从上面两个图像看出,在处理了几帧图像之后,置信度从87%提升到了91%多。

我有信心可以通过提高采样率来提高识别的准确率,然后按置信度排序。或者,在校验注册的号码之前只接受置信度大于90%的识别结果。

这些是非常直接的代码方面的修复,并且不妨碍使用本地数据集训练车牌识别软件。

8600万美元的问题

说句公道话,我完全不知道8600万美元这个数字包括些什么东西,也不能说没有本地化训练的开源工具的准确性能与BlueNet系统相提并论。

我估计这一预算中有一部分包括了替换几个遗留的数据库和软件应用程序,以支持高频率低延迟的车牌查询服务。

另一方面,每辆车的成本约为39万美元,似乎相当昂贵,特别是如果BlueNet不是特别准确,并且没有大型IT项目淘汰或相关系统升级的话。

未来的应用程序

虽然这很容易陷入奥维尔性质的“永远在线”的牌照扒窃网络,但这种技术也有很多积极的应用。想象一下,对一辆被劫持的车辆扫描乘客的被动系统,可以自动上报当局和家人目前的位置和方向。

特斯拉的车辆已经配备了摄像机和传感器,能够接收OTA更新。 Uber和Lyft司机也可以通过配备这些设备来大幅增加覆盖的区域。

使用开源技术和现有的组件,似乎有可能提供一个提供更高响应率的解决方案,并且投资额远低于8600万美元。

文章原标题《How I replicated an $86 million project in 57 lines of code》,作者:Tait Brown,译者:夏天,审校:主题曲。

文章为简译,更为详细的内容,请查看原文

相关文章
|
存储 安全 算法
Jogger跑鞋NFT铸造合成分红系统开发成熟技术方案及详细/源码功能
  区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
|
8月前
|
机器学习/深度学习 人工智能 算法
从《繁花》到现实,现代版“宝总”如何通过智能手段预测股市?
如果宝总生在现代,在大数据、人工智能等前沿技术日新月异的今天,一定会通过科学的方法和智能工具来洞悉市场动态、分析趋势变化。
从《繁花》到现实,现代版“宝总”如何通过智能手段预测股市?
|
监控 分布式数据库 区块链
Jogger 慢跑者 Stepn 跑鞋 NFT 铸造合成项目系统开发(成熟源码)
而智能合约是在区块链的保证信息传递的一致性、可信性和安全性基础上
|
数据采集 供应链 安全
【年终特辑】看见科技创新力量 洞见时代创业精神—医疗健康—尊颐智能:智能康复护理设备,精准解决术后者/失能者日常护理难题
【年终特辑】看见科技创新力量 洞见时代创业精神—医疗健康—尊颐智能:智能康复护理设备,精准解决术后者/失能者日常护理难题
166 1
|
Unix 数据处理 区块链
量化对冲搬砖套利开发详情丨量化对冲搬砖套利系统开发(成熟及案例)丨量化对冲搬砖套利源码功能
  App是一个互联网应用程序。与传统App最大的区别在于DApp运行在去中心化的网络上,即区块链网络。网络中没有可以完全控制DApp的中心化节点。而App,众所周知,是中心化的。需要请求服务器来获取数据、处理数据等。
|
JSON 机器人 大数据
现货量化交易机器人开发原理丨现货量化交易机器人系统开发(开发案例及源码)
 For quantitative trading,the most important thing is the establishment of models.Generally speaking,it is to use modern statistics and mathematical methods,use computer technology to find laws that can bring excess returns from massive historical data to formulate strategies,and use mathematical mo
|
存储 机器人
科技可以让葡萄酒更好喝?细数业内葡萄酒科技
科技可以让葡萄酒更好喝?细数业内葡萄酒科技
181 0
科技可以让葡萄酒更好喝?细数业内葡萄酒科技
|
新零售 供应链
瓜脸识别神器让标签看得见,看ET农业大脑是如何将生鲜品牌化?
2018云栖大会上海峰会ET农业大脑专场,天猫生鲜旗舰店总经理冷海晶带来以“阿里ET农业大脑-赋能商家+农户,让基础坚如磐石”为题的演讲。本文首先讲了生鲜行业发展的现状,其次讲了天猫是怎样助力原产业的,最后介绍了一款吃瓜神器让吃瓜群众秒变专家。
2399 0