实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN

2023-11-04

   Mask R-CNN是ICCV 2017的best paper,彰显了机器学习计算机视觉领域在2017年的最新成果。在机器学习2017年的最新发展中,单任务的网络结构已经逐渐不再引人瞩目,取而代之的是集成,复杂,一石多鸟的多任务网络模型。Mask R-CNN就是典型的代表。本篇大作的一作是何凯明,在该篇论文发表的时候,何凯明已经去了FaceBook。我们先来看一下,Mask R-CNN取得了何等的成果。



   大家可以看到,在实例分割Mask R-CNN框架中,还是主要完成了三件事情:

   1) 目标检测,直接在结果图上绘制了目标框(bounding box)。

   2) 目标分类,对于每一个目标,需要找到对应的类别(class),区分到底是人,是车,还是其他类别。

   3) 像素级目标分割,在每个目标中,需要在像素层面区分,什么是前景,什么是背景。

   可是,在解析Mask R-CNN之前,笔者不得不告诉大家一个事实,Mask R-CNN是继承于Faster R-CNN (2016)的,Mask R-CNN只是在Faster R-CNN上面加了一个Mask Prediction Branch (Mask 预测分支),并且改良了ROI Pooling,提出了ROI Align。从统计数据来看,"Faster R-CNN"在Mask R-CNN论文的前三章中出现了二十余次,因此,如果不了解Ross Girshick和何凯明之前的工作,是很难弄懂Mask R-CNN的。所以,笔者在解析Mask R-CNN之前,先给大家分析一下Faster R-CNN。

   在给大家解析Faster R-CNN之前,笔者又要告诉大家,Faster R-CNN是继承于Fast R-CNN (2015),Fast R-CNN继承于R-CNN (2014)。因此,索性破釜沉舟,在本篇博文中,笔者就按照R-CNN, Fast R-CNN,Faster R-CNN再到Mask R-CNN的发展顺序全部解析。

   首先时间回到了2014年,在2014年,正是深度学习如火如荼的发展的第三年。在CVPR 2014年中Ross Girshick提出的R-CNN中,使用到了卷积神经网络来进行目标检测。下面笔者就来概述一下R-CNN是如何采用卷积神经网络进行目标检测的工作。


   首先模型输入为一张图片,然后在图片上提出了约2000个待检测区域,然后这2000个待检测区域一个一个地(串联方式)通过卷积神经网络提取特征,然后这些被提取的特征通过一个支持向量机(SVM)进行分类,得到物体的类别,并通过一个bounding box regression调整目标包围框的大小。下面,笔者简要概述一下R-CNN是怎么实现以上步骤的。

   首先在第一步提取2000个待检测区域的时候,是通过一个2012年提出的方法,叫做selective search。简单来说就是通过一些传统图像处理方法将图像分成若干块,然后通过一个SVM将属于同一目标的若干块拿出来。selective search的核心是一个SVM,架构如下所示:


   然后在第二步进行特征提取的时候,Ross直接借助了当时深度学习的最新成果AlexNet (2012)。那么,该网络是如何训练的呢?是直接在ImageNet上面训练的,也就是说,使用图像分类数据集训练了一个仅仅用于提取特征的网络。

   在第三步进行对目标的时候,使用了一个支持向量机(SVM),在训练这个支持向量机的时候,结合目标的标签(类别)与包围框的大小进行训练,因此,该支持向量机也是被单独训练的。

   在2014年R-CNN横空出世的时候,颠覆了以往的目标检测方案,精度大大提升。对于R-CNN的贡献,可以主要分为两个方面:

   1) 使用了卷积神经网络进行特征提取

   2) 使用bounding box regression进行目标包围框的修正

   但是,我们来看一下,R-CNN有什么问题:

   1) 耗时的selective search,对一帧图像,需要花费2s。

   2) 耗时的串行式CNN前向传播,对于每一个RoI,都需要经过一个AlexNet提特征,为所有的RoI提特征大约花费47s。

   3) 三个模块是分别训练的,并且在训练的时候,对于存储空间的消耗很大。

   那么,面对这种情势,Ross在2015年提出的Fast R-CNN进行了改进,下面我们来概述一下Fast R-CNN的解决方案:


   首先还是采用selective search提取2000个候选框,然后,使用一个神经网络对全图进行特征提取。接着,使用一个RoI Pooling Layer在全图特征上摘取每一个RoI对应的特征,再通过全连接层(FC Layer)进行分类与包围框的修正。Fast R-CNN的贡献可以主要分为两个方面:

   1) 取代R-CNN的串行特征提取方式,直接采用一个神经网络对全图提取特征(这也是为什么需要RoI Pooling的原因)。

   2) 除了selective search,其他部分都可以合在一起训练。

   可是,Fast R-CNN也有缺点,体现在耗时的selective search还是依旧存在。那么,如何改良这个缺陷呢?发表于2016年的Faster R-CNN进行了如下创新:

   取代selective search,直接通过一个Region Proposal Network (RPN)生成待检测区域,这么做,在生成RoI区域的时候,时间也就从2s缩减到了10ms。我们来看一下Faster R-CNN是怎么做的。


   首先使用共享的卷积层为全图提取特征,然后将得到的feature maps送入RPN,RPN生成待检测框(指定RoI的位置)并对RoI的包围框进行第一次修正。之后就是Fast R-CNN的架构了,RoI Pooling Layer根据RPN的输出在feature map上面选取每个RoI对应的特征,并将维度置为定值。最后,使用全连接层(FC Layer)对框进行分类,并且进行目标包围框的第二次修正。尤其注意的是,Faster R-CNN真正实现了端到端的训练(end-to-end training)

   要理解Mask R-CNN,只有先理解Faster R-CNN。因此,笔者根据Faster R-CNN的架构(Faster R-CNN的ZF model的train.prototxt),画了一个结构图,如下所示:


   如上图所示,Faster R-CNN的结构主要分为三大部分,第一部分是共享的卷积层-backbone,第二部分是候选区域生成网络-RPN,第三部分是对候选区域进行分类的网络-classifier。其中,RPN与classifier部分均对目标框有修正。classifier部分是原原本本继承的Fast R-CNN结构。我们下面来简单看看Faster R-CNN的各个模块。

   首先来看看RPN的工作原理:


   简单地说,RPN依靠一个在共享特征图上滑动的窗口,为每个位置生成9种预先设置好长宽比与面积的目标框(文中叫做anchor)。这9种初始anchor包含三种面积(128×128,256×256,512×512),每种面积又包含三种长宽比(1:1,1:2,2:1)。示意图如下所示:


   由于共享特征图的大小约为40×60,RPN生成的初始anchor的总数约为20000个(40×60×9)。对于生成的anchor,RPN要做的事情有两个,第一个是判断anchor到底是前景还是背景,意思就是判断这个anchor到底有没有覆盖目标,第二个是为属于前景的anchor进行第一次坐标修正。对于前一个问题,Faster R-CNN的做法是使用SoftmaxLoss直接训练,在训练的时候排除掉了超越图像边界的anchor;对于后一个问题,采用SmoothL1Loss进行训练。那么,RPN怎么实现呢?这个问题通过RPN的本质很好求解,RPN的本质是一个树状结构,树干是一个3×3的卷积层,树枝是两个1×1的卷积层,第一个1×1的卷积层解决了前后景的输出,第二个1×1的卷积层解决了边框修正的输出。来看看在代码中是怎么做的:


   从如上代码中可以看到,对于RPN输出的特征图中的每一个点,一个1×1的卷积层输出了18个值,因为是每一个点对应9个anchor,每个anchor有一个前景分数和一个背景分数,所以9×2=18。另一个1×1的卷积层输出了36个值,因为是每一个点对应9个anchor,每个anchor对应了4个修正坐标的值,所以9×4=36。那么,要得到这些值,RPN网络需要训练。在训练的时候,就需要对应的标签。那么,如何判定一个anchor是前景还是背景呢?文中做出了如下定义:如果一个anchor与ground truth的IoU在0.7以上,那这个anchor就算前景(positive)。类似地,如果这个anchor与ground truth的IoU在0.3以下,那么这个anchor就算背景(negative)。在作者进行RPN网络训练的时候,只使用了上述两类anchor,与ground truth的IoU介于0.3和0.7的anchor没有使用。在训练anchor属于前景与背景的时候,是在一张图中,随机抽取了128个前景anchor与128个背景anchor。

   在上一段中描述了前景与背景分类的训练方法,本段描述anchor边框修正的训练方法。边框修正主要由4个值完成,tx,ty,th,tw。这四个值的意思是修正后的框在anchor的x和y方向上做出平移(由tx和ty决定),并且长宽各自放大一定的倍数(由th和ty决定)。那么,如何训练网络参数得到这四个值呢?Fast R-CNN给出了答案,采用SmoothL1loss进行训练,具体可以描述为:


   到这里有个问题,就是不是对于所有的anchor,都需要进行anchor包围框修正的参数训练,只是对positive的anchors有这一步。因此,在训练RPN的时候,只有对128个随机抽取的positive anchors有这一步训练。因此,训练RPN的损失函数可以写成:


   在这里Lreg就是上面的Lloc,λ被设置为10,Ncls为256,Nreg为2400。这样设置的话,RPN的两部分loss值能保持平衡。

   到这里RPN就解析完毕了,下面我们来看看后面的classifier,但是在介绍classifier之前,我们先来看看RoI Pooling到底做了什么?

   首先第一个问题是为什么需要RoI Pooling?答案是在Fast R-CNN中,特征被共享卷积层一次性提取。因此,对于每个RoI而言,需要从共享卷积层上摘取对应的特征,并且送入全连接层进行分类。因此,RoI Pooling主要做了两件事,第一件是为每个RoI选取对应的特征,第二件事是为了满足全连接层的输入需求,将每个RoI对应的特征的维度转化成某个定值。RoI Pooling示意图如下所示:


   如上图所示,对于每一个RoI,RoI Pooling Layer将其对应的特征从共享卷积层上拿出来,并转化成一样的大小(6×6)。

   在RoI Pooling Layer之后,就是Fast R-CNN的分类器和RoI边框修正训练。分类器主要是分这个提取的RoI具体是什么类别(人,车,马等等),一共C+1类(包含一类背景)。RoI边框修正和RPN中的anchor边框修正原理一样,同样也是SmoothL1 Loss,值得注意的是,RoI边框修正也是对于非背景的RoI进行修正,对于类别标签为背景的RoI,则不进行RoI边框修正的参数训练。对于分类器和RoI边框修正的训练,可以公式描述如下:


   上式中u>=1表示RoI边框修正是对于非背景的RoI而言的,实验中,上式的λ取1。

   在训练分类器和RoI边框修正时,步骤如下所示:

   1) 首先通过RPN生成约20000个anchor(40×60×9)。

   2) 对20000个anchor进行第一次边框修正,得到修订边框后的proposal。

   3) 对超过图像边界的proposal的边进行clip,使得该proposal不超过图像范围。

   4) 忽略掉长或者宽太小的proposal。

   5) 将所有proposal按照前景分数从高到低排序,选取前12000个proposal。

   6) 使用阈值为0.7的NMS算法排除掉重叠的proposal。

   7) 针对上一步剩下的proposal,选取前2000个proposal进行分类和第二次边框修正。

   总的来说,Faster R-CNN的loss分两大块,第一大块是训练RPN的loss(包含一个SoftmaxLoss和SmoothL1Loss),第二大块是训练Fast R-CNN中分类器的loss(包含一个SoftmaxLoss和SmoothL1Loss),Faster R-CNN的总的loss函数描述如下:


   然后,对于Faster R-CNN的训练方式有三种,可以被描述如下:

   1) RPN和Fast R-CNN交替训练,这种方式也是作者采用的方式。

   2) 近似联合RPN和Fast R-CNN的训练,在训练时忽略掉了RoI边框修正的误差,也就是说只对anchor做了边框修订,这也是为什么叫"近似联合"的原因。

   3) 联合RPN和Fast R-CNN的训练。

   对于作者采用的交替训练的方式,步骤如下:

   1) 使用在ImageNet上预训练的模型初始化共享卷积层并训练RPN

   2) 使用上一步得到的RPN参数生成RoI proposal。再使用ImageNet上预训练的模型初始化共享卷积层,训练Fast R-CNN部分(分类器和RoI边框修订)。

   3) 将训练后的共享卷积层参数固定,同时将Fast R-CNN的参数固定,训练RPN。(从这一步开始,共享卷积层的参数真正被两大块网络共享)

   4) 同样将共享卷积层参数固定,并将RPN的参数固定,训练Fast R-CNN部分。

   Faster R-CNN的测试流程和训练流程挺相似,描述如下:

   1) 首先通过RPN生成约20000个anchor(40×60×9)通过RPN

   2) 对20000个anchor进行第一次边框修正,得到修订边框后的proposal。

   3) 对超过图像边界的proposal的边进行clip,使得该proposal不超过图像范围。

   4) 忽略掉长或者宽太小的proposal。

   5) 将所有proposal按照前景分数从高到低排序,选取前6000个proposal。

   6) 使用阈值为0.7的NMS算法排除掉重叠的proposal。

   7) 针对上一步剩下的proposal,选取前300个proposal进行分类和第二次边框修正。

   到这里,Faster R-CNN就介绍完毕了。接下来 到了Mask R-CNN,我们来看看RoI Pooling出了什么问题:

   问题1:从输入图上的RoI到特征图上的RoI feature,RoI Pooling是直接通过四舍五入取整得到的结果。

   这一点可以在代码中印证:


   可以看到直接用round取的值,这样会带来什么坏处呢?就是RoI Pooling过后的得到的输出可能和原图像上的RoI对不上,如下图所示:


   右图中蓝色部分表示包含了轿车主体的的信息的方格,RoI Pooling Layer的四舍五入取整操作导致其进行了偏移。

   问题2:再将每个RoI对应的特征转化为固定大小的维度时,又采用了取整操作。在这里笔者举例讲解一下RoI Pooling的操作:


   在从RoI得到对应的特征图时,进行了问题1描述的取整,在得到特征图后,如何得到一个6×6的全连接层的输入呢?RoI Pooling这样做:将RoI对应的特征图分成6×6块,然后直接从每块中找到最大值。在上图中的例子中,比如原图上的的RoI大小是280×480,得到对应的特征图是18×30。将特征图分成6块,每块大小是3×5,然后在每一块中分别选择最大值放入6×6的对应区域中。在将特征图分块的时候,又用到了取整,这点同样可以在代码中得到佐证:


   这种取整操作(在Mask R-CNN中被称为quantization)对RoI分类影响不大,可是对逐像素的预测目标是有害的,因为对每个RoI取得的特征并没有与RoI对齐。因此,Mask R-CNN对RoI Pooling做了改进并提出了RoI Align。

   RoI Align的主要创新点是,针对问题1,不再进行取整操作。针对问题2,使用双线性插值来更精确地找到每个块对应的特征。总的来说,RoI Align的作用主要就是剔除了RoI Pooling的取整操作,并且使得为每个RoI取得的特征能够更好地对齐原图上的RoI区域。

   下图阐述了Mask R-CNN的Mask branch:


   在Mask R-CNN中的RoI Align之后有一个"head"部分,主要作用是将RoI Align的输出维度扩大,这样在预测Mask时会更加精确。在Mask Branch的训练环节,作者没有采用FCN式的SoftmaxLoss,反而是输出了K个Mask预测图(为每一个类都输出一张),并采用average binary cross-entropy loss训练,当然在训练Mask branch的时候,输出的K个特征图中,也只是对应ground truth类别的那一个特征图对Mask loss有贡献。

   Mask R-CNN的训练损失函数可以描述为:


   在上式中,Lbox和Lmask都是对positive RoI才会起作用的。

   在Mask R-CNN中,相较于Faster R-CNN还有些略微的调整,比如positive RoI被定义成了与Ground truth的IoU大于0.5的(Faster R-CNN中是0.7)。太过于细节的东西本篇博文不再赘述,详情参见Mask R-CNN中的Implementation Details。

   到这里再将Mask R-CNN和FCIS做个比较,首先两者的相同点是均继承了Faster R-CNN的RPN部分不同点是对于FCIS,预测mask和分类是共享的参数。而Mask R-CNN则是各玩各的,两个任务各自有各自的可训练参数。对于这一点,Mask R-CNN论文里还专门作了比较,显示对于预测mask和分类如果使用共享的特征图对于某些重叠目标可能会出现问题。


   Mask R-CNN的实验取得了很好的效果,达到甚至超过了state-of-the-art的水平。不过训练代价也是相当大的,需要8块GPU联合训练。


   Mask R-CNN的实验非常详细,还做了很多对比实验,比如说改换网络深度,在训练mask branch时的误差种类,将RoI Align同RoI Pooling和RoI Warping进行比较,改变预测mask的方式(FCN和全连接层)等,详情请参见Mask R-CNN的实验部分。





   到这里Mask R-CNN介绍就接近尾声了,笔者还想说一些自己的思考与感想:

   1) 可继承工作的充分体现。大家看到Mask R-CNN的结构相当复杂,实际上是继承了大量之前的工作。首先bounding box regression在2014年的R-CNN中就出现过。Mask R-CNN的主要创新点RoI Align改良于RoI Pooling,而RoI Pooling是在2015年的Fast R-CNN中提出的。对于RPN的应用,更是直接继承了2016年的Faster R-CNN。值得一提的是,上述的每一篇文章,都是颠覆目标检测领域计算架构的杰出作品。

   2)集成的工作。还是那句老话,到了2017-2018年,随着深度学习的高速发展,单任务模型已经逐渐被抛弃。取而代之的是更集成,更综合,更强大的多任务模型。Mask R-CNN就是其中的代表。

   3)引领潮流。再次向何凯明和Ross Girshick致敬,他们的实力引领了目标检测领域的发展,因此无论他们在哪,无论是在微软还是FaceBook,他们的idea和作品都被非常多的人应用或者继承。

   欢迎阅读笔者后续博客,各位读者朋友的支持与鼓励是我最大的动力!


