旷视张祥雨:神经网络架构设计新思路

2023-05-16

点击上方“CVer”,选择加"星标"置顶

重磅干货,第一时间送达

本文转载自:AI科技评论

作者 | 蒋宝尚

编辑 | 青暮

深度学习模型在很多任务上都取得了不错的效果,但调参却是一项非常痛苦的事情,大量的超参数和网络结构参数会产生爆炸性的组合。因此最近几年神经网络的架构搜索和超参数优化成为一个研究热点。此外,对于架构设计新方法、新机制的探索,也是当下深度学习研究与落地的重点课题之一。

神经网络的架构设计目前进展到哪了?11月27日,旷视研究院主任研究员、智源青年科学家张祥雨在由智源社区举办的 NeurIPS 2020中国预讲会上做了“神经网络架构设计新思路”的主题演讲,从NAS、隐式模型、重参数化模型三个方面介绍了神经网络架构设计的最新进展。

张祥雨在演讲中提到:

  • 神经网络架构搜索中存在一个有趣的现象,即搜索空间中不同模型的收敛速度与最终性能之间常常存在正相关关系,据此我们可以不基于准确率、而是基于收敛速度去判断子结构的优劣,从而实现高效搜索;

  • 隐式模型有低参数量、强表示能力、大感受野等优点,这对设计通用模型结构可以带来很多启发;

  • 重参数化则是一种应用技巧,可以让模型的训练和推理更加高效。

张祥雨是孙剑的首位深度学习博士生,目前是旷视研究院基础模型组负责人。他已经在CVPR、ICCV、ECCV、NeurIPS、ICLR等AI顶会上发表30多篇论文,总引用量超过9万。例如视觉领域广泛使用的ResNet,其二作就是张祥雨。他还是ShuffleNet的一作,该框架以轻量级低功耗和高性能出名,特别适用于移动端设备,旷视凭借此模型拿下了OPPO、小米等手机大厂的视觉订单。如今,张祥雨将注意力转向了AutoML、动态模型等新型神经网络模型设计方法。

以下是讲座全文,AI科技评论&智源社区合作完成,经张老师确认。

这次演讲的题目是“神经网络架构设计新思路”。神经网络架构领域的研究方向演变非常快。例如在视觉方面,过去几年就发生了翻天覆地的变化。

例如在2017年以前,以ResNet、DenseNet为代表的手工模型设计方法是当时的主流,而像MobileNet、ShuffleNet这样的轻量化结构也展现了很强的实用价值。

但在2018年以后,NAS(神经网络架构搜索)大行其道,在多个视觉数据集上达到了最优性能,大有全面超过手工模型设计的趋势。进入2019年之后,动态网络、尤其是动态卷积核网络开始进入人们的视线,为神经网络的高效落地提供了一种新的思路。到了2020年,随着attention技术在CV领域日益成熟,使用attention替换传统的卷积结构直接设计大型神经网络,成为了新的研究热点。例如,在今年的ICLR 2020上就出现了单纯以transformer为基础的神经网络,其性能也比较出众。

那么我们不禁会问,除了以上热门领域之外,神经网络架构设计还有哪些思路?哪些技术有希望主导下一代神经网络的设计思想?本次报告中我将和大家交流我们最近关于架构设计新方法的思考。整个分享分为三个部分:

1.基于收敛性指标的NAS新框架;

2.隐式模型;

3.重参数化模型。

这些思路听起来都比较“小众”,我也是希望能抛砖引玉,和大家一起讨论模型设计的未来方向。

1

基于收敛速度指标的神经网络架构搜索算法

简单来说,神经网络架构搜索(NAS)就是从一个给定的搜索空间中找到一个神经网络架构,使得这个架构在训练完毕之后,在测试集上能够达到最高的性能。

基于此,我们可以设计一种非常简单直接的NAS框架:首先利用agent预测一个结构,在目标数据集上进行训练和测试,再利用测试结果反馈和更新agent。如此反复,直到找到性能最高的网络结构。

事实上最早的一批NAS算法就是这么做的。这样的算法虽然原理可行,但是搜索速度通常并不理想,因为每预测一个结构,我们都需要在整个数据集上进行训练;当数据集规模很大时,算法的效率无疑是非常低的。

