首页> 标签> 自动驾驶
"自动驾驶"
共 3086 条结果
全部 问答 文章 公开课 课程 电子书 技术圈 体验
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。内卷背后也有人感慨,互联网到了尽头。支撑这一论述的是,移动互联网的人口红利已经消失,几款国民型APP用户增长都固定在了10亿这个级别,只能依靠自然人口的增长和迁移。这一幕如同刘慈欣小说《三体》里所描述的,智子封锁的地球科技一样,被信息干扰,或引导至错误方向发展,困在原地,做困兽之斗,无法自拔。“内卷论”与“尽头论”的流行,让我们看到,中国科技产业尤其是互联网,需要自己的“破壁人”计划,突破封锁,尤其是跳出原有的路径依赖。我们不应该只是一味的看到消费互联网的互联网产业,却不见更为广阔的产业互联网未来。科技的未来,不是消费互联网,而是产业互联网。黄奇帆在中国互联网大会上斩钉截铁地说,“今后十年是产业互联网时代”。互联网的未来是产业互联网,产业互联网的价值以及远景是怎样的?2021年8月18日的百度世界大会,告诉我们关于未来的某些可能性,从某种意义上来说,百度正在扮演着中国科技的“破壁人”角色。硬科技背后需要软实力沉淀和积累百度世界大会,是百度公司的一个传统,这既是百度向公众披露其运营和战略的路演,也是公众了解百度的一个窗口。2021年的百度世界大会与以往最大的不同,可能是,这一次百度发布了更多的“硬科技”产品。比如惊艳一时的百度汽车机器人,比如温情脉脉的小度智能巨屏电视、小度智能词典笔、小度主动降噪智能耳机Pro、添添旋转智能屏,以及宣布量产的百度第二代昆仑AI芯片“昆仑芯2”。一致的行业现象是,科技企业都在逐渐从它们软件的实力向硬件渗透。百度这些“硬科技”的背后,是其软件实力的支撑。比如,百度的“汽车机器人”,它需要多重能力:首先具备L5级别自动驾驶能力,不仅无需人类驾驶,而且比人类驾驶更安全;其次具备语音、人脸识别等多模交互能力,分析用户潜在需求,主动提供服务;此外,汽车机器人还具备自我学习和不断升级能力,是服务各种场景的智慧体。百度的这款“汽车机器人”已经达到了L5级别的自动驾驶,它是一辆没有方向盘汽车,这是自动驾驶的终极形态,无需人类驾驶的同时,还能有更多驾驶之外的服务。这也是命名“汽车机器人”的原因所在吧。又比如,小度发布的四款产品,是百度AI人格化和服务化两大发展方向上各种技术沉淀和积累的集中展现。譬如语音识别技术,百度的语音识别技术准确率达到了98%,甚至超过人耳水平。这四款是将语音识别技术、百度AI等与智能生活结合,针对不同场景开发的产品,用户可以通过语音控制家中的电器、窗帘、台灯,通过智能词典笔,可以识别翻译各种外语,通过添添旋转屏可以K歌、刷短视频、点外卖、在线支付等。小度这四款硬件科技,将百度APP智能搜索、百度健康医典、AI智慧社区等一些列内容沉淀与技术积累集合在一起。这一系列的硬科技的背后,延续了一句传统的老话,“科技以人文本”。值得注意的是,这一系列的硬科技产品的“爆发式”发布,绝非一蹴而就,严格来说,这是百度在AI领域持续投入超过十年的一次检验。百度的案例预示着,产业互联网是软硬结合的。互联网未来是产业基础,云计算+AI有人说,互联网的未来是云与智能,将两者的结合,可能就是AI。百度世界大会前一天,2021年8月17日,国务院签署并公布了《关键信息基础设施安全保护条例》,该条例与《网络安全法》相呼应,一系列法规的制定和执行落地,预示一点:互联网已经成为国民生活和国民经济的基础设施。这也意味着,云计算将是基础之一,在云计算的基础上,则是AI智能。云计算是对产业数字化的支撑,人工智能则是加速产业的智能化升级,“赋能千行百业”。云计算市场是目前国内一众科技企业中竞争最为激烈的,国际市场上有亚马逊、微软、阿里云、Google,国内除了阿里云,还有腾讯、华为。百度云起步较阿里云稍晚,但这并不妨碍它的后发优势。前不久百度公布了2021年第二季度财报, 云计算的增长尤为抢眼,它保持了同比71%的增速,领跑中国云计算市场,跻身第四。从2018年到2020年,百度云智能服务收入分别为30亿、64亿和92亿,按照71%的增速,今年将突破150亿元大关。百度云的“后发优势”,是云计算与AI的结合,百度采用了“AI云”作为标识与其他公有云做区别。可以将“AI云”看作是,“数字化底座”+“智能化引擎”的结合,这也意味着,AI云能够在制造、能源、城市、金融、医疗、媒体等领域,给客户数字化转型和智能化升级一步到位。体现在财务上,也许是,“AI云”毛利要远高于公有云。今年的百度世界大会,主题是“AI这时代,星辰大海”,李彦宏在直播中说,“AI,也是爱,是技术和温度结合在一起。”,“让每一个人都感受到技术带来的改变,这就是技术的价值”。AI的发展,一方面是融入到每个人的衣食住行,变得触手可及,另一方面则是产业智能化升级赋能。消费互联网与产业互联网的升级,体现在这一次百度发布的“百度大脑7.0”,百度大脑融合创新,降低门槛的优势。在泉州,百度为泉州水务搭建了“水务大脑”,百度智能云提供的AI用水量预测模型可结合历史用水数据、天气、季节等变化因素,精准预测用水量,实现按需供水。同时,加压泵站精准调压应用,通过分析运行工况,可动态调整泵站流量、压力、频率等参数,大大降低泵机功耗,科学准确调控水压。在新疆,艰苦的人力电力巡检工作也正在被百度AI代替。机器设备将拍摄的影像资料传回,通过AI技术可以快速判断线路是否存在故障,这样巡检效率得到了大幅提升,与此同时,巡检工人的工作环境也得到巨大改善,保障了边疆人民千家万户的用电安全。应该说,产业互联网是千行百业拥抱互联网,也是AI商业化的标志。透过这次百度世界大会,我们看到百度AI的商业化步伐明显加快,AI远比我们所预想的更快进入落地周期,与此同时,随着国内数字新基建的开启,有更早AI布局和更久技术沉淀的企业将在新的周期里全面提速。告别路径依赖,未来从畅想变现实随着滴滴因数据问题受到调查,新一轮的移动出行大战也上演了。与其他互联网不同的是,移动出行网约车大战,被认为是互联网改造传统行业的先声。这一轮出行大战,如高德、美团、T3等也重复着历史,延续了往日滴滴最为成功的补贴方式。很多互联网从业者未曾想过,这种疯狂烧钱的补贴,也是今天互联网备受争议和指责的原因之一。黄奇帆曾说,当前消费互联网领域的四个问题是:烧钱扩规模以取得行业垄断,利用人性弱点设计产品,利用垄断地位采集信息侵犯隐私,互联网杀熟。烧钱扩规模的前提是构建在存量市场。互联网的下一阶段,产业互联网这种烧钱扩大规模的方式或许不在适用,真正应该做的,是寻求产业的增量和效率最大化。如果将滴滴为代表的移动出行视为产业互联网的先声,那么出行领域的未来一定是更为智能的自动驾驶。财报分析师会议上,李彦宏确认,百度最新的robotaxi的软硬件系统,实现了60%的成本骤降,并且有望最快在2025年低于网约车。截至2021年上半年,百度Apollo自动驾驶出行服务已累计接待乘客超过40万人次,测试里程超过1400万公里,自动驾驶专利数量达3000件。李彦宏曾经分享过“3,30,3000”计划,即3年、30城、3000辆Robo Taxi,这是一个循序渐进的过程。从滴滴出行到百度的未来驾驶业务,我们可以看出,产业互联网与消费互联网的本质差异:滴滴为代表的移动出行,更多的是通过互联网的手段,做交易信息的匹配;未来的驾驶业务,则是在交易信息匹配的基础上,做更多产业端的供给侧结构性改革——通过智能化、数据化方式,降低供给侧的成本,提升消费端的体验和效率。百度的“汽车机器人”就是建立在Robotaxi技术和运营沉淀基础上,除了惊艳的“汽车机器人”,更让大众兴奋的可能是,百度发布的无人车出行服务平台——“萝卜快跑”。“萝卜快跑”并不是简单的为“Robotaxi”赋予一个中文名字这么简单,更为重要的是,Robotaxi象征着概念、研发和技术沉淀,“萝卜快跑”则意味着,经过8年发展,百度Apollo已经从技术验证阶段进入到规模化商业运营阶段。IHS 报告显示,预计整个共享出行市场的市场规模在2030年将达到2.25万亿元人民币,复合增长率在20% - 28%之间。在共享出行市场中,Robotaxi将占到60%以上,市场规模超过1.3万亿。这也意味着,未来出行市场将转向无人车服务场景。造车新势力与网约车激战的当下,萝卜快跑的上线显得格外有意义,这意味着,自动驾驶下半场的角逐已经开启,规模化商业运营成为行业发展的重点,这也是对传统网约车赛道的一次换道超越。百度Apollo在过去两年,分别在北京、长沙、广州、沧州四个城市运营,目前也增获25个城市的运营牌照,距离30城的计划又进一步。萝卜快跑的上线,随着城市、乘客、公里数的不断增加和累积,也会进一步优化百度汽车机器人的迭代和升级。也就是说,萝卜快跑兼顾了科技的商业现实和未来畅想。
文章
人工智能  ·  自然语言处理  ·  自动驾驶  ·  安全  ·  机器人  ·  语音技术  ·  云计算  ·  计算机视觉  ·  AI芯片
2022-06-10
阿里云智慧高速解决方案 让高速公路出行更安全、更畅通、更舒心
阿里云智慧高速解决方案让高速公路出行更安全、更畅通、更舒心——李豪(里豪)阿里云高级产品专家 截至2021 年底,我国高速公路总里程突破 16 万公里,国家高速公路网已基本建成,覆盖 99% 城镇人口。然而目前我国高速公路在管理运营中依然存在一些痛点:首先,交通安全问题突出,交通事故频发;第二,智慧管控手段不足,大多依靠表格化的 OA 系统;第三,管理运营水平不高,主要流程依靠人为推动发现;第四,公众出行体验较差,交通拥堵事件频发。针对对智慧高速的发展,政府在近几年密集地推出政策方面的支持,包括 2018 年,各省交通厅以及交通部的办公厅都相继推出了加快推进新一代国家交通控制网和智慧公路试点项目;2019 年高速公路网完成了撤站改造,基本实现了收费一张网;2020 年,随着自动驾驶相关技术的不断成熟,在智慧高速上,车路协同项目也不断涌现;2021 年,在国家综合立体交通网规划纲要里,明确对智慧高速发展的顶层设计以及实施方案提出了具体的要求。基于以上政策背景以及行业诉求,阿里云于 2017 年推出了智慧高速解决方案,并在 17 年和 18 年一些试点项目上进行了验证。目前,智慧高速解决方案既可以满足普通路段的智慧化改造需要,也可以满足诸如智慧高速示范项目以及车路协同示范项目建设的需要,同时还可以满足省级交通运行监测需要。上图为阿里云智慧高速解决方案架构。最底层是传统的感知设备以及控制设备。感知设备包括气象感知、新型的雷氏设备以及管理运营设备。云的 IaaS 层主要为阿里云的公共云以及专有云,也包括轻量化部署的大数据体积。核心层是交通云 PaaS 层-交通云控平台,由下至上可以分为如下几层:① 高精、标精统一路网:首先将高德路网的基础路网数据与高速公路管理的里程碑、百米桩数据结合,形成了高精、标精统一的可计算路网。② 数字化还原:基于路网实现了动态数据和静态数据的数字化汇聚以及还原,既包括了视觉、非结构化数据结构化的能力、 AI 的能力,也包括了结构化数据融合的能力。其中数据融合负责将互联网数据与交通运行管理中的数据进行融合,比如对平均车速等数据进行融合以提升路况实时监测的精度,也包括交通运行智能化的数据分析算法。另外,针对地图数据,可以提供二、三维统一化的地图引擎支持。③ 智能运控:重点实现了交通管理中智能化交通运行的控制,主要包括三大能力:a. 交通优化:可以根据交通事件推荐不同的交通管理方案。b. 仿真预演:通过交通仿真,对交通事故产生的影响进行评估,同时可以预测节假日的交通流量。c. 出行服务:与高德地图打通,将交通管理运营中的事件以及管控信息实时推送至高德地图 C 端体系,提升公众出行服务的体验。④ 智行通/数字平行世界:构建了三维数字平行世界,可以完整地展示智慧高速建设的核心成果、数字化成果以及智慧化能力。    交通云控平台是 PaaS 层,能够提供丰富的 API 能力,为生态伙伴构建智能化应用提供重要支撑。目前我们已经联合行业内多家生态伙伴,推出了面向高速公路管理运营的各种智慧化应用,包括交通态势的监控、事件处置的联启联动、公众的信息服务、设备化的智能运维、专业的收费稽核、路网的运行监测以及应急指挥等。核心能力1-视觉AI感知视觉 AI 主要是对视频进行分析,包括交通参数检测以及事件检测。其中交通参数检测既包括简单的停车、行人逆行等,也能提供一些复杂的检测算法,比如交通事故检测、抛洒物、道路施工检测以及异常气象检测。目前平台支持的交通事件检测能力已超 20 种。相较于行业内的视觉 AI 能力,阿里云视觉 AI 具有以下三个特点:第一,支持多种摄像机的检测。包括普通的枪机摄像机、球机摄像机,且在球机摄像机里,不但可以支持球机的预置位检测,还可以支持任意位置的检测。摄像机转到任意位置后,都能主动判断道路的边界,同时自动产生检测区域以及检测参数,满足高速公路上各种摄像机检测的 AI 需求。第二,支持交通事故的检测。传统的算法更多地会将交通事故处理为停车,对交通事故的及时发现处置存在一定的障碍。随着近几年在各种场景的积累,阿里云形成了视觉 AI 的交通事故场景库,包括单车碰撞、车辆侧翻、车辆追尾以及多车碰撞等。通过特征库能够快速识别事故类型,提升交通事故主动发现的概率并缩短交通事故的处理时间。第三,从单纯的视觉检测升级到了视觉推理,主要表现在三个方面:① 事件的融合:可以通过时间空间以及业务逻辑等约束对事件产生的报警进行过滤融合,将每日报警数从此前的千次降低至百次,尽量保证上报事件都是监控员所关心的,极大降低了工作量。② 特殊车辆跨摄像机路径还原以及轨迹还原:结合高清地图,实现车辆在单摄像机里轨迹(经纬度)还原。③ 针对业务场景的特殊检测:比如在施工场景里,可以区分施工车辆、施工人员,可以识别施工的进场时间、撤场时间。将上述信息提取后再结合实际的业务诉求,可以产生更精准的报警,更贴近实际业务使用的需求。核心能力2-交通优化视频主动发现异常交通事件后,可以针对这些事件主动推荐管控方案。目前交通云控平台可以支持高速公路场景下 16 类场景及 120 多种交通管控方案的主动推荐,同时支持多种设备的直接控制,包括情报板、雾灯、收费站、风机、照明、车路协同 RSU 设备等。此外,针对情报板,可以提供符合国标并且有实际下发经验的图片库进行编辑。针对新的业务场景,可以提供配置工具来配置策略库,再通过模拟的方式来确保策略库的真实可靠。上图为交通优化功能针对交通事故推荐的管控方案。首先,在交通事故区,推荐进行车道封闭以及限速提醒。在事故区的上游,设置换道提示区,并提示事故的信息以及限速信息,避免司机进入事故区之后换道造成二次事故的发生。在更远处设置警告区,对车辆进行事故提醒以及降速提醒。所有管控方案都会通过高德地图直接推送到高德地图 C 端,在导航过程中对司机进行相提示,以提升出行体验,同时还可以通过高德地图提升管控方案的触达范围以及效果。核心能力3-仿真预演阿里云的交通仿真技术始于 2016 年,完全由阿里云自主研发,拥有完全的自主知识产权。目前已经在高速公路、城市交通进行了广泛试用,相较于行业内的交通仿真软件,它有三个特点:① 微中宏观一体化:不但可以输出单车的行为、速度、轨迹,也可以输出路网的平均速度、拥堵指标。② 仿真与业务深度融合:不只提供交通仿真工具,更重要的是将交通仿真能力与实际的业务系统融合在一起。比如在高速公路上,发生一起交通事故之后,可以通过仿真能力实时对交通事故造成的影响进行仿真预演,并接入实时的交通流量数据,仿真结果更准确。③ 云原生的能力:仿真引擎直接以云原生的技术进行开发。如遇大场景、大路网或高密度车辆,可以通过云资源的计算扩容来支撑,仿真预演可以实现准实时的性能。上图为实际仿真预演案例。发生交通事故之后,可以对通过仿真对交通事故造成的影响进行评估,预估交通事故在多长时间内会造成什么样的拥堵范围。再根据拥堵范围,通过交通优化的能力,推荐相应的交通管控方案,包括收费口的关闭、收费口的限流,也有通过诱导分流的方式对拥堵路段上游进行诱导,同时还包括分阶段的限速以及车道管控。推荐出管控方案之后,再通过仿真预演的能力,对管控方案进行提前预演,预测方案能否达到预期的效果。核心能力4-出行服务出行服务主要包括路侧统一控制、互联网出行服务和智能车联网。可以通过路侧统一控制提升传统机电设备的控制效果;也可以联动互联网的出行服务以及智能网联车服务,比如直接打通高德导航、钉钉以及支付宝等阿里系 C 端;可以将信号灯态、道路事件、拥堵状况等方案直接推送至车载 ADS。通过出行服务,可以更好地将高速公路的事件信息、交通管控信息触达到 C 端,提升交通事件的预警以及管控效果。交通云控平台是一个开放的 PaaS 平台,通过 API 的方式,为生态伙伴提供丰富的智能化能力支撑,构建更智慧化的应用。 阿里云与生态伙伴一起共建 SaaS 应用侧,在共建过程中有平台的入驻、开发业务应用的测试以及及项目的交付,通过工具化、流程化的机制来保证合作方伙伴开发的 SaaS 应用产品质量,保障项目交付的质量和效率。从 16 年开始,交通云控平台共建的模式已经沉淀了非常多案例。智慧高速解决方案典型案例1-成宜高速成宜高速是四川省的交通强国示范项目。这是一条新建的高速,总投资 246 亿,全长 157 公里。阿里云承建了智慧高速标段的所有建设内容,包括五个方面:① 全程 157 公里的雷视融合全息感知:阿里云提供了雷视融合感知方案以及算法,实现了全国第一条雷视融合全覆盖且成本最优的方案。② 交通云控平台建设:实现了互联网数据、交管数据、收费数据以及养护数据等多部门数据的融合,通过数据融合挖掘高速公路管理运营过程中的数据价值。③ 数字平行世界:实现了全路段及周边环境 3D 场景的 1:1 还原,全量动、静态数据的实时叠加展示,完全充分地展示了成宜高速智慧化、数字化的能力。④ 广义 V2X:不但实现了 RSU 全覆盖,同时结合高德地图实现了车道级的导航以及信息主动诱导。⑤ 主动交通管控:实现了从事故处置一路三方到交通管控方案的自动推荐及一键控制。智慧高速解决方案典型案例2-杭州湾大桥杭州湾大桥是浙江省交通强国示范项目。它是一座处于运营期的大桥,全长 36 公里,是世界第三大跨海大桥,高峰期流量超 10 万辆次。项目实现了 96% 异常交通事件的主动发现以及主动管控。通过平行世界实现了真实世界与虚拟世界的映射。通过在虚拟世界里对交通设备以及交通方案的管控,来影响真实世界交通的运行,提升杭州湾大桥的交通事故处置效率以及安全运行水平。目前在全国已建的 13 个交通强国试点智慧高速公路项目中,阿里云参建 6 个。数字高速覆盖 14 省,里程覆盖范围占全国高速公路16.9%。同时,我们的视频 AI 技术连续在三地技术比试中取得第一。与此同时,数字融合感知以及数字孪生等技术已经在多个全国示范项目落地,并且获得了充分认可。期待与大家共创智慧高速的美好未来,为构建更安全、更畅通、更绿色的智慧高速一起努力。 
文章
人工智能  ·  监控  ·  算法  ·  安全  ·  Cloud Native  ·  自动驾驶  ·  物联网  ·  专有云  ·  定位技术  ·  API
2022-06-10
破壁人AI百度:科技公司反内卷的典型样本
内卷背后也有人感慨,互联网到了尽头。支撑这一论述的是,移动互联网的人口红利已经消失,几款国民型APP用户增长都固定在了10亿这个级别,只能依靠自然人口的增长和迁移。这一幕如同刘慈欣小说《三体》里所描述的,智子封锁的地球科技一样,被信息干扰,或引导至错误方向发展,困在原地,做困兽之斗,无法自拔。“内卷论”与“尽头论”的流行,让我们看到,中国科技产业尤其是互联网,需要自己的“破壁人”计划,突破封锁,尤其是跳出原有的路径依赖。我们不应该只是一味的看到消费互联网的互联网产业,却不见更为广阔的产业互联网未来。科技的未来,不是消费互联网,而是产业互联网。黄奇帆在中国互联网大会上斩钉截铁地说,“今后十年是产业互联网时代”。互联网的未来是产业互联网,产业互联网的价值以及远景是怎样的?2021年8月18日的百度世界大会,告诉我们关于未来的某些可能性,从某种意义上来说,百度正在扮演着中国科技的“破壁人”角色。硬科技背后需要软实力沉淀和积累百度世界大会,是百度公司的一个传统,这既是百度向公众披露其运营和战略的路演,也是公众了解百度的一个窗口。2021年的百度世界大会与以往最大的不同,可能是,这一次百度发布了更多的“硬科技”产品。比如惊艳一时的百度汽车机器人,比如温情脉脉的小度智能巨屏电视、小度智能词典笔、小度主动降噪智能耳机Pro、添添旋转智能屏,以及宣布量产的百度第二代昆仑AI芯片“昆仑芯2”。一致的行业现象是,科技企业都在逐渐从它们软件的实力向硬件渗透。百度这些“硬科技”的背后,是其软件实力的支撑。比如,百度的“汽车机器人”,它需要多重能力:首先具备L5级别自动驾驶能力,不仅无需人类驾驶,而且比人类驾驶更安全;其次具备语音、人脸识别等多模交互能力,分析用户潜在需求,主动提供服务;此外,汽车机器人还具备自我学习和不断升级能力,是服务各种场景的智慧体。百度的这款“汽车机器人”已经达到了L5级别的自动驾驶,它是一辆没有方向盘汽车,这是自动驾驶的终极形态,无需人类驾驶的同时,还能有更多驾驶之外的服务。这也是命名“汽车机器人”的原因所在吧。又比如,小度发布的四款产品,是百度AI人格化和服务化两大发展方向上各种技术沉淀和积累的集中展现。譬如语音识别技术,百度的语音识别技术准确率达到了98%,甚至超过人耳水平。这四款是将语音识别技术、百度AI等与智能生活结合,针对不同场景开发的产品,用户可以通过语音控制家中的电器、窗帘、台灯,通过智能词典笔,可以识别翻译各种外语,通过添添旋转屏可以K歌、刷短视频、点外卖、在线支付等。小度这四款硬件科技,将百度APP智能搜索、百度健康医典、AI智慧社区等一些列内容沉淀与技术积累集合在一起。这一系列的硬科技的背后,延续了一句传统的老话,“科技以人文本”。值得注意的是,这一系列的硬科技产品的“爆发式”发布,绝非一蹴而就,严格来说,这是百度在AI领域持续投入超过十年的一次检验。百度的案例预示着,产业互联网是软硬结合的。互联网未来是产业基础,云计算+AI有人说,互联网的未来是云与智能,将两者的结合,可能就是AI。百度世界大会前一天,2021年8月17日,国务院签署并公布了《关键信息基础设施安全保护条例》,该条例与《网络安全法》相呼应,一系列法规的制定和执行落地,预示一点:互联网已经成为国民生活和国民经济的基础设施。这也意味着,云计算将是基础之一,在云计算的基础上,则是AI智能。云计算是对产业数字化的支撑,人工智能则是加速产业的智能化升级,“赋能千行百业”。云计算市场是目前国内一众科技企业中竞争最为激烈的,国际市场上有亚马逊、微软、阿里云、Google,国内除了阿里云,还有腾讯、华为。百度云起步较阿里云稍晚,但这并不妨碍它的后发优势。前不久百度公布了2021年第二季度财报, 云计算的增长尤为抢眼,它保持了同比71%的增速,领跑中国云计算市场,跻身第四。从2018年到2020年,百度云智能服务收入分别为30亿、64亿和92亿,按照71%的增速,今年将突破150亿元大关。百度云的“后发优势”,是云计算与AI的结合,百度采用了“AI云”作为标识与其他公有云做区别。可以将“AI云”看作是,“数字化底座”+“智能化引擎”的结合,这也意味着,AI云能够在制造、能源、城市、金融、医疗、媒体等领域,给客户数字化转型和智能化升级一步到位。体现在财务上,也许是,“AI云”毛利要远高于公有云。今年的百度世界大会,主题是“AI这时代,星辰大海”,李彦宏在直播中说,“AI,也是爱,是技术和温度结合在一起。”,“让每一个人都感受到技术带来的改变,这就是技术的价值”。AI的发展,一方面是融入到每个人的衣食住行,变得触手可及,另一方面则是产业智能化升级赋能。消费互联网与产业互联网的升级,体现在这一次百度发布的“百度大脑7.0”,百度大脑融合创新,降低门槛的优势。在泉州,百度为泉州水务搭建了“水务大脑”,百度智能云提供的AI用水量预测模型可结合历史用水数据、天气、季节等变化因素,精准预测用水量,实现按需供水。同时,加压泵站精准调压应用,通过分析运行工况,可动态调整泵站流量、压力、频率等参数,大大降低泵机功耗,科学准确调控水压。在新疆,艰苦的人力电力巡检工作也正在被百度AI代替。机器设备将拍摄的影像资料传回,通过AI技术可以快速判断线路是否存在故障,这样巡检效率得到了大幅提升,与此同时,巡检工人的工作环境也得到巨大改善,保障了边疆人民千家万户的用电安全。应该说,产业互联网是千行百业拥抱互联网,也是AI商业化的标志。透过这次百度世界大会,我们看到百度AI的商业化步伐明显加快,AI远比我们所预想的更快进入落地周期,与此同时,随着国内数字新基建的开启,有更早AI布局和更久技术沉淀的企业将在新的周期里全面提速。告别路径依赖,未来从畅想变现实随着滴滴因数据问题受到调查,新一轮的移动出行大战也上演了。与其他互联网不同的是,移动出行网约车大战,被认为是互联网改造传统行业的先声。这一轮出行大战,如高德、美团、T3等也重复着历史,延续了往日滴滴最为成功的补贴方式。很多互联网从业者未曾想过,这种疯狂烧钱的补贴,也是今天互联网备受争议和指责的原因之一。黄奇帆曾说,当前消费互联网领域的四个问题是:烧钱扩规模以取得行业垄断,利用人性弱点设计产品,利用垄断地位采集信息侵犯隐私,互联网杀熟。烧钱扩规模的前提是构建在存量市场。互联网的下一阶段,产业互联网这种烧钱扩大规模的方式或许不在适用,真正应该做的,是寻求产业的增量和效率最大化。如果将滴滴为代表的移动出行视为产业互联网的先声,那么出行领域的未来一定是更为智能的自动驾驶。财报分析师会议上,李彦宏确认,百度最新的robotaxi的软硬件系统,实现了60%的成本骤降,并且有望最快在2025年低于网约车。截至2021年上半年,百度Apollo自动驾驶出行服务已累计接待乘客超过40万人次,测试里程超过1400万公里,自动驾驶专利数量达3000件。李彦宏曾经分享过“3,30,3000”计划,即3年、30城、3000辆Robo Taxi,这是一个循序渐进的过程。从滴滴出行到百度的未来驾驶业务,我们可以看出,产业互联网与消费互联网的本质差异:滴滴为代表的移动出行,更多的是通过互联网的手段,做交易信息的匹配;未来的驾驶业务,则是在交易信息匹配的基础上,做更多产业端的供给侧结构性改革——通过智能化、数据化方式,降低供给侧的成本,提升消费端的体验和效率。百度的“汽车机器人”就是建立在Robotaxi技术和运营沉淀基础上,除了惊艳的“汽车机器人”,更让大众兴奋的可能是,百度发布的无人车出行服务平台——“萝卜快跑”。“萝卜快跑”并不是简单的为“Robotaxi”赋予一个中文名字这么简单,更为重要的是,Robotaxi象征着概念、研发和技术沉淀,“萝卜快跑”则意味着,经过8年发展,百度Apollo已经从技术验证阶段进入到规模化商业运营阶段。IHS 报告显示,预计整个共享出行市场的市场规模在2030年将达到2.25万亿元人民币,复合增长率在20% - 28%之间。在共享出行市场中,Robotaxi将占到60%以上,市场规模超过1.3万亿。这也意味着,未来出行市场将转向无人车服务场景。造车新势力与网约车激战的当下,萝卜快跑的上线显得格外有意义,这意味着,自动驾驶下半场的角逐已经开启,规模化商业运营成为行业发展的重点,这也是对传统网约车赛道的一次换道超越。百度Apollo在过去两年,分别在北京、长沙、广州、沧州四个城市运营,目前也增获25个城市的运营牌照,距离30城的计划又进一步。萝卜快跑的上线,随着城市、乘客、公里数的不断增加和累积,也会进一步优化百度汽车机器人的迭代和升级。也就是说,萝卜快跑兼顾了科技的商业现实和未来畅想。
文章
人工智能  ·  自然语言处理  ·  自动驾驶  ·  安全  ·  机器人  ·  语音技术  ·  云计算  ·  计算机视觉  ·  AI芯片
2022-06-10
面向开发者的 AI:是未来还是现实?
人们在日常生活和工作中越来越多地接触到 AI。JetBrains是一家为程序员开发工具的公司,我们认为软件开发行业也处在这样的趋势中。AI 的两种用途:取代人类,完全自动化他们的一些工作。增强人类,帮助他们保持关键地位。算法已经能够自己编写代码了,但人类开发者不需要担心会立即被取代。之所以这么说,并不是因为人类不可能教会计算机取代程序员所需的技能,而是因为这是不切实际的。限制 AI 发展的三大因素:有限的训练数据可用性。有限的计算资源。算法和人类之间接口的复杂性。为了增强人类程序员的工作,许多普通的任务,如代码补全、代码搜索和错误检测,现在都通过机器学习来提供帮助。图 1. AI 应用方法和每一种方法的困境人类如何看待 AI?当人们听到“AI”这个词时,他们通常会想到计算机将取代人类,与人类执行同样的任务,并比人类做得更好:更快、更便宜、质量更高,或者所有这些结合在一起。这类任务包括下象棋或围棋、写诗和开车。有些人希望计算机能够将他们从日常繁重的工作中解放出来,而另一些人则持怀疑态度。后者可能会声称:机器远不能与人类匹敌。比如,类似“你如何教会计算机做这些事情?”这样的话往往暗示着“你做不到”。以下是过去人们提出的一些类似的疑问:围棋的合理步数超过了可用的计算资源。你如何取代人类的直觉?在这篇 1997 年发表的文章中,专家估计这需要一百年时间。你如何让一辆自动驾驶汽车看到潮湿的路面并减速?计算机已经会玩围棋和开车了,所以这些问题现在已经过时了。这让我们有理由相信,这类仍然悬而未决的问题最终也会得到解答。无论是哪个专业领域,计算机比我们大多数人认为的更接近人类的技能。然而,取代人类并不是权宜之计。AI 开发者不会与人类展开竞争,他们会选择不同的产品策略,尝试使用算法来增加程序员的工作,提高他们的生产力。在软件开发领域,我们已经清楚地看到 AI 可以执行人工任务,也可以增加程序员的工作。取代人类程序员GitHub Copilot(由 OpenAI 提供支持)的发布再次激起有关计算机何时或是否将取代人类程序员的讨论。那些认为计算机不可能取代人类的怀疑论者总是会问:你如何向机器解释你的程序应该做什么?答案很简单。你可以使用自然语言定义你想要的内容,为函数提供一个名字,并(可选地)编写几行代码来启动函数。Copilot 会填补余下的内容,就像一个真正的程序员一样。有些人对智能的 Copilot 感到很满意,有些人则会抓住它的小问题,并认为这些问题足以表明在可预见的未来仍然需要人类程序员。还有一群人也注意到了同样的问题,但得出的结论是:Copilot 是一个可怕而危险的工具,所以不应该去碰它。他们所指的主要缺陷是什么?Copilot 生成的代码通常很冗长,难以阅读。代码清晰度很重要,因为对于开发人员来说,读代码比写代码更重要。在大多数情况下,程序员需要在已有代码(通常是其他人编写的)的基础上添加新功能。对于这种情况,写代码就像是给老房子增加一个新房间。你必须确定增加新房间是否会破坏平衡并导致整座房屋倒塌。如果它是安全的,你仍然需要了解现有的房屋结构,并加以修改,以便在其上增加新房间。程序员的大部分时间就是在“现有房屋”上增加“新房间”。R. Minelli、A. Mochi 和 M. Lanza发现,程序员花在理解代码上的时间大约占 70%,而写代码只占大约 5%。基于此类研究,我们可以看到开发人员工作时间的分布,如图 2 所示。图 2. 程序员在工作中花费的时间,按活动分类冗长和含糊不清的机器生成代码可能会让本已难以理解的部分更加晦涩难懂。人类的认知负载仍然存在:程序员仍然需要理解算法。计算机设定的节奏人类能保持多久?让 AI 来编写代码可能会加快处理小任务的速度,但不一定会加快大型项目的速度。我们将其与上世纪 70 年代出现的版本控制系统做一下对比。追踪和回退变更的能力极大地扩大了人们理解代码的范围,使大型团队合作成为可能,也因此可以开发出更复杂的系统。这是整个行业的变革。Copilot 是展示 AI 潜力的一项优势的研究成果。它做到了许多人认为不可能的事情。然而,我们并不指望这些工具能够在短期内重新定义程序员的职业。帮助人类程序员虽然 Copilot 是 AI 领域的一项与编程相关的突破,但它既不是行业革命,也不能取代人类工作。请记住,这样的变革可能会在某一时刻发生,但我们仍然需要继续改进现有的软件开发过程。帮助程序员更有效地执行小任务是 AI 的一个广阔的应用领域。软件开发人员使用的工具通常有严格的规则(“启发式”),但没有 AI 的成分。随着每个工具提供越来越多的功能,规则变得越来越复杂。最终,人类不可能理解所有东西,也不知道如何改变工具,而这恰恰是 AI 可以提供帮助的地方。代码补全当你在谷歌搜索输入框输入搜索关键字时,它会向你建议完整的搜索选项。源代码编辑器为程序员提供了类似的功能。代码补全的第一个版本出现在很久以前,可能是在某某世纪,主要是通过计算项目中出现的单词的频率来实现的。它们根据用户输入的开头字符显示出现频率最高的单词。这种基于频率的方法还不错,可以提高工作效率。多年来,人们在频率的基础上使用了一些启发式算法来改进补全建议,但为了精确地提供用户想要的单词,我们使用机器学习对补全建议进行排序。因为用来确定最佳补全建议的信息太过丰富,所以我们不可能创建出一个将所有这些都考虑在内的确定性算法。我们不得不处理很多特殊情况。例如,根据一般性规则,标记的定义与程序员当前编辑的位置越接近,就越有可能是这个标记。而且,标准语言库可以按流行程度排序,流行程度最低的库的标记将被剥夺优先级。综上所述,假设你用 Java 开发了一个源代码编辑器(我们在 JetBrains 就是做这个的),并输入“Co”。以下两个建议你会选择哪一个?一方面,我们确实在编辑器中使用了红黑树。另一方面,java.awt 包在行业中很少被使用。但是,在我们的项目中,“Color”很可能是指 java.awt.Color。影响补全建议排序的因素有成百上千个。补全建议是用户项目中定义的符号、标准语言库还或导入的第三方库?补全建议插入的地方是在一行的开头还是中间?在这个位置前面有没有点号?用户平均每天工作多长时间?他们现在是否在另一个编辑器标签中打开了补全建议的定义?借助机器学习,我们可以用半自动化的方式提取模式,在不可能明确列出所有依赖关系的情况下将所有这些因素都考虑在内。更进一步,我们还可以使用 AI 生成较小的代码片段。如果编辑器可以补全一整行,而不是一个单词,那么在开发速度和认知负载之间就有了一个很好的权衡:图 3. 一个代码补全的例子。不只是建议一个单词一些公司将这一功能作为其业务的核心。例如,TabNine和Kite将他们开发的软件作为编辑器插件发行,帮助程序员“以 AI 的方式”补全代码行。教用户使用新功能源代码编辑器是一种复杂的软件,程序员可以执行数以百计的操作来提高生产力。可惜的是,程序员不可能了解所有这些操作。我们可以在编辑器启动时显示提示,但要在使用编辑器时回想这些提示可能很困难。程序员通常有 50 多个最喜欢使用的命令。有了智能提示,我们可以根据用户的工作模式和习惯为他们提供两到三个特别有用的操作。AI 可以用来创建这些个性化的建议。例如,当且仅当程序员经常在同一个屏幕中执行剪切和粘贴操作时,我们就可以告诉他们如何更好地进行代码移动操作:图 4. “代码移动”操作提示实现这个特性最直接的方法是使用“协同过滤”。音乐、视频、书籍和商品等现代推荐系统都在使用它。它有两个基本的步骤:找到与指定用户“相似”的用户。找出这些用户做了哪些指定用户还没有做的事情,并根据这些差异给出建议。对于内容推荐,找到相似的用户是相当简单的:如果我们的目标用户与其他一组人喜欢相同的 10 部电影,但没看过这个组中所有人都喜欢的电影,那么推荐这部电影就一个相当安全的押注。唯一需要注意的是要避免那些几乎每个人都给予正面评价的超级受欢迎的电影。喜欢《教父》或《阿甘正传》并不代表用户的喜好。对于源代码编辑器,就有点困难了。因为没有相同类型或相同演员的特征,我们必须分析较小的行为模式。用户花了多少时间调试?他们多久编辑一次已有的代码?他们打字有多快?他们是在编写代码之前还是之后编写测试用例?将这些因素都考虑在内,就可以确定用户之间的相似性,并根据已知的行为模式推荐有用的工具。搜索代码搜索是许多软件产品(从 Web 搜索引擎到在线商店)都存在的一个功能。源代码编辑器也有这个功能:开发人员经常需要在他们的代码、文档和工具配置选项中搜索一些东西。这些信息属于不同的类型,用户需要在开发工具的不同位置来搜索它们。我们希望在源代码编辑器中提供一个统一的搜索功能,用于查找上述的任意一种信息,并把同义词和拼写错误考虑在内。因为有很多人致力于研究搜索算法,人们希望存在一个标准的可重用解决方案,但是,每个领域都有自己的特点,所以需要单独开发搜索功能。当项目中不同类型的信息具有相似的名字时,复杂性就出现了。当用户在搜索框中输入“format”,并他们的项目中有一个名为 Formatter.java 的文件,那么他们是在查找这个文件还是在查找标准格式库函数,抑或是查找可以格式化代码的 IDE 功能?机器学习将不同来源的搜索结果混合在一起并进行权衡。影响决策的因素包括文本匹配、用户的搜索历史和他们以前的偏好(例如,他们曾经点击过文件搜索结果吗?)、用户项目的内容,以及用户在进行搜索之前所编辑的内容。开发一个可以考虑所有这些因素的确定性算法看起来是不可行的,而机器学习可以自动提取其中的模式。AI 的权衡将所有 AI 为用户生产力带来的微小改进加在一起,可以带来令人印象深刻的整体提升。然而,这是有代价的。基于 AI 的系统在大多数情况下运行良好,但在某些情况下也会提供奇怪的结果。向用户提供这样的结果会失去一些用户的信任。每次用 AI 驱动的决策系统取代严格的规则时,我们都必须决定是否要做出权衡。我们可以提高平均决策质量,但也可能会失去一些用户的信任。如果能建立一个完美无瑕的系统,不会因为糟糕的建议而失去用户的信任,那当然很好,但要做到这一点,还存在一些障碍。通往完美 AI 道路上的障碍训练数据不可用许多机器学习算法在训练阶段需要样本数据,而且数据集的质量至关重要。通常,我们知道需要获取哪些数据,但获取这些数据要么代价高昂,要么是非法的。代码生成任务(无论是 IDE 的自动补全还是用 Copilot 生成整个功能)需要有用于训练的源代码,那么使用 GitHub 上的开源代码库似乎是很自然的事。然而,这些代码库有许可方面的限制,这些许可可能对衍生品有额外的要求。这给我们留下了两大问题:我们的 AI 算法是从我们用来训练它的代码衍生出来的吗?这个算法生成的代码是衍生品吗?一方面,AI 算法作者并没有将任何内容复制到算法中。另一方面,神经网络不能独立思考。它生成的所有代码都是它在学习阶段看到的片段的组合。它甚至可以生成看起来与训练数据集完全相同的代码片段。关键是,即使看起来独立的代码片段也并不比复制品更独立。这是个新问题,我们还没有看到任何法律方面的裁决。这种不确定性让产品开发人员小心翼翼:他们不希望在未来可能成为非法的东西上大举投入。我们在开发代码补全系统时也遇到了同样的问题。除了潜在的法律限制之外,还有技术上的困难。我们在开源代码库中找到的代码在某种意义上是“完整的”。它们通常都可以通过编译,可以通过简单的测试,格式清晰,不包含重复块或临时调试内容。然而,我们在编辑器中处理的代码大多数时候是不“完整”的。因此,我们从开源代码库中获得的训练数据与开发条件不匹配。我们通过使用来自我们产品的使用统计数据来解决这些问题。为了让这些数据完全匿名,我们做了很多努力,但最终一切都很顺利。你可以在 JetBrains 的这篇博文中了解更多的技术细节。这些只是人们在为 AI 算法收集训练数据时面临的几种示例情况。资源需求AI 算法非常渴求资源。这种渴求在学习和探索阶段有着不同的含义。资源限制在学习阶段给算法开发人员带来了额外的成本,他们需要决定是否在硬件方面投入。但在探索阶段,限制因素不是算法开发人员的资源,而是用户的资源。探索阶段的资源需求标准解决方案是将资源密集型计算转移到远程集群上。我们的客户通常希望将源代码保存在受保护的网络中,因此使用远程服务器通常是不可能的。这意味着我们的算法必须运行在用户电脑上的源代码编辑器中。编辑器提供了很多特性,并且已经消耗了相当多的资源,所以每个新分配的字节都不能随意浪费掉。普通软件开发人员和机器学习开发人员对资源的看法非常不同。下面的故事可以说明这种差异有多大。当我们第一次用机器学习取代基于规则的代码补全功能时,负责这项任务的团队将额外的内存需求减少到了 1.5MB。团队认为他们将内存需求降到了极致,并为此感到自豪。当其他人得知这件事时,他们的反应很有趣:与我们一起合作的 AI 研究人员说:“1.5MB?你一定是在开玩笑!至少 1GB 起步才行!”传统的工具开发人员在评审了这个变化后说:“1.5MB?为什么需要这么多?”研究人员通常假设资源是无限的,而产品必须运行在可用的硬件上。这就是为什么 AI 领域的突破性研究成果难以产品化的原因之一。AI 和用户之间的接口即使可以在远程执行,在远程服务器而不是客户的机器上运行 AI 也可能存在重大的可用性问题。任何延迟对用户来说都是无法忍受的,特别是对于非常小的事情。因此,在使用代码补全、功能推荐和其他 AI 驱动的特性时,绝对要杜绝到服务器的往返。即使速度足够快,AI 驱动的功能也必须无缝地融入到用户的工作流中,而不是分散用户的注意力。例如,我们可以给用户的代码找 Bug。乍一看,这似乎是用户可能会接受的功能,但要在正确的时间向用户报告 Bug 是一个巨大的挑战。当用户正在埋头写代码时提醒他们,只会分散他们的注意力,并可能导致他们禁用这个特性。我们必须抓住程序员已经完成了一大块工作那一刻,在他们处于想要检查代码是否有问题的精神状态下向他们报告 Bug。或许,我们可以用一个 AI 算法来决定何时展示另一个 AI 算法的结果?对未来的期待AI 正在进入软件开发领域,就像它进入其他领域一样,试图模仿人类并增强人类的工作能力。计算机现在可以写代码,但我们不认为这是一场行业变革。计算机写代码的能力不足以取代人类程序员。人类能够思考复杂的软件组件交互,这种思考能力是至关重要的,而 AI 还无法做到。不过,有很多东西可以使用机器学习来实现小的改进,把这些小改进累积起来,可以大大提高软件开发人员的工作效率。软件开发工具公司正在迅速发展将 AI 解决方案产品化的能力,因此,我们预计在不久的将来会出现更多这样的解决方案。作者简介:Nikita Povarov 是 JetBrains 的数据分析和机器学习团队负责人。他主要参与 ML 项目,在没有 A/B 测试的情况下为公司决策开发分析流程。自 2012 年以来,他一直是 JetBrains 计算机科学中心的讲师。2011 年至 2015 年,Nikita 在 Yandex 担任数据分析师,专注于 A/B 测试系统。
文章
机器学习/深度学习  ·  人工智能  ·  算法  ·  搜索推荐  ·  IDE  ·  安全  ·  自动驾驶  ·  程序员  ·  开发工具  ·  开发者
2022-06-10
深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)
作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/37本文地址:http://www.showmeai.tech/article-detail/271声明:版权所有,转载请联系平台与作者并注明出处收藏ShowMeAI查看更多精彩内容本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。引言ShowMeAI在前面的内容中给大家做了很多图像分类的介绍,主要围绕卷积神经网络(LeNet / AlexNet / NIN / VGG / Google / ResNet / MobileNet / squeezenet)讲解,但计算机视觉领域有其他一些更为复杂的任务,例如本篇开始介绍的目标检测(object detection)问题。1. 计算机视觉任务大家知道人工智能领域的3大热点方向是计算机视觉(CV,computer vision)、自然语言处理(Natural Language Process, NLP )和语音识别(Speech Recognition) 应用 。而计算机视觉领域又有图像分类、目标检测、图像分割三大任务,如下图所示这3大任务其实对应机器视觉理解图像的3个主要层次:1.1 图像分类(Classification)图像分类任务中,我们要将图像识别判定为某个类别。它是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。大家在前面也了解到了 ImageNet 这个权威评测集,每年的ILSVRC催生了大量的优秀深度网络结构,为其他任务提供了基础。有一些其他的应用,包括人脸识别、场景识别等都可以化归为分类任务来解决。1.2 目标检测(Detection)图像分类任务关心整体图片类别,而目标检测则关注特定的物体目标,要求在图片中,同时识别出目标物的类别信息和位置信息(是一个classification + localization的问题)。相比分类,目标检测任务要求我们需要从背景中分离出感兴趣的目标,并确定这一目标的描述(类别和位置),检测模型的输出形式通常是一个列表,列表的每一项使用一个数组给出检出目标的类别和位置(常用矩形检测框的坐标表示)。1.3 图像分割(Segmentation)图像分割包括语义分割(semantic segmentation)和实例分割(instance segmentation),前者是对前背景分离的拓展,要求分离开具有不同语义的图像部分(相当于像素级别的分类),而后者是检测任务的拓展,要求描述出目标的轮廓(相比检测框更为精细)。分割是对图像的像素级描述,它赋予每个像素类别意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割,医疗影像中对于不同区域的划分。1.4 总结图像分类对应将图像划分为单个类别的过程,它通常对应于图像中最突出的物体。实际现实世界的很多图像通常包含多个物体,如果仅仅使用图像分类模型分配单一标签是非常粗糙的,并不准确。而目标检测(object detection)模型可以识别一张图片的多个物体,并可以给出不同物体的具体位置(边界框)。目标检测在很多场景有用,如无人驾驶和安防系统。2. 常用目标检测(Object Detection)算法综述2.1 总体介绍常见的经典目标检测算法如下图所示:目标检测的基本思路是:解决定位(localization) + 识别(Recognition) 两个任务。一个大致的pipeline如下图所示,我们可以用同样的特征抽取过程,借助两个不同的分支输出。一个分支用于做图像分类,即全连接 + Softmax 判断目标类别,和单纯图像分类区别在于这里还另外需要一个「背景」类。另一个分支用于识别目标位置,即完成回归任务输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽),该分支输出结果只有在分类分支判断不为「背景」时才使用。2.2 传统方法传统的目标检测框架,主要包括三个步骤:① 利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域;② 提取候选区域相关的视觉特征。比如人脸检测常用的 Harr 特征;行人检测和普通目标检测常用的 HOG 特征等;③ 利用分类器进行识别,比如常用的 SVM 模型。2.3 两阶段vs一阶段 方法现在主流的深度学习目标检测方法主要分为两类:两阶段(Two Stages)目标检测算法和一阶段(One Stage)目标检测算法。1) 两阶段(Two Stages)首先由算法(algorithm)生成一系列作为样本的候选框,再通过卷积神经网络进行分类。常见的算法有 R-CNN、Fast R-CNN、Faster R-CNN 等等。2) 一阶段(One Stage )不需要产生候选框,直接将目标框定位的问题转化为回归(Regression)问题处理(Process)。常见的算法有YOLO、SSD等等。上述两类方法,基于候选区域(Region Proposal)的方法(两阶段)在检测准确率和定位精度上占优,基于端到端(一阶段)的算法速度占优。相对于R-CNN系列的「两步走」(候选框提取和分类),YOLO等方法只「看一遍」。我们在本篇中给大家介绍两阶段的目标检测方法,主要是R-CNN系列目标检测方法,在下篇内容目标检测 (SSD,YOLO系列)中给大家介绍一阶段的目标检测方法(YOLO系列,SSD等)。3.两阶段目标检测算法发展史4.两阶段目标检测典型算法4.1 R-CNN如何将深度学习分类算法应用到目标检测?用深度学习分类模型提取特征方法代替传统图像特征提取算法。R-CNN核心思想: 对每张图片选取多个区域,然后每个区域作为一个样本进入一个卷积神经网络来抽取特征。1) R-CNN网络结构R-CNN算法是较早提出的两阶段目标检测算法,它先找出 Region Proposal,再进行分类和回归。所谓 Region Proposal 就是图中目标可能出现的位置。因为传统方法需要枚举的区域太多了,所以通过利用图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的响应比。所以,问题就转变成找出可能含有物体的候选框,这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了。2) R-CNN应用流程对于每张输入的图像,R-CNN目标检测主要包括下述步骤:① 利用选择性搜索 Selective Search 算法在图像中从下到上提取 2000个左右的可能包含物体的候选区域 Region Proposal② 因为获取到的候选区域大小各不相同,所以需要将每个 Region Proposal 缩放(warp)成统一的 的大小并输入到 CNN,将CNN的 fc7 层的输出作为特征③ 将每个 Region Proposal 提取到的CNN特征输入到SVM进行分类④ 使用这些区域特征来训练线性回归器对区域位置进行调整3) R-CNN不足与优化R-CNN 的效果如下图所示,它有一些不足之处(也是系列算法后续改进的点):R-CNN 虽然不需要穷举所有框了,但是它需要对所有ss算法选取出的候选框region proposal (2000多个)进行CNN提取特征 + SVM分类,计算量很大,导致R-CNN检测速度很慢,一张图都需要47s。Selective search提取的区域质量不够好特征提取与后续SVM分类器是独立训练的,没有联合优化,且训练耗时长优化方式为:2000个region proposal是图像的一部分,可以对图像只进行一次卷积提取特征,然后将region proposal在原图的位置映射到卷积层特征图上,得到映射后的各个proposal的特征输入到全连接层做后续操作。每个region proposal的大小都不一样,而全连接层输入必须是固定的长度,因此不能将proposal的特征直接输入全连接层,后续改进向R-CNN模型引入了SPP-Net(也因此诞生了Fast R-CNN模型)。4.2 SPP-Net1) 设计出发点我们通过前面的 CNN 相关知识学习知道,CNN 的卷积层不需要固定尺寸的图像,而全连接层是需要固定大小的输入。所以当全连接层面对各种尺寸的输入数据时,就需要对输入数据进行 crop(抠图)或者 wrap(图像resize)操作。在 R-CNN中,因为不同的 proposal 大小不同,所以需要先 resize 成相同大小再输入到 CNN 中。既然卷积层是可以接受任何尺寸的,可以在卷积层后面加上一部分结构使得后面全连接层的输入为固定的,这个「化腐朽为神奇」的结构就是 spatial pyramid pooling layer。下图是 R-CNN 和 SPP-Net 检测流程的比较:SPP-Net 和普通 CNN 的对比结构如下,在网络结构上,直接把 pool5 层替换成 SPP 层:SPP-Net 的具体细节如下,由 features map 上确定的 region proposal 大小不固定,将提取的 region proposal 分别经过三个卷积 ,, ,都将得到一个长度为 21 的向量(21是数据集类别数,可以通过调整卷积核大小来调整),因此不需要对 region proposal 进行尺寸调整:相比R-CNN,SPP-Net有两大优点。① 通过「特征金字塔池化」模块,实现了 CNN 的多尺度输入,使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。② R-CNN 要对每个区域计算卷积,而 SPPNet 只需要计算一次卷积,从而节省了大量的计算时间。R-CNN 流程中,先用 ss 算法得到2000个proposal分别做卷积操作SPP-Net 只对原图进行一次卷积计算,得到整张图的卷积特征feature map,然后找到每个候选框在 feature map 上的映射 patch,将此 patch 作为每个候选框的卷积特征,输入到 SPP 层以及之后的层,完成特征提取工作。4.3 Fast R-CNN对于 RCNN 速度过慢等问题,提出了基于 RCNN 的改善模型 Fast RCNN。1) 核心改进Fast RCNN 主要改进以下部分:① 将 classification 和 detection 的部分融合到 CNN 中,不再使用额外的 SVM 和 Regressor,极大地减少了计算量和训练速度。② Selective Search 后不再对 region proposal 得到的 2k 个候选框进行截取输入,改用 ROI Project,将 region proposal 映射到 feature map 上③ 使用 ROI pooling 将在 feature map 上不同尺度大小的ROI归一化成相同大小后就可以通过FC层。2) 核心环节如下图所示为Fast R-CNN流程与网络结构Fast R-CNN具体包括的核心环节如下:① Region Proposal:与 R-CNN 一致跟RCNN一样,Fast-RCNN 采用的也是 Selective Search 的方法来产生 Region Proposal,每张图片生成 2k 张图片。但是不同的是,之后不会对 2k 个候选区域去原图截取,后输入 CNN,而是直接对原图进行一次 CNN,在 CNN 后的 feature map,通过 ROI project 在 feature map 上找到 Region Proposal的位置。② Convolution & ROI 映射就是对原图输入到 CNN 中去计算,Fast-RCNN 的工具包提供提供了 3 种 CNN 的结构,默认是使用 VGG-16 作为 CNN 的主干结构。根据 VGG-16 的结构,Fast-RCNN 只用了 4 个 MaxPooling 层,最后一个换成了 ROI Pooling,因此,只需要对 Region Proposal 的在原图上的 4 元坐标 除以 ,并找到最近的整数,便是 ROI Project 在 feature map 上映射的坐标结果。最终得到 个 ROI。③ ROI Pooling对每一个 ROI 在 feature map 上截取后,进行 ROI Pooling,就是将每个 ROI 截取出的块,通过 MaxPooling 池化到相同维度。ROI Pooling的计算原理是,将每个不同大小的 ROI 平均划分成 的 grid,在每个 grid 中取最大值,最后所有 ROI 都会池化成大小为 维度。④ 全连接层 & 输出将每个 ROI Pooling 后的块,通过全连接层生成 ROI 特征向量,最后用一个 Softmax 和一个 bbox regressor 进行分类和回归预测,得到每个 ROI 的类别分数和 bbox 坐标。全连接层为矩阵相乘运算,运行消耗较多,速度较慢,作者在这里提出可以使用 SVD 矩阵分解来加快全连接层的计算。⑤ 多任务损失Fast-RCNN 的两个任务:一个是分类,分为 类,使用的是Cross Entropy + Softmax 的损失函数第二个是 Bbox 的 Localization 回归,使用跟 Faster-RCNN 一样的基于 Offset 的回归,损失函数使用的是 Smooth L1 Loss,具体原理在下方 Faster-RCNN 中介绍。3) Fast R-CNN网络效果Fast R-CNN 效果如上图所示,相比之 R-CNN 它在训练和预测速度上都有了很大的提升,但它依旧有不足之处,大家观察整个流程,会发现在候选区域选择上,依旧使用的 Selective Search 方法,它是整个流程中的时间消耗瓶颈,无法用 GPU 硬件与网络进行加速。4.4 Faster R-CNNFaster-RCNN 在 Fast-RCNN 的基础上做了两个重大的创新改进:① 在 Region Proposal 阶段提出了 RPN(Region Proposal Network)来代替了 Selective Search② 使用到了 Anchor1) Faster R-CNN网络结构Faster R-CNN的总体流程结构如下,可分为Backbone、RPN、ROI+分类 / 回归 三个部分。2) Anchor(锚框)Anchor 是图像检测领域一个常用的结构,它可以用来表示原图中物体所在的区域,是一个以feature map 上某个点为中心的矩形框。Faster-RCNN 的 anchor,在 feature map 上每个点,生成 3 种尺度和 3 种比例共 9 个 anchor。下图是一个 anchor 的示意图,每个点会生成尺度为小( )、中()、大(),如图中红、绿、蓝色的anchor,, , 三种比例共 9 个 anchor。这样充分考虑了被检测物体的大小和形状,保证物体都能由 anchor 生成 region proposal。3) RPN网络结构RPN 是一个全卷积的神经网络,它的工作原理可以分成 classification,regression 和 proposal 三个部分① Classification/分类Classification 部分将得到的 feature map 通过一个 和 的卷积后,输出的维度为 ,这18个channel可以分解成 ,2代表着是否是感兴趣物体备选区域(region proposal)的 0/1 的 score,9 代表着 9 个 anchors。因此,特征图维度 的每一个点都会生成 9 个 anchor,每个 anchor 还会有 0/1 的 score。② Regression/回归Regression 部分原理和 Classification 部分差不多,feature map通过一个 和 的卷积后,输出的维度为 ,其中 36 个channel可以分成 ,9就是跟 cls 部分一样的 9 个anchor,4 是网络根据 anchor 生成的 bbox 的 4 元坐标 target 的 offset。通过 offset 做 bbox regression,再通过公式计算,算出预测 bbox 的 4 元坐标 来生成 region proposal。③ Proposal/候选区将前两部分的结果综合计算,便可以得出 Region Proposals。若 anchor 的 ,就认为是前景若 ,就认为是背景其他的 anchor 全都忽略一般来说,前景和背景的 anchor 保留的比例为 ① RPN网络训练策略RPN 网络的训练样本有如下的策略和方式:② RPN网络监督信息RPN 网络是监督学习训练,包含分类和回归两个任务,分类分支和回归分支的预测值和 label 构建方式如下:③ RPN网络LOSSRPN 网络的总体 loss 由 2 部分构成,分别是分类 loss 和回归 loss,为其加权求和结构。其中分类 loss 使用常规的交叉熵损失,回归损失函数使用的是 Smooth L1 Loss,本质上就是L1 Loss 和 L2 Loss 的结合。④ RPN网络回归分支Loss特别说一下回归部分使用到的 Smooth L1 Loss,对比于 L1 Loss 和 L2 Loss,Smooth L1 Loss 可以从两方面限制梯度:① 当预测框与 ground truth 的 Loss 很大的时候,梯度不至于像 L2 Loss 那样过大② 当预测框与 ground truth 的 Loss 较小的时候,梯度值比 L1 Loss 更小,不至于跳出局部最优解。4) 生成Proposals结合分类和回归结果得出 Region Proposals。若 anchor 的 ,就认为是前景;若 ,就认为是背景,其他的anchor全都忽略。一般来说,前景和背景的anchor保留的比例为 。得到 Region Proposal 后,会先筛选除掉长宽小于 16 的预测框,根据预测框分数进行排序,取前N(例如6000)个送去 NMS,经过 NMS 后再取前 (例如300)个作为 RPN 的输出结果。5) Rol Pooling① Roi pooling核心思想候选框共享特征图特征,并保持输出大小一致。候选框分为若干子区域,将每个区域对应到输入特征图上,取每个区域内的最大值作为该区域的输出。② Rol Pooling不足在 ROI 映射中,涉及到 region proposal 的坐标映射变换问题,在这过程中难免会产生小数坐标。但是在 feature map 中的点相当于一个个的 pixel,是不存在小数的,因此会将小数坐标量化成向下取整,这就会造成一定的误差。在 ROI Pooling 中,对每个 ROI 划分 grid 的时候又会有一次坐标量化向下取整。这样,整个过程像素坐标会经过两次量化,导致 ROI 虽然在 feature map 上有不到 1 pixel 的误差,映射回原图后的误差可能会大于 10 pixel,甚至误差可能会大于整个物体,这对小物体的检测非常不友好。6) Rol AlignFaster R-CNN 中通过 ROI Align 消除 RoI Pooling 中产生的误差。ROI Align 的原理是,先将 ROI Project 和 ROI Pooling 时计算出的 ROI 带小数的坐标存储在内存中,不直接量化成像素坐标。随后,ROI Align 不取每个 grid 的最大值,而是再将每个 grid 划分成 的小格,在每个小格中找到中心点,将离中心点最近的四个点的值进行双线性差值,求得中心点的值,再取每个 中四个中心点的最大值作为 后的值。7) BBox Head下面是分类与回归的 BBox 头部分,它的处理流程展开后如下图所示:而BBox训练阶段的样本构建方式如下,我们对比RPN阶段的样本构建方式:① BBox Head中的监督信息BBox头的分类与回归任务的标签构建方式如下,其中分类分支是典型的分类问题,学习每个预测框的类别;回归分支则是学习每个 RoI 到真实框的偏移量。② BBox Head LossBBox 头的总体 loss 由分类 loss 和回归 loss 加权组合构成。8) Faster R-CNN效果Faster R-CNN的效果如下图所示5.推荐学习可以点击 B站 查看视频的【双语字幕】版本frameLabelStart--frameLabelEnd【课程学习指南】斯坦福CS231n | 深度学习与计算机视觉【字幕+资料下载】斯坦福CS231n | 深度学习与计算机视觉 (2017·全16讲)【CS231n进阶课】密歇根EECS498 | 深度学习与计算机视觉【深度学习教程】吴恩达专项课程 · 全套笔记解读【Stanford官网】CS231n: Deep Learning for Computer Vision斯坦福 CS231n 全套解读深度学习与CV教程(1) | CV引言与基础深度学习与CV教程(2) | 图像分类与机器学习基础深度学习与CV教程(3) | 损失函数与最优化深度学习与CV教程(4) | 神经网络与反向传播深度学习与CV教程(5) | 卷积神经网络深度学习与CV教程(6) | 神经网络训练技巧 (上)深度学习与CV教程(7) | 神经网络训练技巧 (下)深度学习与CV教程(8) | 常见深度学习框架介绍深度学习与CV教程(9) | 典型CNN架构 (Alexnet, VGG, Googlenet, Restnet等)深度学习与CV教程(10) | 轻量化CNN架构 (SqueezeNet, ShuffleNet, MobileNet等)深度学习与CV教程(11) | 循环神经网络及视觉应用深度学习与CV教程(12) | 目标检测 (两阶段, R-CNN系列)深度学习与CV教程(13) | 目标检测 (SSD, YOLO系列)深度学习与CV教程(14) | 图像分割 (FCN, SegNet, U-Net, PSPNet, DeepLab, RefineNet)深度学习与CV教程(15) | 视觉模型可视化与可解释性深度学习与CV教程(16) | 生成模型 (PixelRNN, PixelCNN, VAE, GAN)深度学习与CV教程(17) | 深度强化学习 (马尔可夫决策过程, Q-Learning, DQN)深度学习与CV教程(18) | 深度强化学习 (梯度策略, Actor-Critic, DDPG, A3C)ShowMeAI 系列教程推荐大厂技术实现:推荐与广告计算解决方案大厂技术实现:计算机视觉解决方案大厂技术实现:自然语言处理行业解决方案图解Python编程:从入门到精通系列教程图解数据分析:从入门到精通系列教程图解AI数学基础:从入门到精通系列教程图解大数据技术:从入门到精通系列教程图解机器学习算法:从入门到精通系列教程机器学习实战:手把手教你玩转机器学习系列深度学习教程:吴恩达专项课程 · 全套笔记解读自然语言处理教程:斯坦福CS224n课程 · 课程带学与全套笔记解读深度学习与计算机视觉教程:斯坦福CS231n · 全套笔记解读
文章
机器学习/深度学习  ·  存储  ·  人工智能  ·  自然语言处理  ·  算法  ·  固态存储  ·  自动驾驶  ·  数据挖掘  ·  计算机视觉  ·  Python
2022-06-09
优化目标检测方案
      解决当前基于深度学习的目标检测器的问题,系统地来看,应该分别从数据集、网络结构、损失函数、使用策略等方面考虑。(1)数据集平衡扩增:在训练网络之前将图像进行平衡化无疑是最为简便有效的一种方法。通常数据集中的各个类别的样本呈“长尾”分布,直接用来训练检测器容易导致对样本少的类别出现漏检。这时可以考虑对样本少的类别,进行样本扩增。扩增过程最好考虑新增样本的,若无新样本则可以使用:噪声、滤波、亮度、镜像、翻转。这些操作较为简便同时也便于对标签文件进行变换。(2)改进网络结构:神经网络结构设计,决定了从数据集到检测结果之间映射的假设空间。 我们可以很好地引入样本少的类别的bbox分布先验,使生成的region proposals在这些类别有较高的召回。除此之外,由于漏检也很大程度上来自于目标尺度的巨大变化,比如自动驾驶场景中,同是Car类别的bbox样本在远处只占据极小部分pixels,而在近处甚至占据近半幅图像。经典的做法包括image/featur pyramid 如FPN等,以及Multi-scale Training/Testing策略,使用不同ratio的dilated conv分别匹配不同的感受野,达到检测不同尺度目标的目的,效果也很惊艳,应该能够很好地解决尺度变化带来的漏检问题。简单的可以使用3*3大小的卷积核替代5*5大小的卷积核。(3)改进损失函数:前面提到的Class-balanced Focal Loss是个很好的尝试方法。除此之外,Online Hard Example Ming(OHEM)策略,如mtcnn文献loss方法,也可以尝试。由于易漏检样本通常在训练过程中较容易产生较大的loss,那么在每次训练迭代中,将loss值较大的的样本筛选出来加入训练集进入下一次迭代,使得检测模型更多关注易漏检样本;(4)使用策略:例如多个网络对同一目标识别,取占比大的结果作为最终结果;将差别较小的类别分配至另一个网络中进行识别(5)其它学习算法:除了目前主流的监督学习模型,也可以考虑其它的学习算法, 目前出现了零样本学习、以及无监督学习模型。
