译者 | 陈峻
审校 | 孙淑娟
人工智能(Artificial intelligence,AI)已经面世几十年了,但直到最近,这项技术才被广泛地应用在诸如协助企业识别潜在客户,以及识别环境中的危险物体等场景中。特别是以人工智能驱动的物体检测领域,它从根本上提升了传统闭路电视(CCTV)监控摄像头的能力。

目前,凭借着物体识别软件,AI摄像头已经可以识别到在其面前出现的人脸、以及各种物体。这对于真实的安保使用场景,有着极其实用的创新意义。
首先,让我们来理清一个概念:AI摄像头并不是一种可以用来拍摄视觉图像、或制作视频的新设备,而是与传统摄像头非常相似的、可以利用计算机视觉等技术,从可视化数据中“学习”到实用信息的视觉处理设备。
利用机器学习算法,AI摄像头可以流畅地处理视觉图像中的各种信息。例如其中的一个典型用途便是,AI摄像头能够使用传感器来分析图像,并确定捕捉图像的最佳设置。
近年来,物体检测已经被广泛地应用到了许多垂直领域。例如,在某些行业,一些公司会依靠AI摄像头进行面部识别、车辆检测、以及其他语义对象的检测。
在某些特殊场景中(如建筑工地),AI摄像头也能够通过安全协议,及时检测到施工人员是否已穿戴好了基本的安全防护装备;或者是否有高空物体正在落向人员的头部。
此外,通过监控员工的行为,AI摄像头还能够判断员工在工作时,是否距离危险物质过近,是否对安全威胁警告熟视无睹。在这种实时危险检测的基础上,AI摄像头还能够利用声光电等方式,提醒现场人员正在发生的异常情况,或是通知到后台,赶在事故发生之前,挽救生命,并避免高昂的纠错代价。
物体检测涉及到通过某种算法,来处理摄像头捕获到的图像数据,并将其与数据库中的已知物体进行比较。接着,算法会识别出那些与数据库中已存对象相似的对象,并返回结果。例如,那些专被用来检测人脸的AI摄像头,可以主动识别人物或其他物体,哪怕他们的部分特征被遮挡或无法识别。AI摄像头将其捕捉到的图像,与后端数据库中存储的大量人脸信息进行比较,检索出那些可能匹配上的面部特征。
同时,在获取明确同意的前提下,这些摄像头还可以通过面部识别技术,使雇主能够更加有效地跟踪员工的出勤率,并监控员工在工作场所的行为。
和其他AI赋能的工具(AI-powered tool)类似,AI摄像头必须经过大量数据集的训练,例如在接受了数十万张汽车图像的判断后,才能较为有效、准确地检测出特定的车辆。
可见,我们首先需要训练AI摄像头收集各种有待检测的物体的图像。在此阶段,我们应当做到“韩信点兵,多多益善”,即展示包括不同视角、光照条件、颜色、以及不同拍摄角度的图像。只有“喂给” 摄像头的图像越丰富,它们才能够反复地训练判断能力。通过不断地积累正确的特征,以及剔除不相关的干扰因素,它们在现实世界中,才能做出准确的识别。
从实现技术上说,您可以使用TensorFlow Lite或PyTorch等开源库,来训练自己为AI摄像头系统开发的检测特定对象的算法。整个过程包括编写代码,调用算法去接收图像或视频,并输出与其中内容相对应的标签。
虽然添置AI摄像头会给企业带来一定的成本开支,但是相对于它带来的好处而言,许多行业还是乐于接受和启用的。下面,我将以D-Link系列AI摄像头为例,和您讨论它们在真实使用场景中的四大优势。
传统的摄像头系统在检测物体方面往往捕捉速度缓慢、且不可靠,通常还需要依靠人眼观察,才能精确地定位物体。而AI摄像头则是针对快速、准确地检测物体而设计制造的。随着如今AI技术的快速更新与迭代,AI摄像头在检测时间上大幅缩短。特别是对于诸如建筑工地或公共道路之类的快节奏环境,这种关键性的提升显得尤为重要。
与传统摄像头系统相比,物体检测摄像头在识别精度上也提升了不少。这在一定程度上要归功于它们能够从多个角度与距离,去识别物体的能力。即使某些看起来大小或形状相似的物体,摄像头也能够区分出它们类型的不同。此类特性让它们更加适合于诸如:安全监控、以及库存管理等精细的应用场景,也能够体现出人工智能的特性。
同样,与传统摄像头相比,物体检测摄像头具有更高的精度、以及更快的检测效率,本身就体现了时间成本的节省。企业通过预先投资建设AI赋能的系统,可以避免由于传统系统的不准确或缓慢的结果,所导致的高昂的错误代价与错失机会。而且,这些系统往往需要更少的人工维护,甚至不需要去定期进行手动校准。因此,从长远来看,AI摄像头的确能够节省企业的资金投入。
由于部署与实施的便利性,AI摄像头能够在不增加资源负担的前提下,迅速实现监控能力上的扩展与延伸。此外,过去的人工识别方法,需要几名操作员持续盯着屏幕分析和解读他们在图像中看到的事物。而AI摄像头则提供了更可靠的结果,避免了人工在工作单调乏味时,可能出现的识别错误。
综上所述,人工智能通过重新定义传统识别与监控技术,在各个物体检测领域正在发挥着关键性的作用,甚至能够起到挽救生命的效果。当然,AI技术的实际应用场景,远不止于此。从客户聊天机器人,到内容的采编,以及时下流行的AI绘画,人工智能都在和我们的生活持续发生着强连接。
陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。
原文标题:How AI Cameras Detect Objects and Recognize Faces,作者:KARIM AHMAD
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有一大串格式化数据(例如JSON),我想使用Psychinruby同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解