为了解决这个问题,学界又提出了基于权重共享的模型搜索(Weight-sharing NAS)这一大类算法,思路是构建一个超网络(SuperNet)。超网络包含了搜索空间的全部子网络,不同的子网络以共享参数的方式嵌入在超网络中。

这样,我们只需要用某种方式训练超网络,就相当于同时训练了搜索空间中的全部子网络,因此搜索效率大幅提升。目前比较流行的基于梯度的NAS算法(如DARTS)、One-Shot类算法(如SPOS)等都属于这类方法。

然而,以上两种思路都存在一些问题。对于早期基于反复采样和重新训练的NAS框架而言,搜索空间的大小动辄10的十几次方数量级,然而在搜索中我们能采样到的网络数量最多只有几千或者几万个。在如此少的采样比例下,我们还能不能有效地探索出最优的结构,其实是难以保证的。而对于权重共享的搜索算法,虽然从优化形式看,它允许对搜索空间的所有模型进行共同优化,但由于子网络之间的权重互相耦合,也存在“优化其中的一个模型,同时拖累其他模型”的缺点。

所以,NAS是否能搜出搜索空间中的最好结构,目前还没有统一的结论。从结果反推,我们知道NAS在前两年取得了非常大的成功,在很多任务中都打败了人类手工设计的神经网络。因此从结果来看NAS确实有效果,但正因为有上述质疑,NAS是否真的work、以及为什么有效果,目前还未彻底解决。比如,有人就会问会不会因为搜索空间构造太简单,所有的空间构造都很同质化,导致NAS算法随便搜一搜,就能得到不错的结果?

去年年初有一个非常著名的工作:随机搜索,它在目前主流的一些搜索空间中随机挑了一些结构,然后发现其性能和目前最好的NAS方法在同一水平。这也从侧面说明了NAS领域的一个比较尴尬的处境,就是由于搜索空间构造的太平凡,导致NAS算法本身其实并没有贡献太多的价值。

当然在后来,经过人们的进一步研究,搜索空间在扩展,搜索算法在更新,目前的NAS算法已经能够稳定打败随机搜索的基准线。换句话说,在更复杂的搜索空间,随机搜索已经无法解释NAS算法是如何工作的了。NAS内部肯定还有别的机制,让它达到非常高的性能。 

在ICLR 2020上,有一篇非常棒的论文分析了cell-based搜索空间的神经网络架构搜索算法。通过理论和实验分析,文章提出了一个观点,即gradient-based NAS算法倾向于搜索出收敛速度较快而非性能最好的结构。

此结论听起来像是一个缺点,因为我们当然希望能够真正在搜索空间中找到性能最好的结果。但其实在模型设计领域的经验表明,快速收敛和高性能往往存在强相关性。例如从VGG进化到ResNet,ResNet通过添加shortcut的方式,不仅加快了收敛速度,也明显提升了性能。换句话说,高速收敛通常也意味着高性能。

快速收敛和高性能强相关这一假设,对我们接下来的工作的启示是:对NAS算法而言,除了直接找性能最好的架构之外,是不是还存在一种间接的途径,即寻找拥有快速收敛的特性的网络结构?当然在此之前,我们需要回答一个问题:如何衡量网络的收敛速度?

我们在ECCV 2020上发表的AngleNAS搜索算法,显式地将模型的收敛速度纳入了NAS框架中。它的总体搜索框架基于我们去年提出的Single Path One-shot算法(单路径超网络搜索)。我们都知道,NAS所涉及的搜索空间常常是十分巨大的,如前所述,这会显著降低算法的搜索效率。

因此,当前NAS一个非常主流的方法叫做 Progressive NAS,中文翻译为“渐进式神经网络架构搜索技术”,这种技术在搜索过程中,能够不断的抛弃掉性能比较差的结构。然而在“抛弃”的过程中又会涉及一个标准:应该抛弃哪些东西?

AngleNAS这篇文章中提出了一个标准,当超网络训练一段时间之后,其中的每个子结构的权重相对于初始的位置的角度更新量变化的越大,我们就认为该结构更容易收敛,根据前面的假设,得到性能更高的结构的概率也更大。因此,我们更有理由在训练过程中裁剪掉那些角度更新量较小的结构,从而减小搜索空间。