文章
机器学习/深度学习  ·  算法  ·  自动驾驶  ·  计算机视觉
2022-06-08
通俗讲解强化学习!
1 简介强化学习强化学习是机器学习的一个分支。1.1 什么是强化学习强化学习是一种机器学习的学习方式(四种主要的机器学习方式解释见上图)。上图没有提到深度学习,是因为从学习方式层面上来说,深度学习属于上述四种方式的子集。而强化学习是独立存在的,所以上图单独列出强化学习,而没有列出深度学习。强化学习和其他三种学习方式主要不同点在于:强化学习训练时,需要环境给予反馈,以及对应具体的反馈值。它不是一个分类的任务,不是金融反欺诈场景中如何分辨欺诈客户和正常客户。强化学习主要是指导训练对象每一步如何决策,采用什么样的行动可以完成特定的目的或者使收益最大化。比如AlphaGo下围棋,AlphaGo就是强化学习的训练对象,AlphaGo走的每一步不存在对错之分,但是存在“好坏”之分。当前这个棋面下,下的“好”,这是一步好棋。下的“坏”,这是一步臭棋。强化学习的训练基础在于AlphaGo的每一步行动环境都能给予明确的反馈,是“好”是“坏”?“好”“坏”具体是多少,可以量化。强化学习在AlphaGo这个场景中最终训练目的就是让棋子占领棋面上更多的区域,赢得最后的胜利。打一个不是很恰当的比喻,有点像马戏团训猴一样。驯兽师敲锣,训练猴站立敬礼,猴是我们的训练对象。如果猴完成了站立敬礼的动作,就会获得一定的食物奖励,如果没有完成或者完成的不对,就没有食物奖励甚至是鞭子抽打。时间久了,每当驯兽师敲锣,猴子自然而然地就知道要站立敬礼,因为这个动作是当前环境下获得收益最大的动作,其他动作就不会有食物,甚至还要被鞭子抽打。(https://bbs.hupu.com/36347293.html 这里有一篇耍猴的报道,有强化学习的味道)强化学习的灵感来源于心理学里的行为主义理论:一切学习都是通过条件作用,在刺激和反应之间建立直接联结的过程。强化在刺激一反应之间的建立过程中起着重要的作用。在刺激一反应联结中,个体学到的是习惯,而习惯是反复练习与强化的结果。习惯一旦形成,只要原来的或类似的刺激情境出现,习得的习惯性反应就会自动出现。那基于上述理论,强化学习就是训练对象如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。1.2 强化学习的主要特点试错学习: 强化学习需要训练对象不停地和环境进行交互,通过试错的方式去总结出每一步的最佳行为决策,整个过程没有任何的指导,只有冰冷的反馈。所有的学习基于环境反馈,训练对象去调整自己的行为决策。延迟反馈: 强化学习训练过程中,训练对象的“试错”行为获得环境的反馈,有时候可能需要等到整个训练结束以后才会得到一个反馈,比如Game Over或者是Win。当然这种情况,我们在训练时候一般都是进行拆解的,尽量将反馈分解到每一步。时间是强化学习的一个重要因素:强化学习的一系列环境状态的变化和环境反馈等都是和时间强挂钩,整个强化学习的训练过程是一个随着时间变化,而状态&反馈也在不停变化的,所以时间是强化学习的一个重要因素。当前的行为影响后续接收到的数据:为什么单独把该特点提出来,也是为了和监督学习&半监督学习进行区分。在监督学习&半监督学习中,每条训练数据都是独立的,相互之间没有任何关联。但是强化学习中并不是这样,当前状态以及采取的行动,将会影响下一步接收到的状态。数据与数据之间存在一定的关联性。2 详解强化学习下面我们对强化学习进行详细的介绍:2.1 基本组成部分本文使用一个小游戏叫做Pacman(吃豆人)的游戏介绍强化学习(Reinforcement Learning)的基本组成部分。游戏目标很简单,就是Agent要把屏幕里面所有的豆子全部吃完,同时又不能被幽灵碰到,被幽灵碰到则游戏结束,幽灵也是在不停移动的。Agent每走一步、每吃一个豆子或者被幽灵碰到,屏幕左上方这分数都会发生变化,图例中当前分数是435分。这款小游戏,也是加州大学伯克利分校在上强化学习这门课程时使用的cousrwork。后续文章也会使用这个小游戏进行强化学习实战讲解。Agent(智能体): 强化学习训练的主体就是Agent,有时候翻译为“代理”,这里统称为“智能体”。Pacman中就是这个张开大嘴的黄色扇形移动体。Environment(环境): 整个游戏的大背景就是环境;Pacman中Agent、Ghost、豆子以及里面各个隔离板块组成了整个环境。State(状态): 当前 Environment和Agent所处的状态,因为Ghost一直在移动,豆子数目也在不停变化,Agent的位置也在不停变化,所以整个State处于变化中;这里特别强调一点,State包含了Agent和Environment的状态。Action(行动): 基于当前的State,Agent可以采取哪些action,比如向左or右,向上or下;Action是和State强挂钩的,比如上图中很多位置都是有隔板的,很明显Agent在此State下是不能往左或者往右的,只能上下;Reward(奖励): Agent在当前State下,采取了某个特定的action后,会获得环境的一定反馈就是Reward。这里面用Reward进行统称,虽然Reward翻译成中文是“奖励”的意思,但其实强化学习中Reward只是代表环境给予的“反馈”,可能是奖励也可能是惩罚。比如Pacman游戏中,Agent碰见了Ghost那环境给予的就是惩罚。以上是强化学习的五个基本组成部分。2.2 强化学习训练过程下面我们需要介绍一下强化学习的训练过程。整个训练过程都基于一个前提,我们认为整个过程都是符合马尔可夫决策过程的。马尔可夫决策过程(Markov Decision Process)Markov是一个俄国的数学家,为了纪念他在马尔可夫链所做的研究,所以以他命名了“Markov Decision Process”,以下用MDP代替。MDP核心思想就是下一步的State只和当前的状态State以及当前状态将要采取的Action有关,只回溯一步。比如上图State3只和State2以及Action2有关,和State1以及Action1无关。我们已知当前的State和将要采取的Action,就可以推出下一步的State是什么,而不需要继续回溯上上步的State以及Action是什么,再结合当前的(State,Action)才能得出下一步State。实际应用中基本场景都是马尔可夫决策过程,比如AlphaGo下围棋,当前棋面是什么,当前棋子准备落在哪里,我们就可以清晰地知道下一步的棋面是什么了。为什么我们要先定义好整个训练过程符合MDP了,因为只有符合MDP,我们才方便根据当前的State,以及要采取的Action,推理出下一步的State。方便在训练过程中清晰地推理出每一步的State变更,如果在训练过程中我们连每一步的State变化都推理不出,那么也无从训练。接下来我们使用强化学习来指导Agent如何行动了。2.3 强化学习算法归类我们选择什么样的算法来指导Agent行动?本身强化学习算法有很多种,关于强化学习算法如何分类,有很多种分类方式,这里我选择三种比较常见的分类方式。( 1 ) - Value Based -说明: 基于每个State下可以采取的所有Action,这些Action对应的Value, 来选择当前State如何行动。强调一点这里面的Value并不是从当前State进入下一个Stae,环境给的Reward,Reward是Value组成的一部分。但我们实际训练时既要关注当前的收益,也要关注长远的收益,所以这里面的Value是通过一个计算公式得出来的,而不仅仅是状态变更环境立即反馈的Reward。因为Value的计算较为复杂,通常使用贝尔曼方程,在此不再细述。如何选择Action:简单来说,选择当前State下对应Value最大的Action。选择能够带来最大Value加成的Action。比如下图StateA状态下,可以采取的Action有3个,但是Action2带来的Value最大,所以最终Agent进入StateA状态时,就会选择Action2。强调一点这里面的Value值,在强化学习训练开始时都是不知道的,我们一般都是设置为0。然后让Agent不断去尝试各类Action,不断与环境交互,不断获得Reward,然后根据我们计算Value的公式,不停地去更新Value,最终在训练N多轮以后,Value值会趋于一个稳定的数字,才能得出具体的State下,采取特定Action,对应的Value是多少代表性算法:Q-Learning、SARSA(State-Action-Reward-State-Action);适用场景: Action空间是离散的,比如Pacman里面的动作空间基本是“上下左右”,但有些Agent的动作空间是一个连续的过程,比如机械臂的控制,整个运动是连续的。如果强行要将连续的Action拆解为离散的也是可以的,但是得到的维度太大,往往是指数级的,不适宜训练。同时在Value-Based场景中,最终学习完每个State对应的最佳Action基本固定。但有些场景即使最终学习完每个State对应的最佳Action也是随机的,比如剪刀石头布游戏,最佳策略就是各1/3的概率出剪刀/石头/布。( 2 ) - Policy Based -Policy Based策略就是对Value Based的一个补充,说明: 基于每个State可以采取的Action策略,针对Action策略进行建模,学习出具体State下可以采取的Action对应的概率,然后根据概率来选择Action。(如何利用Reward去计算每个Action对应的概率里面涉及到大量的求导计算,对具体过程感兴趣的可以参考这篇文章:https://zhuanlan.zhihu.com/p/54825295)如何选择Action: 基于得出的策略函数,输入State得到Action。代表性算法: Policy Gradients适用场景: Action空间是连续的&每个State对应的最佳Action并不一定是固定的,基本上Policy Based适用场景是对Value Based适用场景的补充。对于Action空间是连续的,我们通常会先假设动作空间符合高斯分布,然后再进行下一步的计算。( 3 ) -Actor-Critic -AC分类就是将Value-Based和Policy-Based结合在一起,里面的算法结合了2.3.1和2.3.2。上述就是三大类常见的强化学习算法,而在Pacman这个游戏中,我们就可以使用Value-Based算法来训练。因为每个State下最终对应的最优Action是比较固定的,同时Reward函数也容易设定。( 4 ) - 其他分类 -上述三种分类是常见的分类方法,有时候我们还会通过其他角度进行分类,以下分类方法和上述的分类存在一定的重叠:根据是否学习出环境Model分类:Model-based指的是,agent已经学习出整个环境是如何运行的,当agent已知任何状态下执行任何动作获得的回报和到达的下一个状态都可以通过模型得出时,此时总的问题就变成了一个动态规划的问题,直接利用贪心算法即可了。这种采取对环境进行建模的强化学习方法就是Model-based方法。而Model-free指的是,有时候并不需要对环境进行建模也能找到最优的策略。虽然我们无法知道确切的环境回报,但我们可以对它进行估计。Q-learning中的Q(s,a)就是对在状态s下,执行动作a后获得的未来收益总和进行的估计,经过很多轮训练后,Q(s,a)的估计值会越来越准,这时候同样利用贪心算法来决定agent在某个具体状态下采取什么行动。如何判断该强化学习算法是Model-based or Model-free, 我们是否在agent在状态s下执行它的动作a之前,就已经可以准确对下一步的状态和回报做出预测,如果可以,那么就是Model-based,如果不能,即为Model-free。2.4 EE(Explore & Exploit)2.3里面介绍了各种强化学习算法:Value-Based、Policy-Based、Actor-Critic。但实际我们在进行强化学习训练过程中,会遇到一个“EE”问题。这里的Double E不是“Electronic Engineering”,而是“Explore & Exploit”,“探索&利用”。比如在Value-Based中,如下图StateA的状态下,最开始Action1&2&3对应的Value都是0,因为训练前我们根本不知道,初始值均为0。如果第一次随机选择了Action1,这时候StateA转化为了StateB,得到了Value=2,系统记录在StateA下选择Action1对应的Value=2。如果下一次Agent又一次回到了StateA,此时如果我们选择可以返回最大Value的action,那么一定还是选择Action1。因为此时StateA下Action2&3对应的Value仍然为0。Agent根本没有尝试过Action2&3会带来怎样的Value。所以在强化学习训练的时候,一开始会让Agent更偏向于探索Explore,并不是哪一个Action带来的Value最大就执行该Action,选择Action时具有一定的随机性,目的是为了覆盖更多的Action,尝试每一种可能性。等训练很多轮以后各种State下的各种Action基本尝试完以后,我们这时候会大幅降低探索的比例,尽量让Agent更偏向于利用Exploit,哪一个Action返回的Value最大,就选择哪一个Action。Explore&Exploit是一个在机器学习领域经常遇到的问题,并不仅仅只是强化学习中会遇到,在推荐系统中也会遇到,比如用户对某个商品 or 内容感兴趣,系统是否应该一直为用户推送,是不是也要适当搭配随机一些其他商品 or 内容。2.5 强化学习实际开展中的难点我们实际在应用强化学习去训练时,经常会遇到各类问题。虽然强化学习很强大,但是有时候很多问题很棘手无从下手。Reward的设置: 如何去设置Reward函数,如何将环境的反馈量化是一个非常棘手的问题。比如在AlphaGo里面,如何去衡量每一步棋下的“好”与“坏”,并且最终量化,这是一个非常棘手的问题。有些场景下的Reward函数是很难设置的。采样训练耗时过长,实际工业届应用难: 强化学习需要对每一个State下的每一个Action都要尽量探索到,然后进行学习。实际应用时,部分场景这是一个十分庞大的数字,对于训练时长,算力开销是十分庞大的。很多时候使用其他的算法也会获得同样的效果,而训练时长,算力开销节约很多。强化学习的上限很高,但如果训练不到位,很多时候下限特别低。容易陷入局部最优: 部分场景中Agent采取的行动可能是当前局部最优,而不是全局最优。网上经常有人截图爆出打游戏碰到了王者荣耀AI,明明此时推塔或者推水晶是最合理的行为,但是AI却去打小兵,因为AI采取的是一个局部最优的行为。再合理的Reward函数设置都可能陷入局部最优中。03 强化学习的实际应用虽然强化学习目前还有各种各样的棘手问题,但目前工业界也开始尝试应用强化学习到实际场景中了,除了AlphaGo还有哪些应用了:3.1 自动驾驶目前国内百度在自动驾驶领域中就使用了一定的强化学习算法,但是因为强化学习需要和环境交互试错,现实世界中这个成本太高,所以真实训练时都需要加入安全员进行干预,及时纠正Agent采取的错误行为。3.2 游戏游戏可以说是目前强化学习应用最广阔的,目前市场上的一些MOBA游戏基本都有了强化学习版的AI在里面,最出名的就是王者荣耀AI。游戏环境下可以随便交互,随便试错,没有任何真实成本。同时Reward也相对比较容易设置,存在明显的奖励机制。3.3 推荐系统目前一些互联网大厂也在推荐系统中尝试加入强化学习来进行推荐,比如百度&美团。使用强化学习去提高推荐结果的多样性,和传统的协同过滤&CTR预估模型等进行互补。总之强化学习是目前机器学习领域的一个十分热门的研究方向,应用前景非常广阔。下一篇会介绍如何使用Q-Learning算法来训练Pacman吃豆子的Python实战讲解,欢迎大家继续关注。
文章
机器学习/深度学习  ·  人工智能  ·  算法  ·  搜索推荐  ·  自动驾驶  ·  Go  ·  Python
2022-06-07
IT人才能嗑到的这对CP,甜!
文章
存储  ·  自动驾驶  ·  文件存储  ·  异构计算
2022-06-06
目标检测简介
      目标检测(Object Detection)技术的研究一直以来都是计算机视觉(Computer Vision, CV)领域中最基本、最具有挑战性的研究课题之一。众所周知,目标检测其实就是通过研究获取一套计算模型以及技术,提供计算机视觉应用程序工作时需要的最基本、也最重要的信息——什么位置的什么物体?即在获取到一张图片或者视频信息时,找出图片中感兴趣的物体,要完成两个任务,即分类(Classification)和定位(Localization),最终确定物体的类别和位置。分类任务就是在获取到图片时,判断图片中是否包含有符合需求类别的物体,如果有,则输出一系列带有置信度分数的标签,以指示目标物体存在于输入图像中的概率。目标定位任务的作用则主要是确定输入图片中目标类别所在位置以及范围大小,输出物体的包围框。它是构成许多诸如实例分割(Instance Segmentation)、行为识别(Action Recognition)、图像描述生成(Image Captioning)、目标跟踪(Object Tracking)等其他计算机视觉任务的基础。尤其是近年来,随着互联网技术、人工智能技术的发展,硬件设备的升级更新,以及自动驾驶、人脸检测、视频监控等的需求不断多样化和丰富化,吸引越来越多的研究者和研究机构投入到目标检测的研究热潮中。       计算机视觉在学术研究领域公认的三大顶级国际会议,如IEEE  Conference  on Computer  Vision  and  Pattern  Recognition ( CVPR )、 IEEE  International  Conference  on Computer Vision(ICCV)和European Conference on Computer Vision(ECCV),有关目标检测的研究报告数量仍在继续增加。除此之外,还有顶级国际期刊Transactions of Pattern Analysis and Machine Intelligence(TPAMI)、International Journal of Computer Vision(IJCV)等计算机视觉期刊以及其他相关期刊目标检测的论文也如雨后春笋般,大量涌现。这充分的向我们证明了一点——目标检测方向的研究,在人工智能发展如火如荼的今天,更是起到了不可或缺的作用,对助力人工智能大方向的发展起到了催化剂和推动剂的作用。        除此之外,目标检测技术在工业领域中,也得到了广泛应用。(1)在智能交通研究 方面,自动驾驶可谓人尽皆知。在此项研究中,自动驾驶的车辆对周围环境的感知要做到实时、准确,则需要在自动驾驶的系统中部署多种传感设备,其中作为“眼睛”的摄像头,捕获周围的行人、车辆、交通信号灯以及等其他交通指示等,而后进行识别。为无人驾驶保驾护航。(2)疫情防控期间,随处可见的基于目标检测的红外热像仪,也离不开目标检测技术的加持。给疫情防控工作带来了很大的便利,保证了公共安全。(3)在智慧医疗领域,目标检测技术能够对患者的病变细胞进行检测,有助于辅助医护人员监控治疗过程,并减少医护人员的工作量,促进医疗资源合理配置。(4)在军事战争的许多环节,目标检测都发挥出巨大的优势。例如,预警探测、军事制导、战场侦察等方面。(5)日常生活中,目标检测技术也扮演着重要的角色。例如超市自助付款过程中,在将所有物品扫码后,置于物品台,相机能够检测和记录所有的信息,与扫描商品进行信息进行对比,无误后方可付款。
文章
人工智能  ·  监控  ·  自动驾驶  ·  数据挖掘  ·  计算机视觉
2022-06-04
复杂场景数据集设计
1.  目标检测数据集设计       现有的目标检测数据集如 ImageNet、VOC 和 COCO 通常是检测多个类别,对于人体的检测精度不高,容易漏检和误检。本文选取了 COCO 数据集作为基准数据集,使用 YOLOv5 算法进行目标检测时,对于跌倒或有遮挡的人体可能无法检测出。        站着的人可以被识别,但是倒地的人或者有遮挡的情况下有可能识别不出来,所以在原有的 COCO 数据集的基础上,需要添加额外的人体数据集再进行针对性训练。      选取了部分人体行为检测数据集和网络上符合复杂场景的图片,并使用LabelImg 进行标注,LabelImg 是一个可视化的图像标注工具,YOLO 所需要的数据集可以通过该软件进行标注。      利用该软件手工标注了 800 张复杂背景下的包含人体的图片,其中各种姿态的跌倒或躺地状态的人体图片有 200 张,存在遮挡的人体图片有 200 张,剩下的 400 张均为各种正常直立运动的图片,所有的图片均为多人场景。然后将图片和标注放到训练代码中进行训练,从而得到符合条件的测试权重。     2.  目标跟踪数据集设计     由于 Deep Sort 模型是针对行人进行目标跟踪的,对于非行人即跌倒或者躺下的人,会出现识别不了的情况,此时需要对 Deep Sort 进行再训练,使算法中的 ReID 模型学习到不同行为的人体特征,从而减少目标跟踪过程中因为对人体的检测丢失而导致的 ID Switch 现象。       本文的目标跟踪数据集的制作方法如下:首先使用目标检测器 YOLOv5 对跌倒视频中的某个人体进行检测框提取,然后将包含该人体的检测框提取出来保存为图片,对单个人体提取 30 张图片,这 30 张图片需要体现该人体的轨迹信息,然后将这些图片放缩到同样大小,保存为一个文件夹,依照该方法收集了 150个不相同的人体信息,保存为目标跟踪数据集。并使用该数据集训练 ReID 模型,从而获得理想的实验结果。 3.  复杂场景跌倒数据集设计      在跌倒检测领域,甚至在机器学习领域,数据集是模型训练、算法验证和性能提升的重要组成部分。由于跌倒发生的概率相对较低,日常生活中也较难获取相应的数据,因此长期以来基于跌倒的公开数据集较少,较为知名的有 Le2i 跌倒检测数据集、多摄像头跌倒数据集(MCFD)、UR 跌倒检测数据集(URFD),然而这些数据集中的跌倒行为大多是发生在简单场景,几乎没有复杂场景的跌倒数据集,因此为了验证跌倒模型的效果,需要采集复杂场景下的跌倒行为视频,组建一个新的数据集进行跌倒检测的研究。      新数据集需要包含以下几种行为: (1)非跌倒行为,如站立、行走; (2)类跌倒行为,如蹲下、坐下、躺下; (3)跌倒行为,如向前跌倒、向后跌倒、侧方向跌倒; 与此同时,新数据集中的视频需要包含以下三种场景:1、单人简单场景,主要来源于公开数据集,场景中只有一个人在行动,背景不发生变化的,无遮挡。 2、单人复杂场景,即视频中只有一个人,但是背景是实际场景,存在运动变化的背景,可能有遮挡。 3、多人复杂场景,视频中有多个人,对背景不作要求,可能有遮挡。       根据以上要求,通过混合公开数据集中的样本和网上的行为视频数据,并将视频统一裁剪和规格化为 6s,  640*480 分辨率,由此组建了新的数据集        部分视频可能包含多个动作,由于无法对每个视频中的行为进行精准地分割,因此本文对数据集中的视频进行了规则设定,具体规则如下: (1)如果视频中只包含非跌倒行为,则以非跌倒行为进行分类 (2)如果视频中包含类跌倒行为和非跌倒行为,则以类跌倒进行分类 (3)如果视频中包含跌倒行为和非跌倒行为,则以跌倒行为进行分类 (4)如果视频中包含了非跌倒、类跌倒和跌倒行为,则以跌倒行为进行分类。 
文章
机器学习/深度学习  ·  编解码  ·  监控  ·  算法  ·  自动驾驶  ·  数据可视化  ·  计算机视觉
2022-06-04
1
...
8 9 10 11 12 13
...
20
跳转至:
阿里云存储服务
192233 人关注 | 581 讨论 | 1182 内容
+ 订阅
  • Pandas+ SLS SQL:融合灵活性和高性能的数据透视
  • 今天的应用架构,正处在一个不可测的阶段
  • 数据洞察(2):描述性数据分析在日志场景的落地
查看更多 >
云攻略小攻
183 人关注 | 21 讨论 | 795 内容
+ 订阅
  • 阿里云全站加速DCDN重磅发布!打造新一代加速引擎
  • 阿里云产品-2022 7月刊
  • 超融合数字孪生平台正式发布
查看更多 >
人工智能
2652 人关注 | 10157 讨论 | 71630 内容
+ 订阅
  • 【回归预测-LSTM预测】基于灰狼算法优化LSTM实现数据回归预测附Matlab代码
  • 【物理应用】基于摩尔库仑准则实现应变软化岩体的围岩-支护相互作用附matlab代码
  • 【信号去噪】基于遗传算法优化VMD实现信号去噪附matlab代码
查看更多 >
开发与运维
5318 人关注 | 127706 讨论 | 213090 内容
+ 订阅
  • 【物理应用】基于摩尔库仑准则实现应变软化岩体的围岩-支护相互作用附matlab代码
  • 【Django | allauth】重写allauth重置密码方法
  • 【Django | allauth】useprofile 用户模型扩展
查看更多 >
安全
1095 人关注 | 23380 讨论 | 59654 内容
+ 订阅
  • 【Django | allauth】重写allauth重置密码方法
  • 【Django | allauth】useprofile 用户模型扩展
  • 【故障诊断】基于EMD实现故障诊断附matlab代码
查看更多 >