written by jiong

鸿爪踏雪泥,还是来得及。

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

实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN 的相关文章

  • 基于GroundingDINO构建目标检测数据集自动标注工具-支持COCO和VOC格式

    0 介绍 GroundingDINO是最新发布的zero shot目标检测器 在多个数据集上取得了很好的结果 在该方法的基础上 本人修复该方法自动标注的bug 并增加VOC格式 1 安装GroundingDINO 根据github提供的源码
  • 【YOLOv5-6.x】解决加入CA注意力机制不显示FLOPs的问题

    1 问题描述 问题源自之前写的一篇博客 魔改YOLOv5 6 x 中 加入ACON激活函数 CBAM和CA注意力机制 加权双向特征金字塔BiFPN 尝试在YOLOv5的backbone中加入Coordinate Attention 虽然加入
  • Object Detection(目标检测神文)

    目标检测神文 非常全而且持续在更新 转发自 https handong1587 github io deep learning 2015 10 09 object detection html 如有侵权联系删除 更新时间 20190226
  • 目标检测入坑指南3:VGGNet神经网络

    学了蛮久的目标检测了 但是有好多细节总是忘或者模棱两可 感觉有必要写博客记录一下学习笔记和一些心得 既可以加深印象又可以方便他人 博客内容集成自各大学习资源 所以图片也就不加水印了 需要自取 本专栏会详细记录本人在研究目标检测过程中的所学所
  • 【计算机视觉

    文章目录 一 检测相关 11篇 1 1 Perspective aware Convolution for Monocular 3D Object Detection 1 2 SCoRD Subject Conditional Relati
  • Anchor-Free目标检测模型

    FCOS Fully Convolutional One Stage Object Detection 已开源 FoveaBox Beyond Anchor based Object Detector 未开源 FCOS 摘要 我们提出了一种
  • 从近两年的CVPR会议来看,目标检测的研究方向是怎么样的?

    Old Xie CS2EE2CS Naiyan Wang 等 85 人赞同 目前object detection的工作可以粗略的分为两类 1 使用region proposal的 目前是主流 比如RCNN SPP Net Fast RCNN
  • 【深度学习】yolov5 tag7.0 实例分割 从0到1的体会,从模型训练,到量化完成,bug避坑

    这里记录下yolov5 tag7 0的实例分割 因为也用过paddle家族的实例分割 能够训练出来 但是开放restiful api时遇到点小问题 还是yolov爽啊 通过这篇博文 您可以一步步的搭建自己的分割网络 文章目录 前言 一 小试
  • YOLOv8改进开源

    大致介绍一下AI全栈技术社区的相关内容 主要涵盖了YOLO全系列模型的改进 量化 蒸馏 剪枝以及不同工具链的使用 同时也涵盖多目标跟踪 语义分割 3D目标检测 AI模型部署等内容 具体内容小伙伴们可以参考下面的目录部分 所有内容均有答疑服务
  • Faster R-CNN系列之MATLAB篇

    我发现 我是个懒人 不对 我一直是个懒人 但是 电光火石间 不知怎么地 我决定 我写个博客吧 我是废话的分割线 最开始接触Faster R CNN 先尝试跑的其实是PYTHON版 但是编译过程中出错了 我又从来没接触过python 自己稍稍
  • 【DETR】3、Conditional DETR

    文章目录 一 Conditional DETR 是怎么被提出来的 二 Conditional DETR 的具体实现 2 1 框架结构 2 2 DETR 的 cross attention 和 Conditional DETR 的 cross
  • FPN网络详解

    1 特征金字塔 特征金字塔 Feature Pyramid Networks FPN 的基本思想是通过构造一系列不同尺度的图像或特征图进行模型训练和测试 目的是提升检测算法对于不同尺寸检测目标的鲁棒性 但如果直接根据原始的定义进行FPN计算
  • 【计算机视觉】消融实验(Ablation Study)是什么?

    文章目录 一 前言 二 定义 三 来历 四 举例说明 一 前言 我第一次见到消融实验 Ablation Study 这个概念是在论文 Faster R CNN 中 消融实验类似于我们熟悉的 控制变量法 假设在某目标检测系统中 使用了A B
  • 如何在linux系统下创建空白文本.txt文件

    如何在linux系统下创建空白文本 txt文件 跳转到要新建文本的目录下 打开终端 输入命令 最后 跳转到要新建文本的目录下 可利用cd命令在终端跳转 或者直接到要新建文件的目录文件夹中 打开终端 输入命令 touch 文本名 txt 例如
  • 【pytorch目标检测】创新之作:Fast R-CNN算法解读

    背景 2015年 提出了Fast RCNN算法 训练步骤实现端到端 CNN 基于VGG6 Fast R CNN是基于R CNN和SPPnets进行的改进 成果 训练速度比RCNN块9倍 测试速度快乐23倍 准确率68 4 SPPnets网络
  • 目标检测算法改进系列之添加SCConv空间和通道重构卷积

    SCConv 空间和通道重构卷积 SCConv 空间和通道重构卷积 的高效卷积模块 以减少卷积神经网络 CNN 中的空间和通道冗余 SCConv旨在通过优化特征提取过程 减少计算资源消耗并提高网络性能 该模块包括两个单元 1 空间重构单元
  • 目标检测中的损失函数:IOU_Loss、GIOU_Loss、DIOU_Loss和CIOU_Loss

    文章目录 前言 1 IOU Loss Intersection over Union Loss 2 GIOU Loss Generalized Intersection over Union Loss 3 DIOU Loss Distanc
  • 什么是概率匹配

    概率匹配是一种在信息论和统计学中常用的方法 用于将一个随机事件的概率分布与另一个概率分布进行匹配或逼近 它在数据处理 编码 压缩和模型选择等领域具有重要的应用 为我们理解和处理复杂的概率分布提供了一种有效的工具 首先 让我们来了解概率匹配的
  • 深入探讨人工智能目标检测:算法、应用与未来趋势

    导言 人工智能目标检测是计算机视觉领域的重要任务之一 旨在使计算机系统能够自动识别并定位图像或视频中的特定目标 本文将深入研究人工智能目标检测的算法原理 广泛应用以及未来发展趋势 1 目标检测算法 传统算法 基于手工设计特征和分类器的方法
  • 作物叶片病害识别系统

    介绍 由于植物疾病的检测在农业领域中起着重要作用 因为植物疾病是相当自然的现象 如果在这个领域不采取适当的护理措施 就会对植物产生严重影响 进而影响相关产品的质量 数量或产量 植物疾病会引起疾病的周期性爆发 导致大规模死亡 这些问题需要在初