那么这里为什么会用角度更新量、而不是其他距离度量来衡量收敛速度呢?这是因为现在的神经网络一般都包含BN,它赋予了模型各层的放缩不变性。换句话说,各层权重的模长已经不起决定性作用了;角度则更重要,也能够衡量速度快慢。

我们也做了简单的模拟实验,观察角度更新量和最后性能之间的关系,结果如上图所示。角度更新量变化的越大,模型的最终性能更高的概率也越大。因此,角度更新量是衡量性能的一个重要指标。

从上图我们还可以发现一个有趣的现象,在搜索指标和最终性能的排序相关度方面,角度更新量指标甚至超过了直接使用SuperNet Accuracy。这是为什么?虽然SuperNet Accuracy是非常符合直觉的,但是因为我们使用权重共享架构,其不同子结构之间的权重相互干扰,直接使用它们的Accuracy可能并不能准确衡量每个子结构单独训练的质量。

另外,关于网络性能的度量方面,最近有一篇名为 NAS without Training的文章非常有趣。主要想法是:对于一个已经初始化完毕的神经网络,去计算其损失函数关于输入数据的雅可比矩阵。当数据变化的时候,就把相应的雅可比矩阵看成一个长向量,比较这些向量之间的相关性。作者发现了一个非常有趣的现象:性能越好的结构,在不同数据之间,其雅可比矩阵越不相关。这样我们就可以在不训练的情况下,快速判断一个网络的好坏。

从以上工作中,我们可以得出一个结论:很多时候没有必要基于accuracy设计衡量标准。我们只需评判神经网络的收敛速度,就可以大概知道这个结构最终的性能,从而实现快速高效的神经网络架构搜索。

在我们最新的文章“NAS with Random Label”中,我们设计了一个NAS框架,它在搜索过程中完全不使用ground-truth label,仅使用random label,就能得到和使用真实标签相同的性能。它的出发点是“一个好的结构应该是通用的,不应该依赖特定的标签分布,以至于在随机label下也应该能产生效果”。当然,我们需要解决如何基于随机标签进行搜索的问题,如果直接拟合,效果当然会非常差。

这里基于前面介绍的几个工作,我们提出了采用收敛速度指标进行搜索:我们没必要直接比较准确度(因为标签是随机的,准确度并不可靠),只比较每个结构的收敛速度的快慢。接着,我们利用Single Path One-shot搜索框架,找到在random label上收敛速度最快的那个结构。至于收敛速度的衡量标准,我们直接使用了我们在AngleNAS中提出的角度更新量作为指标。

如上图,从实验来看,结果非常理想。在只使用random label的情况下,在多个数据集、多个搜索空间上都达到了非常好的结果。

总结一下,基于收敛度量的神经网络架构搜索是一个非常新的领域。首先,相对传统的基于精度的搜索方案,它是一个强而高效的基准线。其次,收敛度量还可以作为NAS算法中生成候选架构的有效策略,对理解神经网络模型的训练过程也带来了新的启发。

2

隐式模型

下面介绍另一种神经网络架构设计思路:隐式模型。在通常的神经网络里,每一层都可以写成显式函数的形式,即y=f(x;w)。而隐式模型则是使用隐函数,例如f(x,y;w)=0,来建模其中的各个层。这种做法粗看起来多此一举,因为隐式模型在推理阶段还需要求解方程(或优化问题),并不如普通的显式模型用起来方便。但是隐式模型也有很多好处,例如同等参数量下更强的表示能力,非常大的感受野等等。

隐式模型的研究历史比较长远,例如已经有不少工作将CRF、维纳滤波、Tree Filter等图像处理常用的隐式模型引入到神经网络里。但给我印象最深的是NeurIPS 2019的深度不动点模型(DEQ)。其主要想法是把各层的函数映射写成不动点迭代的形式。例如,输入是x,输出是z,但是输出z同时也出现在了输入x里。因此,必须要把方程解出来,才能得到输出z。这篇文章采用了牛顿迭代的方法,在前向传播中求解z;而在反向传播的时候,使用了隐函数求导的链式法则,如此可以非常高效地求出梯度。

