摘要:MASK-RCNN是一个多用途的网络,可以用来做目标检测,实例分割或者人体姿态识别.主要结构如下. 简单的说,就是首先用Faster-RCNN获得ROI,再进行ROI Align,然后输出ROI的分类,同时输出分割掩码. 1. Faster-RCNN和ROI Align Faster-RCNN是一个 阅读全文
posted @ 2019-11-30 21:53 MSTK 阅读 (13) 评论 (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 阅读 (48) 评论 (0) 编辑
摘要:CornerNet是一种anchor free的目标检测方法,不需要设置anchor,而是通过检测关键点(Keypoints),即目标的左上角(Top-Left Corners)和右下角(Bottom-Right Corners),再进行配对,来实现目标的检测。 网络的前半部分是一个卷积网络,后半部 阅读全文
posted @ 2019-09-30 14:45 MSTK 阅读 (40) 评论 (0) 编辑
摘要:1. Learning rate不合适,如果太大,会造成不收敛,如果太小,会造成收敛速度非常慢; 2. Batch size太大,陷入到局部最优; 3. 网络太简单,一般情况下,网络的层数和节点数量越大,拟合能力就越强,如果层数和节点不够多,无法拟合复杂的数据,也会造成不收敛. 阅读全文
posted @ 2019-08-20 01:21 MSTK 阅读 (494) 评论 (0) 编辑
摘要:1. Cross entropy 交叉熵损失函数用于二分类损失函数的计算,其公式为: 其中y为真值,y'为估计值.当真值y为1时, 函数图形: 可见此时y'越接近1损失函数的值越小,越接近0损失函数的值越大. 当真值y为0时, 函数图形: 可见此时y'越接近0损失函数的值越小,越接近1损失函数的值越 阅读全文
posted @ 2019-07-28 17:26 MSTK 阅读 (1820) 评论 (0) 编辑
摘要:TensorFlow出现这个错误是因为网络的输入被原样输出,也就是说同一个东西既被输入网络,又被输出网络. 阅读全文
posted @ 2019-06-23 18:01 MSTK 阅读 (239) 评论 (0) 编辑
摘要:Keras出现了下面的错误: 原因是使用了Keras backend的reshape操作: 但是Keras backend并不是一个Layer,于是出现了上面的错误.解决的方法是使用Lambda,Lambda用于定义一个Layer,其中没有需要学习的变量,只是对Tensor进行一些操作.先定义一个r 阅读全文
posted @ 2019-06-12 12:33 MSTK 阅读 (475) 评论 (0) 编辑
摘要:对下面的Dict: 如果用value从大到小排序: 如果对key排序,用d[0];默认的是从小到大排序,如果是从大到小,需要用reverse = True. 注意返回的是一个List,不再是Dict. 阅读全文
posted @ 2019-05-18 14:14 MSTK 阅读 (1256) 评论 (0) 编辑
摘要:2.2 边框回归 边框回归使用下面的几个公式: xywh是预测值,带a的是anchor的xywh,带*的是GT Box的xywh,可以看作是anchor经过一定的变换回归到附近的GT Box. 阅读全文
posted @ 2019-04-27 23:36 MSTK 阅读 (73) 评论 (0) 编辑
摘要:Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。判断是否在循环迭代过程中增加了新的计算节点,可以用下面的语句: 如果增加了新的计算节点,就会报错,如果没有报错,说明没有增加计算节点。 阅读全文
posted @ 2019-03-31 18:13 MSTK 阅读 (638) 评论 (0) 编辑
摘要:加州大学洛杉矶分校在PLOS Computing Biology上发表了一篇文章,分析了深度卷积网络(DCNN)和人类识别物体方法的不同:深度卷积网络(DCNN)是依靠物体的纹理进行识别,而人类是依靠物体的轮廓进行识别。如对下面的图a,人类依靠轮廓很快就能识别出这是一只熊,速度和准确性超过深度卷积网 阅读全文
posted @ 2019-02-12 22:30 MSTK 阅读 (242) 评论 (0) 编辑
摘要:Kaiming He的这篇论文提出了一个新问题,在目标检测、实例分割和人体关键点检测等领域,预训练的模型是否真的起了作用?通过实验,得出结论:迭代次数较少时,使用预训练模型效果更好;但是只要迭代次数充分多,使用预训练的模型和使用随机初始化的模型效果差距不大。可见预训练模型并不是那么重要。 阅读全文
posted @ 2019-01-31 12:43 MSTK 阅读 (117) 评论 (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 阅读 (1305) 评论 (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 阅读 (128) 评论 (0) 编辑
摘要:运行下面的代码: 出错: 这是因为换成了Python3.6.5,Python3.6.5已经删除了has_key()方法,改成了下面的写法: 就可以正常运行了。 阅读全文
posted @ 2018-12-20 22:18 MSTK 阅读 (1920) 评论 (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 阅读 (3347) 评论 (5) 编辑
摘要:首先,创建一个环境用来安装Tensorflow: 安装以后,在Anaconda Navigator可以看到已经增加了一个新环境: 在cmd窗口中输入: 安装Tensorflow的GPU版本: 在PyCharm中,File->Settings->Projector Interpretor,在Proje 阅读全文
posted @ 2018-11-08 20:30 MSTK 阅读 (2368) 评论 (0) 编辑
摘要:目标检测是一种基于目标几何和统计特征的图像分割,最新的进展一般是通过R-CNN(基于区域的卷积神经网络)来实现的,其中最重要的方法之一是Faster R-CNN。 1. 总体结构 Faster R-CNN的基本结构如下图所示,其基础是深度全卷积网络(ZF或者VGG-16)。在深度全卷积网络输出的特征 阅读全文
posted @ 2018-10-30 20:08 MSTK 阅读 (106) 评论 (0) 编辑
摘要:Python 2安装的是mysql-python,Python 3安装mysql-python以后,仍然不能import MySQLdb,原来Python 3应该安装mysqlclient,就可以import MySQLdb了。 阅读全文
posted @ 2018-09-23 17:48 MSTK 阅读 (1611) 评论 (0) 编辑
摘要:连接时MySQL出现了下面的错误: 解决的办法是先停止MySQL服务,在my.ini文件的最下面加入一行: 再启动MySQL服务,就可以了。 阅读全文
posted @ 2018-09-23 17:09 MSTK 阅读 (243) 评论 (1) 编辑
摘要:以前是在Cent OS中运行Tensorflow,,经常需要切换操作系统,很不方便,于是决定在Windows 7下安装Tensorflow。 过程还是挺复杂的,需要安装的包括:Visual Studio、Anaconda、CUDA、cuDNN、PyCharm、Tensorflow-gpu等。 Vis 阅读全文
posted @ 2018-09-13 16:58 MSTK 阅读 (498) 评论 (0) 编辑
摘要:一般情况下,import的文件和被import的文件在同一个路径下面,import也比较方便。如果这两个文件不在一个路径下面,import就比较麻烦了,需要在被import的文件路径下面新建一个__init__.py文件,可以是一个没有代码的空文件。 比如被import的文件路径是../A/B/b. 阅读全文
posted @ 2018-08-18 19:15 MSTK 阅读 (13151) 评论 (0) 编辑
摘要:首先定义一个tf.train.Saver类: 其中,max_to_keep参数设定只保存最后一个参数,默认值是5,即保存最后5个模型,如果设置成0,训练过程中的所有模型都会被保存。 模型训练好以后,保存模型: 其中,sess是Session,ckpt_dir + "/nn_model.ckpt"是保 阅读全文
posted @ 2018-07-31 14:17 MSTK 阅读 (128) 评论 (0) 编辑
摘要:Python可以实现多线程,但是因为Global Interpreter Lock (GIL),Python的多线程只能使用一个CPU内核,即一个时间只有一个线程在运行,多线程只是不同线程之间的切换,对多核CPU来说,就是巨大的浪费。如4核CPU,实际上只利用了一个核,CPU利用率只有25%。要充分 阅读全文
posted @ 2018-06-30 18:13 MSTK 阅读 (174) 评论 (0) 编辑
摘要:遗传算法(Genetic Algorithms, GA)是一种随机优化算法,用于解决结构复杂的优化问题。遗传算法模仿自然界中生物的进化过程,即适者生存,不适者淘汰的过程。其过程如下: (1) 随机生成一些个体(Individual),构成一个种群(Population),对每一个解进行评估,获得它的 阅读全文
posted @ 2018-05-27 12:26 MSTK 阅读 (228) 评论 (0) 编辑
摘要:众所周知,Python和Java一样是基于虚拟机的语言,并不是像C/C++那样将程序代码编译成机器语言再运行,而是解释一行执行一行,速度比较慢。使用Numba库的JIT技术编译以后,可以明显提高程序的运行速度。 首先,使用PyCharm安装Numba库,在Project Interpreter界面可 阅读全文
posted @ 2018-04-24 21:00 MSTK 阅读 (8433) 评论 (1) 编辑
摘要:Taylor formula(泰勒级数)用一个函数在某一点的连续导数之和来表示这个函数。如果函数在在点x=x0处有n阶导数,则f(x)可以按以下式子展开: 其目的在于用多项式函数逼近函数。如果x0=0,就是Maclaurin formula(麦克劳林公式): n的值越大,越逼近f(x),下图是f(x 阅读全文
posted @ 2018-04-20 21:40 MSTK 阅读 (1471) 评论 (0) 编辑
摘要:首先定义一个compare函数: 然后调用该函数就可以对List中的元素排序: 要求ListA中的元素有value这个属性才行,当然也可以把value换成ListA中的元素的其他共有属性也可以。感觉和Java差不多。 阅读全文
posted @ 2018-03-31 22:38 MSTK 阅读 (3167) 评论 (0) 编辑
摘要:当数据维数比较大时,就需要进行降维,特征选择是降维的一种主要方式,又包括3种方法:Filter、Wrapper和Enbedding。 1. Filter 过滤器方法,这种方法首先选定特征,再来进行学习。根据每一个属性的一些指标(如方差等),来确定这个属性的重要程度,然后对所有属性按照重要程度排序,从 阅读全文
posted @ 2018-02-23 21:09 MSTK 阅读 (341) 评论 (0) 编辑
摘要:SVMs(Surport Vector Machines)是用来解决两分类问题的,直接用SVMs实现多分类是不行的,只能使用下面这些间接的方法: (1)1-v-r,即对于每一个分类,训练一个该分类和其他分类的分类器,如对于类k,k是一类,所有其他的是另一类,这样就需要训练k个分类器。对未知样本分类时 阅读全文
posted @ 2018-02-20 09:35 MSTK 阅读 (2337) 评论 (0) 编辑