随机推荐

  • 1.2【Mask-RCNN训练自己的数据集】---- Part Two: 模型训练(全部流程总结+部分释义)

    二 编写模型训练代码 打开MaskRCNN文件夹下的samples文件夹 存在以下四个文件夹 下述模型训练代码将对shapes文件夹下的train shapes ipnyb 进行修改 这里是jupyter的文本格式 笔者不太习惯使用这种格式
  • Linux input 子系统详解

    1 模块概述 1 1 相关资料和代码研究 drivers input include uapi linux input event codes h 2 模块功能 linux核心的输入框架 3 模块学习 3 1 概述 Linux输入设备种类繁
  • [转] DSP缓存机制

    本文主要以DSP讲解cache原理 但原理与CPU是相通的 故转载 原文地址 DSP 缓存机制 桑迪亚哥的博客 CSDN博客 dsp的cache DSP 缓存机制 注 本文说明的DSP基于TI c6000系列的C66x DSP 目录 DSP
  • 分类模型之职员离职分析

    今天要带来的是机器学习中几种重要的分类模型 分别是 逻辑回归 支持向量机 决策树 随机森林这四种算法模型 这里就不主要介绍模型背后的理论知识了 直接上数据 在数据分析中再来谈这些算法模型 今天要讨论的是Kaggle上的公司职员离职数据集 这
  • JS 简单实现电子时钟

    时钟的确是非常简单的一个功能 我们只需要通过js编写一个方法来获取时间的时分秒 再用定时器每隔一秒进行刷新即可 注意 通过Date类拿到的时分秒直接拼接起来可能是这样的 8 2 3 而我们想看到的效果应该是 08 02 03 所以这里我们会
  • 对于区块链,各个国家对它又是一种什么态度呢?

    在这场席卷全球的区块链技术 数字资产变革中 区块链作为一种颠覆性的技术 它的出现对各国政府提出了新的问题 对于这个问题 各国政府给出了怎样的答复 区块链在各国发展的政策环境又如何 并且我们除了要了解本国的立场之外 也需要掌握其他国家的态度
  • 谁发明了区块链?谁是中本聪?

    区块链技术首次在由中本聪 Satoshi Nakamoto 撰写的题为 比特币 对等电子现金系统 的论文中介绍 在这篇文章中 中本聪描述了区块链技术的基础 所有区块链创新都可以追溯到中本聪 他是区块链和比特币的发明者 但是 谁是中本聪 没人
  • 使用vscode搭建vue项目并引用element-ui

    1 环境准备 Visual studio code nodejs vue cli yarn 2 新建项目 1 打开Visual studio code 打开一个你想要创建项目的文件夹 2 打开集成终端如下图所示或者使用快捷键 3 在终端中输
  • LevelDB.NET 使用

    LevelDB是google实现的非常高效的kv数据库 多数是和redis比较 这里记录下如何使用 新建项目 Nuget添加类库 通过反编译发现运行时是 NET 4 0 这里我用4 5测试需要选择64位平台 代码 写数据 db Put Wr
  • python3排序 sorted(key=lambda)

    python3排序sorted key lambda 当待排序列表的元素由多字段构成时 我们可以通过sorted iterable key reverse 的参数key来制定我们根据那个字段对列表元素进行排序 key lambda 元素 元
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • StringBuilder.append()与String的"+"的效率PK

    如果String通过 来拼接 如果拼接的字符串是常量 则效率会非常高 因为会进行编译时优化 这个时候StringBuilder的append 是达不到的 如果将String的 放在循环中 会创建很多的StringBuilder对象 并且执行
  • 信贷风控中Vintage、滚动率、迁移率的理解

    风控业务背景 信贷风险管理是一门艺术 更是一门科学 资产质量分析中常会涉及到三个理论 账龄分析 Vintage Analysis 用以分析账户成熟期 变化规律等 滚动率分析 Roll Rate Analysis 用以定义账户好坏程度 迁移率
  • 未解决,fsmgmt.msc共享文件夹管理中,文件夹无属性选项

    之前用的win10家庭版 都没有fsmgmt msc 现在升级成专业版发现没有属性 https jingyan baidu com article 358570f69e9b13ce4724fce9 html 我的电脑
  • windows下redis设置redis开机自启动方法

    1 查看一下Redis服务是否注册 1 Win R快捷键输入services msc 然后回车或者点击确定 2 win10桌面 此电脑 右键单击 管理 gt 服务与应用程序 gt 服务 此处输入R 即可看到R开头的服务列表 在没有添加服务的
  • IDEA+Springboot+Git+jenkins+tomcat实现自动部署-基本流程

    jenkins构建 前言 测试项目准备 一 jenkins构建一个新项目 把Gitee仓库的项目获取到本地打包运行 二 jenkins构建一个新项目 把Gitee仓库的项目获取到本地打包 通过Publish Over SSH传输到另外一台机
  • 《在IDEA中配置MySQL的驱动程序》

    一 下载mysql connecter 下载地址 http dev mysql com downloads connector j 具体步骤已在下图中标注 注意是下载zip压缩包格式 因为解压缩安装很方便 下载完成后得到压缩包如下 二 安装
  • 深度详解ResNet到底在解决一个什么问题?

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 https www zhihu com question 64494691 本文仅作为学术分享 如果侵权 会删文处理 最近看到不少ResNet的变体 比如ResNeSt
  • 【软考】-高项-整合管理-重要知识点思维导图

    整合管理 文章目录 整合管理 含义 内容 项目管理计划 含义 组件 开工 会议 分类 目的作用 如何召开高效会议 批准的变更请求 可交付成果 工作绩效数据 变更的流程 1 提出与记录变更申请 2 初审变更 初审目的 常见方式为变更申请文档的
  • 实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN

    Mask R CNN是ICCV 2017的best paper 彰显了机器学习计算机视觉领域在2017年的最新成果 在机器学习2017年的最新发展中 单任务的网络结构已经逐渐不再引人瞩目 取而代之的是集成 复杂 一石多鸟的多任务网络模型 M