在今年NeurIPS,这篇文章的作者进一步把这个思路推广到了主流的CV任务里(如分类、语义分割),并提出多尺度深度不动点模型(MDEQ),在很多任务中都取得了相对比较高的性能。

我们最近也参考了这类工作,把深度不动点模型运用到了目标检测领域。在目标检测中,FPN(Feature Pyramid Network)是非常常用的多尺度融合的模型,通常可以写成某种显函数的形式。而在我们的工作中,如上图所示,借用深度不动点模型的思想,将其写成了一个隐函数。这样做的好处是使得浅层和深层的信息实现彻底的融合,同时参数量也非常少,仅相当于一层fpn的参数量。

实验结果可以看出,采用了这样的一种隐函数FPN设计以后,在目前主流的检测模型上都取得了非常明显的提升。因此,我们认为隐式模型是模型设计的下一个发展方向之一,值得深入研究。

当然,目前隐函数模型也存在一些问题,例如解方程的速度非常慢,很大程度上影响了模型的实用性。这也需要学界共同努力解决。

3

重参数化模型

最后我们介绍重参数化模型,这是实用化模型的一种设计范式。所谓重参数化就是指在训练的时候使用一种神经网络结构,而在推理阶段使用另一种结构,同时保证这两个结构在数学上是等效或近似等效的。通过这样的变换技巧,我们希望模型在训练阶段比较容易收敛,容易得到更高的性能;而在推理阶段,模型结构能够在执行上比较高效,减少模型的冗余或碎片化。

下面介绍一些比较有代表性的工作,例如我的一个实习生做的ACNet V1/V2。在ACNet中,作者在实验中观察到了一个现象:对于卷积神经网络的一个kernel来说,其不同空间位置的权重重要性是不同的。一般而言,靠近kernel中心的位置,重要性会更高。

于是ACNet这篇文章设计了重参数化kernel:把一个大的3×3卷积核拆解成一个3×3加上一个1×3再加一个3×1。在这种重参数化表示模式下,kernel总参数量、总自由度其实和单个3×3是相同的,但在训练的时候,这会使得每个kernel的不同位置权重发生一些变化,它会学出一个中间权重赋值大,两边赋值比较小的结构。通过实验验证发现,这样是可以比较明显提升性能的。并且在推理阶段,上述三个卷积可以合并成一个等效的卷积运算,不增加参数量和计算量,相当于“免费涨点”。

而在ACNet V2中,我们进一步提出了一种性能更好的重参数化方法,把一个类似 Inception block的复杂结构来重参数化k×k卷积核。同样可以取得训练时的性能提升,同时推理也保持高效。

我们最新的工作RepVGG,同样是利用重参数方法,使得我们可以从头开始训练经典的VGG网络,达到媲美ResNet的高性能的同时还保持了高的推理速度。

这是如何实现的呢?原理非常简单,我们把每一个3×3卷积核拆成一个3×3卷积、一个1×1卷积,再加上一个恒等映射,共三个分支。这样,在模型训练的时候,它的表现更接近于ResNet,即更容易训练。而推理阶段,我们将三条支路合并为一个3×3卷积,从而变回了VGG网络。从应用角度来看,这种VGG网络的所有层都是3×3卷积,非常方便硬件加速,同时也缓存友好,推理高效。

总结一下,模型重参数化是一种模型等价变换技巧,它让模型在训练的时候具有容易收敛的特性,而在推理的时候又有高效推理的能力,具有很强的实用价值。

目标检测综述下载

后台回复:目标检测二十年,即可下载39页的目标检测最全综述,共计411篇参考文献。

下载2

后台回复:CVPR2020,即可下载代码开源的论文合集

后台回复:ECCV2020,即可下载代码开源的论文合集

后台回复:YOLO,即可下载YOLOv4论文和代码

重磅!CVer-论文写作与投稿交流群成立

