摘要:Hyperband算法的伪代码如下: R是单个超参数组合能够分配的最大资源预算,如1个epoch就是1个预算,R=81,就表示81个epoch,smax=4,B=5R=405,当s=4时,初始为81个点,每个点训练1个epoch,然后选择最好的27个点,每个点再训练3个epoch,...,直到最后只 阅读全文
posted @ 2020-10-07 18:14 MSTK 阅读(48) 评论(0) 推荐(0) 编辑
摘要:超参数(Hyper-parameter)是定义模型或者定义训练过程的参数,是相对于模型参数(Parameter)来说的,比如目标检测网络的网络结构,激活函数的选择,学习率的大小,Anchor的尺寸等等,都属于超参数.超参数对网络的性能(如目标检测网络的mAP等)有很大的影响,因此需要找到性能最优的参 阅读全文
posted @ 2020-10-04 16:01 MSTK 阅读(69) 评论(0) 推荐(0) 编辑
摘要:提交COCO Detection Challenge (Bounding Box)时出现错误: WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory lim 阅读全文
posted @ 2020-09-15 19:49 MSTK 阅读(107) 评论(0) 推荐(0) 编辑
摘要:和原始的NMS不同,DIoU-NMS不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离,使用了新的公式决定一个Box是否被删除: 其中,RDIoU是两个Box中心点之间的距离,用下面的公式表示: 其中p(.)是距离,b和bgt表示两个box,c是包含两个box的最小box的对角线长度,如下图所 阅读全文
posted @ 2020-08-30 20:38 MSTK 阅读(349) 评论(0) 推荐(0) 编辑
摘要:运行下面代码时出错: net = model_zoo.get_model('faster_rcnn_resnet50_v1b_voc', pretrained=True, ctx=mx.gpu(0)) 原因是安装的mxnet版本不对,以前安装的是mxnet-cu90,换成mxnet-cu100就正常 阅读全文
posted @ 2020-07-27 20:08 MSTK 阅读(1270) 评论(0) 推荐(0) 编辑
摘要:安装TensorFlow 2.0.0以后,运行出现了下面的错误: tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() failed. Status: CUDA driver version is insuffi 阅读全文
posted @ 2020-06-17 17:19 MSTK 阅读(751) 评论(0) 推荐(0) 编辑
摘要:安装Tensorflow 2.0以后,运行 import tensorflow as tf 出现下面的错误: 原因及解决的办法:以前是用pip install tensorflow-gpu安装的,没有指定版本,删除以前安装的版本,指定版本为2.0.0-alpha0安装: pip install te 阅读全文
posted @ 2020-06-16 14:07 MSTK 阅读(494) 评论(0) 推荐(0) 编辑
摘要:GluonCV是分布式机器学习社区(DMLC)发布的深度学习计算机视觉工具箱,提供了计算机视觉顶级的算法实现与基本运算(另一个是自然语言处理工具箱GluonNLP). GluonCV简单易用,有很多训练好的模型,通过一行代码就可以下载使用,非常方便. 由于GluonCV是基于MXNet,所以,要先安 阅读全文
posted @ 2020-05-25 15:38 MSTK 阅读(308) 评论(0) 推荐(0) 编辑
摘要:非极大值抑制(Non-Maximum Suppression,NMS)是在目标检测中广泛应用的一种方法:首先对每一个预测框给出一个分类和置信度,对每一类的框,按照置信度从小到大排序;然后选中置信度最大的框,依次和前面的同类框计算IOU,对于IOU大于阈值的框,就直接删除掉(也可以理解成将这些框的置信 阅读全文
posted @ 2020-05-13 18:08 MSTK 阅读(207) 评论(0) 推荐(0) 编辑
摘要:Python对List的排序主要有两种方法:一种是用sorted()函数,这种函数要求用一个变量接收排序的结果,才能实现排序;另一种是用List自带的sort()函数,这种方法不需要用一个变量接收排序的结果.这两种方法的参数都差不多,都有key和reverse两个参数,sorted()多了一个排序对 阅读全文
posted @ 2020-04-30 17:34 MSTK 阅读(1641) 评论(0) 推荐(0) 编辑
摘要:2. Network Architecture 网络分为两个部分:第一部分是backbone卷积网络,用于提取整张图的特征;第二部分是head,用于对ROI进行处理,分为两个分支,一个分支用来对box分类和回归,另一部分进行mask预测。 网络的Backbone采用ResNet或者FPN(Featu 阅读全文
posted @ 2020-03-31 20:23 MSTK 阅读(105) 评论(0) 推荐(0) 编辑
摘要:网络的结构如下: 采用FPN结构,Backbone是RetinalNet,分成了P3~P7共5个Layer,分别训练不同尺寸的Box.每个Layer对应的Head有2个分支,包括一个单独的分支用来预测分类,另一个分支用来预测两部分,一部分是Box坐标的回归,另一部分是GT Box和Anchor之间的 阅读全文
posted @ 2020-02-24 16:11 MSTK 阅读(329) 评论(0) 推荐(0) 编辑
摘要:Keras定义Layer的方法. 阅读全文
posted @ 2020-01-31 18:05 MSTK 阅读(159) 评论(0) 推荐(0) 编辑
摘要:Keras的TimeDistributed层主要用途是在时间维度上进行全连接. 比如Faster RCNN,1张图生成了16个ROI,需要对每一个ROI进行分类和回归,ROI的维度是7×7×512,长度和宽度都是7,512个通道,16个ROI的的维度是16×7×7×512,需要得到16个分类和回归, 阅读全文
posted @ 2019-12-31 21:04 MSTK 阅读(773) 评论(0) 推荐(0) 编辑
摘要:MASK-RCNN是一个多用途的网络,可以用来做目标检测,实例分割或者人体姿态识别.主要结构如下. 简单的说,就是首先用Faster-RCNN获得ROI,再进行ROI Align,然后输出ROI的分类,同时输出分割掩码. 1. Faster-RCNN和ROI Align Faster-RCNN是一个 阅读全文
posted @ 2019-11-30 21:53 MSTK 阅读(199) 评论(0) 推荐(0) 编辑
摘要:RetinaNet,SSD,YOLOv3,Faster R-CNN等都是Anchor-based的检测器,即需要预定义的Anchor boxes来进行训练。FCOS是一种Anchor-free和Proposal-free的检测器,即不需要预定义Anchor boxes来进行训练,从而节省了对计算资源 阅读全文
posted @ 2019-10-30 23:15 MSTK 阅读(372) 评论(0) 推荐(0) 编辑
摘要:CornerNet是一种anchor free的目标检测方法,不需要设置anchor,而是通过检测关键点(Keypoints),即目标的左上角(Top-Left Corners)和右下角(Bottom-Right Corners),再进行配对,来实现目标的检测。 网络的前半部分是一个卷积网络,后半部 阅读全文
posted @ 2019-09-30 14:45 MSTK 阅读(177) 评论(0) 推荐(0) 编辑
摘要:1. Learning rate不合适,如果太大,会造成不收敛,如果太小,会造成收敛速度非常慢; 2. Batch size太大,陷入到局部最优; 3. 网络太简单,一般情况下,网络的层数和节点数量越大,拟合能力就越强,如果层数和节点不够多,无法拟合复杂的数据,也会造成不收敛. 阅读全文
posted @ 2019-08-20 01:21 MSTK 阅读(3069) 评论(0) 推荐(0) 编辑
摘要:1. Cross entropy 交叉熵损失函数用于二分类损失函数的计算,其公式为: 其中y为真值,y'为估计值.当真值y为1时, 函数图形: 可见此时y'越接近1损失函数的值越小,越接近0损失函数的值越大. 当真值y为0时, 函数图形: 可见此时y'越接近0损失函数的值越小,越接近1损失函数的值越 阅读全文
posted @ 2019-07-28 17:26 MSTK 阅读(6457) 评论(0) 推荐(0) 编辑
摘要:TensorFlow出现这个错误是因为网络的输入被原样输出,也就是说同一个东西既被输入网络,又被输出网络. 阅读全文
posted @ 2019-06-23 18:01 MSTK 阅读(827) 评论(0) 推荐(0) 编辑
摘要:Keras出现了下面的错误: 原因是使用了Keras backend的reshape操作: 但是Keras backend并不是一个Layer,于是出现了上面的错误.解决的方法是使用Lambda,Lambda用于定义一个Layer,其中没有需要学习的变量,只是对Tensor进行一些操作.先定义一个r 阅读全文
posted @ 2019-06-12 12:33 MSTK 阅读(1367) 评论(0) 推荐(0) 编辑
摘要:对下面的Dict: 如果用value从大到小排序: 如果对key排序,用d[0];默认的是从小到大排序,如果是从大到小,需要用reverse = True. 注意返回的是一个List,不再是Dict. 阅读全文
posted @ 2019-05-18 14:14 MSTK 阅读(14201) 评论(0) 推荐(0) 编辑
摘要:2.2 边框回归 边框回归使用下面的几个公式: xywh是预测值,带a的是anchor的xywh,带*的是GT Box的xywh,可以看作是anchor经过一定的变换回归到附近的GT Box. 阅读全文
posted @ 2019-04-27 23:36 MSTK 阅读(190) 评论(0) 推荐(0) 编辑
摘要:Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。判断是否在循环迭代过程中增加了新的计算节点,可以用下面的语句: 如果增加了新的计算节点,就会报错,如果没有报错,说明没有增加计算节点。 阅读全文
posted @ 2019-03-31 18:13 MSTK 阅读(1555) 评论(0) 推荐(1) 编辑
摘要:加州大学洛杉矶分校在PLOS Computing Biology上发表了一篇文章,分析了深度卷积网络(DCNN)和人类识别物体方法的不同:深度卷积网络(DCNN)是依靠物体的纹理进行识别,而人类是依靠物体的轮廓进行识别。如对下面的图a,人类依靠轮廓很快就能识别出这是一只熊,速度和准确性超过深度卷积网 阅读全文
posted @ 2019-02-12 22:30 MSTK 阅读(572) 评论(0) 推荐(0) 编辑
摘要:Kaiming He的这篇论文提出了一个新问题,在目标检测、实例分割和人体关键点检测等领域,预训练的模型是否真的起了作用?通过实验,得出结论:迭代次数较少时,使用预训练模型效果更好;但是只要迭代次数充分多,使用预训练的模型和使用随机初始化的模型效果差距不大。可见预训练模型并不是那么重要。 阅读全文
posted @ 2019-01-31 12:43 MSTK 阅读(262) 评论(0) 推荐(0) 编辑
摘要:首先,导入os,再按照PCI_BUS_ID顺序,从0开始排列GPU, 然后就可以选择用哪一个或者那几个GPU运行: 用0号GPU,即'/gpu:0'运行; 用0号和1号设备,即'/gpu:0'、'/gpu:1'运行; 用7号设备,即'/gpu:7'运行,但是'/gpu:7'根本不存在,于是就只能用C 阅读全文
posted @ 2018-12-31 15:28 MSTK 阅读(2577) 评论(0) 推荐(0) 编辑
摘要:2. 区域建议网络 区域建议网络(Regional Proposal Network, RPN),根据特征图上每一个点的向量,为这个点生成k个矩形建议框。每一个点输出的内容包括:reg层4个输出x、y、w、h,其中x、y是矩形建议框中心的目标,w、h是矩形建议框的宽度和高度,cls层输出两个数字,分 阅读全文
posted @ 2018-12-24 16:40 MSTK 阅读(203) 评论(0) 推荐(0) 编辑
摘要:运行下面的代码: 出错: 这是因为换成了Python3.6.5,Python3.6.5已经删除了has_key()方法,改成了下面的写法: 就可以正常运行了。 阅读全文
posted @ 2018-12-20 22:18 MSTK 阅读(3649) 评论(0) 推荐(0) 编辑
摘要:Keras版本的Faster R-CNN源码下载地址:https://github.com/yhenon/keras-frcnn下载以后,用PyCharm打开(前提是已经安装了Tensorflow-gpu和Keras),打开以后可以看到项目的结构: 修改requirements.txt,设置Kera 阅读全文
posted @ 2018-11-23 18:16 MSTK 阅读(5266) 评论(5) 推荐(0) 编辑