我如何用57行代码复制一个价值8600万美元的项目

当使用现有开源技术的实验做“足够好”的工作时

维多利亚警察局是澳大利亚维多利亚州的主要执法机构。去年维多利亚州有超过16,000辆汽车被盗 - 耗资约1.7亿美元 - 警察部门正在试验各种技术驱动的解决方案,以打击汽车盗窃行为。他们称这个系统为BlueNet。为了防止被盗车辆的欺诈性销售,已经有一项VicRoads 基于网络的服务,用于检查车辆登记的状态。该部门还投资了一个固定式车牌扫描仪 - 一个固定三脚架相机,扫描过往交通,自动识别被盗车辆。不要问我为什么,但是有一天下午,我有一个车载车牌扫描仪原型的愿望,如果车辆被盗或未注册,它会自动通知你。了解这些单独的组件存在,我想知道将它们连接在一起是多么困难。但是,经过一番谷歌搜索,我发现维多利亚警方最近经历了类似设备的试验,估计推出的成本约为86,000,000美元。一位精明的评论者指出,安装220辆汽车的成本为8600万美元,相当于每辆汽车390,909美元。当然,我们可以做得更好。

 

成功标准

在开始之前,我概述了产品设计的一些关键要求。

 

要求#1:图像处理必须在本地执行

将实时视频流式传输到中央处理仓库似乎是解决此问题的最有效方法。除了高昂的数据流量账单外,您还会将网络延迟引入到可能已经很慢的流程中。

虽然集中式机器学习算法只会随着时间的推移变得更加准确,但我想了解本地设备上的实现是否“足够好”。

 

要求2:必须使用低质量图像

由于我没有Raspberry Pi摄像头或USB网络摄像头,因此我将使用dashcam镜头 - 它随时可用并且是样本数据的理想来源。作为额外的奖励,dashcam视频代表了您对车载摄像头所期望的镜头的整体质量。

 

要求#3:需要使用开源技术构建

依靠专有软件意味着您每次请求更改或增强时都会受到攻击 - 并且此后每次请求都会继续刺痛。使用开源技术是一个明智的选择。

 

My solution

在较高的层次上,我的解决方案从dashcam视频中获取图像,通过设备本地安装的开源牌照识别系统,查询注册检查服务,然后返回结果进行显示。

返回执法车辆中安装的设备的数据包括车辆的品牌和型号(仅用于验证车牌是否被盗),登记状态以及被报告车辆被盗的任何通知。

如果这听起来很简单,那是因为它确实如此。例如,图像处理都可以由openalprlibrary.

这真的是识别车牌上的角色所涉及的所有内容:

openalpr.IdentifyLicense(imagePath, function (error, output) { // handle result });A Minor Caveat 公共访问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
};

Results

我必须说我很惊喜。我预计开源车牌识别非常垃圾。此外,图像识别算法可能未针对澳大利亚车牌进行优化。该解决方案能够识别广泛视野中的车牌。

虽然,解决方案偶尔会遇到特定字母的问题。

但是......解决方案最终会使它们变得正确。

正如您在上面两张图片中看到的那样,处理图像几帧后,从87%的置信度评分跳到91%以上的头发。我很有信心,原谅双关语,通过提高采样率,然后按最高置信度等级排序,可以提高准确性。或者,可以设置阈值,该阈值在继续验证注册号之前仅接受大于90%的置信度。这些是非常直接的代码优先修复,并不排除使用本地数据集训练车牌识别软件。86,000,000美元的问题公平地说,我完全不知道$ 86M这个数字包括什么 - 我也不能说我的开源工具的准确性,没有本地化培训与试点BlueNet系统。我希望预算的一部分包括更换几个遗留数据库和软件应用程序,以支持每辆车每秒数次高频率,低延迟地查询车牌。另一方面,每辆车约39.1万美元的成本似乎相当丰富 - 特别是如果BlueNet不是特别准确,并且没有大规模的IT项目退役或升级依赖系统。Future Applications虽然很容易陷入奥威尔式的“永远在线”牌照狙击手网络中,但这项技术有许多积极的应用。想象一下被动系统扫描同伴驾驶者的绑架车,自动警告当局和家庭成员他们当前的位置和方向。特斯拉斯的车辆已经充满了能够接收OTA更新的摄像头和传感器 - 想象一下,这些变成了一群虚拟的好撒玛利亚人。 Ubers和Lyft司机也可以配备这些设备,以大幅增加覆盖范围。使用开源技术和现有组件,似乎可以提供一种提供更高回报率的解决方案 - 投资远低于8600万美元。

英文原文:https://medium.freecodecamp.org/how-i-replicated-an-86-million-project-in-57-lines-of-code-277031330ee9

更多文章欢迎访问 http://www.apexyun.com/

联系邮箱:public@space-explore.com (未经同意,请勿转载)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值