扫码添加CVer助手,可申请加入CVer-论文写作与投稿 微信交流群,目前已满2400+人,旨在交流顶会(CVPR/ICCV/ECCV/NIPS/ICML/ICLR/AAAI等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI、中文核心等写作与投稿事宜。

同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。

一定要备注:研究方向+地点+学校/公司+昵称(如论文写作+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群

▲长按关注CVer公众号

整理不易,请给CVer点赞和在看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

旷视张祥雨:神经网络架构设计新思路 的相关文章

  • 我的2014--众人皆醉我独醒

    转眼间大学两年过去了 xff0c 舍友们还在撸游戏 xff0c 有的也找到了另一半的归属 我是我宿舍唯一一个不玩电脑游戏的人 xff0c 当然 xff0c 不是不玩游戏就代表着成绩很好 xff0c 也不代表玩游戏就不好 xff0c 但意味着
  • Java多线程通信-利用传统的线程通信wait(),notify()方法实现“生产者消费者模式”

    想利用传统的线程通信wait notify xff0c notifyAll 方法 xff0c 必须依赖于同步监听器的存在 xff0c 也就是说 xff0c 对于synchronized修饰的同步方法 xff0c 因为该类的默认实例 xff0
  • java TCP/IP实现简单的多人聊天功能

    TCP IP是可靠的网络协议 xff0c 数据的传输需要服务端和客户端之间三次 握手 xff0c 比较适合文本等一些可靠性要求高的数据传输 xff0c 但是它的效率较UDP低 下面通过一张图来简要说明使用 ServerSocket 创建 T
  • 死锁面试题(什么是死锁,产生死锁的原因及必要条件)

    什么是死锁 xff1f 所谓死锁 xff0c 是指多个进程在运行过程中因争夺资源而造成的一种僵局 xff0c 当进程处于这种僵持状态时 xff0c 若无外力作用 xff0c 它们都将无法再向前推进 因此我们举个例子来描述 xff0c 如果此
  • 标准模板库-容器

    标准模板库STL Standard Template Libarary 是一个标准类与函数模板的库 STL包含容器 容器适配器 迭代器 算法 函数对象和函数适配器 容器 用来存储和组织其他对象的对象 T是存储在容器中的元素类型的模板类型形参
  • Ubuntu18.04安装PX4踩坑、报错及解决方案整理

    笔者最近需要跑无人机巡检大坝的仿真 xff0c 于是在自己的Ubuntu2018 04中开始安装PX4 xff0c 问过不少之前已经装过PX4的师兄和同学 xff0c 都曾在PX4安装过程中踩过许多坑 xff0c 耗费了不少时间 xff0c
  • 初识ROS文件结构:以阿木实验室Prometheus项目为例

    ROS的工作空间是一个存放工程开发相关文件的文件夹 xff0c Fuerte版本之后的ROS默认使用的是Catkin编译系统 功能包是ROS软件中的基本单元 xff0c 包含ROS节点 库 配置文件等 一个文件夹是功能包的标志是该文件夹中有
  • 六轴无人机装配问题小结(Pixhawk飞控、APM固件、电机装配、电调校准)

    笔者近期需要组装一架六轴无人机供超声波避障模块 单点激光雷达等传感器的测试使用 由于是第一次碰真机 xff0c 面对散落一箱的部件还是非常的头大的 xff0c 不过好在实验室有经验的大佬能提供一些指导 xff0c 并且还能够参考 创客智造
  • 测试API接口,返回404。

    报错 xff1a 34 timestamp 34 34 2020 06 02T12 40 53 125 43 00 00 34 34 status 34 404 34 error 34 34 Not Found 34 34 message
  • 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结

    转自 xff1a http blog csdn net flydream0 article details 52317532 1 前言 bxCAN是STM32系列最稳定的IP核之一 xff0c 无论有哪个新型号出来 xff0c 这个IP核基
  • NVIDIA TX2自制底板的USB口无法使用的一种解决方法

    这是由于官方的底板上采用INA3221芯片做了电源监控电路 xff0c 只有确保5V电源达到要求的情况下才会使能USB口 而自制的底板上将上述电路省略了 xff0c 所以导致了USB口无法使用 解决办法就是要给TX2更新设备树 在网上找到一
  • Benchmark(基准测试)初相识

    一 benchmark概念 在计算中 xff0c 基准是运行一个计算机程序 一组程序或其他操作的行为 xff0c 以评估一个对象的相对性能 xff0c 通常是通过对它运行一些标准测试和试验 基准测试一词也通常用于精心设计的基准测试程序本身
  • 嵌入式中的通讯协议——UART、I2C、SPI、DMA

    目录 一 通讯的基本概念 二 USART 串口通讯 三 I2C通讯协议 四 SPI通讯协议 五 DMA 直接存储器存取 六 USART I2C SPI比较 一 通讯的基本概念 1 串行通讯与并行通讯 xff08 按数据的传送方式 xff09
  • RISC与CISC比较

    RISC的设计重点在于降低由硬件执行指令的复杂度 xff0c 因为软件比硬件容易提供更大的灵活性和更高的智能 xff0c 因此RISC设计对编译器有更高的要求 xff1b CISC的设计则更侧重于硬件执行指令的功能 xff0c 使CISC的
  • 操作系统选择调度方式和算法的若干准则

    1 调度的类型 按调度的层次 xff1a 长期 xff08 长程 作业 高级 xff09 调度 xff1b 中期 xff08 中级 中程 xff09 调度 xff1b 短期 xff08 短程 进程 低级 xff09 调度 按OS 的类型 x
  • 提灯过桥问题

    题目 xff1a 小明一家过一座桥 xff0c 过桥时是黑夜 xff0c 所以必须有灯 现在小明过桥要1秒 xff0c 小明的弟弟要3秒 xff0c 小明的爸爸要6秒 xff0c 小明的妈妈要8秒 xff0c 小明的爷爷要12秒 每次此桥最
  • 如何判断一个整数数组中是否有重复元素

    题目 xff1a 写一个函数判断一个int类型的数组是否是有效的 所谓有效是指 xff1a 假设数组大小为n xff0c 那么这个int数组里的值为0 n 1之间的数 xff0c 并且每个数只能出现一次 xff0c 否则就是无效数组 例如
  • C++发送HTTP请求---亲测可行

    转自 xff1a http hi baidu com benbearlove item 1671c23017575825b3c0c53f 环境 xp sp3 vs2008 vs2010在静态库中使用 MFC include lt afxwi
  • 百度2014开发测试工程师笔试题(沈阳站)

    时间 xff1a 2013 9 21 地点 xff1a 沈阳 职位 xff1a 开发测试工程师
  • 2014百度校招开发测试工程师笔试题

    时间 xff1a 2013 9 28 地点 xff1a 深圳 职位 xff1a 开发测试工程师

随机推荐

  • 整体了解HADOOP框架及一些开源项目

    Hadoop框架中 xff0c 有很多优秀的工具 xff0c 帮助我们解决工作中的问题 Hadoop的位置 从上图可以看出 xff0c 越往右 xff0c 实时性越高 xff0c 越往上 xff0c 涉及到算法等越多 越往上 xff0c 越
  • Kafka简介

    Kafka简介 在当前的大数据时代 xff0c 第一个挑战是海量数据的收集 xff0c 另一个就是这些数据的分析 数据分析的类型通常有用户行为数据 应用性能跟踪数据 活动数据日志 事件消息等 消息发布机制用于连接各种应用并在它们之间路由消息
  • Flume入门笔记------架构以及应用介绍

    在具体介绍本文内容之前 xff0c 先给大家看一下Hadoop业务的整体开发流程 xff1a 从Hadoop的业务开发流程图中可以看出 xff0c 在大数据的业务处理过程中 xff0c 对于数据的采集是十分重要的一步 xff0c 也是不可避
  • 分布式服务框架dubbo原理解析

    alibaba有好几个分布式框架 xff0c 主要有 xff1a 进行远程调用 类似于RMI的这种远程调用 的 dubbo hsf xff0c jms消息服务 napoli notify xff0c KV数据库 tair 等 这个框架 工具
  • Linux下安装ElasticSearch

    Linux下安装ElasticSearch 一 下载 amp 安装二 安装中遇到的问题及解决方案三 使用中遇到的问题及解决方案四 安装head五 安装kibana 一 下载 amp 安装 先安装JDK 下载elasticsearch 7 0
  • cmake学习1:基本的CMakeLists的编写

    前言 自己在使用cmake进行编译工程的时候不太了解cmake的基本使用方法 有时候出现找不到第三方库的问题也不知如何排查 因此相对cmake有个稍微系统的认识 希望能用这个强大的工具来更好的为自己的工程服务 因此总结为了几篇博客 主要参考
  • ZooKeeper 报错 ERROR [main:ZooKeeperServerMain@64] 的解决办法

    myid span class hljs type ERROR span main span class hljs type ZooKeeperServerMain span 64 span class hljs number 64 spa
  • Ubuntu14.04下安装cmake 3.9.6

    简述 xff1a CMake是一个跨平台 的编译自动配置 工具 xff0c 它使用一个名为CMakeLists txt 的文件来描述构建过程 xff0c 可以产生标准的构建文件 它可以用简单的语句来描述所有平台的安装 编译过程 它能够输出各
  • 二维数组功能测试,超详细

    include lt stdio h gt int main char buf 2 5 61 39 a 39 39 b 39 39 c 39 39 d 39 39 e 39 39 f 39 39 g 39 39 h 39 39 i 39 3
  • Cmake知识----编写CMakeLists.txt文件编译C/C++程序

    简述 xff1a CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 43 43 特性 类似UNIX下的automak
  • 知识点总结:Java核心技术(卷1)

    Java核心技术 xff08 卷1 xff09 一 基础概念 1 1 基本程序设计结构 1 1 数据类型 1 1 1 数值类型 1 从java7开始 xff0c 加上前缀0b或0B就可以写二进制 xff1b 2 指数的表示 十进制中以10为
  • 单片机-控制-直流电机-基于L9110S-、L298N、TB6612FNG驱动

    直流电机 xff08 direct current machine xff09 能将直流电能转换成机械能 xff08 直流电动机 xff09 或将机械能转换成直流电能 xff08 直流发电机 xff09 的旋转电机 它是能实现直流电能和机械
  • 【一文弄懂】张正友标定法-完整学习笔记-从原理到实战

    张正友标定法 完整学习笔记 从原理到实战 文章目录 张正友标定法 完整学习笔记 从原理到实战 xff08 零 xff09 前言 xff1a 1 为什么需要标定 xff1f 2 相机标定的已知条件和待求解是什么 xff1f 标定前的已知条件
  • realsense ——SR300 相机使用小记

    环境搭建相关的参考资料挺多的 xff0c 这里就不多说了 这里记一些相关的api 算了 xff0c 还是给出自己的配置记录吧https blog csdn net hehehetanchaow article details 1057958
  • kubeadm安装部署Kubernetes(k8s)与部署 Dashboard web_UI(附Kubernetes安装脚本)

    前言 Kubernetes作为容器编排工具 xff0c 简化容器管理 xff0c 提升工作效率而颇受青睐 很多新手部署Kubernetes由于 科学上网 问题举步维艰 xff0c 本文以实战经验详解kubeadm不用 科学上网 部署Kube
  • 开源飞控资料

    四轴开源资料 http merafour blog 163 com blog m 61 0 amp t 61 1 amp c 61 fks 08406908208008307008408308409508608708806608408408
  • 深度学习视频数据集(动作识别):UCF-101

    UCF 101 官网 xff1a https www crcv ucf edu research data sets ucf101 网盘 xff1a 链接 xff1a https pan baidu com s 1RsJuykWyUlQ4
  • 视频分析模型(行为识别):C3D

    C3D 文章目录 C3D1 简介1 1 背景1 2 C3D特点1 3 视频描述符1 4 C3D的结果 2 架构2 1 工作流程2 2 网络结构2 3 3D卷积和池化2 4 kernel 的时间深度 3 可视化3 1 特征图3 2 特征嵌入
  • OpenCV下车牌定位算法实现代码 (二)

    前面介绍了用OpenCV的squares实例定位车牌的算法 xff0c 效果不是很理想 车牌定位的方法有很多种 xff0c 这里我们从汽车图像的纹理特征入手 xff0c 找出车牌不同于背景的特征是车牌定位的关键 观察多幅汽车图片我们会发现车
  • 旷视张祥雨:神经网络架构设计新思路

    点击上方 CVer xff0c 选择加 34 星标 34 置顶 重磅干货 xff0c 第一时间送达 本文转载自 xff1a AI科技评论 作者 蒋宝尚 编辑 青暮 深度学习模型在很多任务上都取得了不错的效果 xff0c 但调参却是一项非常痛