![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
keras
AI剑客
计算机视觉方向:图像及视频处理
展开
-
keras如何自定义损失函数(进阶版,not of the form of f(x_true, x_pred))
一,keras如何自定义损失函数(进阶版,not of the form of f(x_true, x_pred))1.define your model (typically using the functional API)采用函数式定义模型,之前说过,keras定义模型有model与K.function两种。一般两者结合使用。2.define your custom cost,定义自己的损失函数3.instantiate an optimizer, get weights updates vi原创 2020-05-10 13:45:00 · 533 阅读 · 0 评论 -
Keras自定义layer
方法一:编写Layer继承类keras.engine中包含了Layer的父类,我们可以通过继承来实现自己的层。要定制自己的层,需要实现下面三个方法build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表self.trainable_weights中。其他的属性还包括self.non_trainabe_weights(列表)和self.updates(需要更新...原创 2020-05-03 23:17:00 · 1215 阅读 · 0 评论 -
keras K.function
一,keras.backend.function(inputs, outputs, updates=None)参数inputs: 占位符张量列表。outputs: 输出张量列表。updates: 更新操作列表。**kwargs: 需要传递给 tf.Session.run 的参数。返回输出值为 Numpy 数组。异常ValueError: 如果无效的 kwargs 被传入。作用:...原创 2020-05-03 12:20:52 · 899 阅读 · 0 评论 -
深度网络中的的权重初始化与正则化(初始化与激活函数搭配问题)
一,kernel_initializer&bias_initializer:建网络层时内核或者偏差权重的初始化方案。此参数是名称或可调用对象。二,kernel_regularizer&bias_regularizer:设置应用于网络层中内核或者偏差权重的正则化方案,例如L1或L2正则化。默认情况下,不应用正则化。三,初始化及正则化的作用在设计深度学习模型的时候,我们经常需...原创 2020-04-25 21:40:11 · 2466 阅读 · 0 评论 -
K.function用法(keras提取中间层的输出)
from keras import backend as K1.获取名为layer_name的层的输出#指定输出层的名称layer_1 = K.function([model.get_input_at(0)], [model.get_layer('layer_name').output])f1 = layer_1([image_arr])[0]2.获取第n层的输出#指定输出层的序号(层...原创 2020-04-04 19:41:47 · 2319 阅读 · 3 评论 -
PixelShuffler实现上采样的原理
一,普通的上采样采用的临近像素填充算法,主要考虑空间因素,没有考虑channel因素,上采样的特征图人为修改痕迹明显,图像分割与GAN生成图像中效果不好。二,PixelShuffler结合channel维度的信息来填充像素,可以实现超高分辨率,生成的图像更逼真,更完美。三,PixelShuffler实际原理pixelshuffle算法的实现流程如上图,其实现的功能是:将一个H × W的低分...原创 2020-04-02 20:06:27 · 3427 阅读 · 3 评论 -
含有Lambda自定义层keras模型,保存遇到的问题及解决方案
一,许多应用,keras含有的层已经不能满足要求,需要透过Lambda自定义层来实现一些layer,这个情况下,只能保存模型的权重,无法使用model.save来保存模型。保存时会报TypeError: can’t pickle _thread.RLock objects二,解决方案,为了便于后续的部署,可以转成tensorflow的PB进行部署。...原创 2020-02-22 20:56:23 · 1864 阅读 · 0 评论 -
基于DenseNet的Mask-RCNN-for人体姿态检测及分割
Github地址原创 2020-02-18 12:09:31 · 1008 阅读 · 3 评论 -
Magnitude-based weight pruning with Keras(keras模型权重裁剪)
keras模型权重裁剪一,什么是权重删减:消除权重张量中不必要的值。将神经网络参数的值设置为零,以消除神经网络各层之间的低权重连接。二,带来好处:多个值设置为零的张量可以被视为稀疏张量。这将带来重要的好处:1.压缩:稀疏张量只保留非零值及其对应的坐标,因而易于压缩。2.速度:稀疏张量允许我们跳过涉及零值的不必要计算。三,如何work我们基于Keras的权重剪枝API设计用于在训练期...原创 2020-02-15 19:13:20 · 2187 阅读 · 1 评论 -
将keras训练好的h5模型转换成TensorFlow 的.pb文件
添加链接描述最近做人脸识别项目,以前一直是在服务器上训练好模型,用TensorFlow serving 保存成pb文件调用。后来发现 Keras的h5模型文件也可以转换成Pb文件以供TensorFlow serving调用。实在是大快人心啊!下面看看如何将Keras的h5转换成Pb模型文件吧:方法一Keras模型保存时使用 save() 函数保存,转换代码如下:...转载 2020-02-12 18:25:05 · 1772 阅读 · 0 评论 -
keras Mask Rcnn代码走读(十二)-Dataset相关介绍
keras Mask Rcnn代码走读(十二)-Dataset相关介绍一,Dataset相关包括定义数据集,数据集加载,mask的加载。原创 2020-01-14 21:53:45 · 372 阅读 · 0 评论 -
keras TimeDistributed
keras TimeDistributed说明及用法一般的网络输入为4维度(batch,height,width,channels),当有其他维度,时间或者其他,例如mask RCNN的ROI维度,这时就需要使用TimeDistributed。...原创 2019-12-30 19:29:26 · 277 阅读 · 0 评论 -
Soft NMS
一,在物体检测或者实体分割领域,都会用到NMS(非极大值抑制),剔除掉一些重叠度较高的框。算法如下:1.所有的box按照score从高到低排序2.最高分的box与后面其余的box计算IOU,IOU大于阈值的剔除。3.分数从高到低,依次进行第二步,直到结束或者达到要求的box数量为止。需要输入参数为,boxes为box的坐标list(y1,x1,y2,x2)scores为box的分数(...原创 2019-12-21 18:00:14 · 116 阅读 · 0 评论 -
keras.backend.clip
keras.backend.clip(x, min_value, max_value)对x的元素大小进行消减限制,限制到 min_value-max_value范围里面。 min_value, max_value可以是整数或者浮点数。参数x: 张量或变量。min_value: Python 浮点或整数。max_value: Python 浮点或整数。例子:在计算focal loss,防...原创 2019-12-21 16:42:49 · 613 阅读 · 0 评论 -
kears sparse_categorical_crossentropy参数说明
kears sparse_categorical_crossentropy说明:from_logits=False,output为经过softmax输出的概率值。from_logits=True,output为经过网络直接输出的 logits张量。def sparse_categorical_crossentropy(target, output, from_logits=False): ...原创 2019-12-21 11:32:51 · 4347 阅读 · 0 评论 -
categorical_crossentropy VS sparse_categorical_crossentropy
tensorflow 与keras里面的损失函数:categorical_crossentropy VS. sparse_categorical_crossentropy区别:两者都是多分类交叉熵损失函数,区别在于sparse(稀疏),在于对target编码的要求。1.categorical_crossentropy要求target为onehot编码。2.sparse_categorical...原创 2019-12-21 11:14:18 · 2205 阅读 · 0 评论 -
Deformable Convolutional Networks(可变形卷积)
https://github.com/lixiaolei1982/Deformable-ConvNets一,《Deformable Convolutional Networks》是一篇2017年Microsoft Research Asia的研究。基本思想也是卷积核的采样方式是可以通过学习得到的。作者提出了两种新的op:deformable convolution和deformable roi ...原创 2019-12-18 21:29:51 · 680 阅读 · 0 评论 -
CNN里面 Normalization 方法
一,BN其优势并非解决了独立同分布的问题,其最大意义在于解决了梯度弥散问题。其作用为防止梯度爆炸或弥散、可以提高训练时模型对于不同超参(学习率、初始化)的鲁棒性、可以让大部分的激活函数能够远离其饱和区域。二,特别注意N对小批次训练效果不好当单个小批次(minibatch)的数据不能代表整个数据的分布时,BN的表现就会不尽如人意,这意味着忘记将输入随机打乱顺序的情况下使用批归一化是很危险的,实...原创 2019-12-18 21:06:37 · 1303 阅读 · 0 评论 -
keras Mask Rcnn代码走读(十一)-loss介绍
keras Mask Rcnn代码走读(十一)-loss介绍一,loss相关的GT Input(MaskRCNN.build),五个input,对应五种loss。RPN两个:match与bbox。 Detectors三个:class,bbox,mask。if mode == "training": #如果是训练,需要GT的一些输入,包含class,box,masks同时要对box坐标进...原创 2019-12-15 10:06:22 · 942 阅读 · 0 评论 -
keras Mask Rcnn代码走读(十)-train方法介绍
keras Mask Rcnn代码走读(十)-train方法介绍一,train网络介绍网络输入:输入tensor增加到了7个之多,大部分是计算Loss的标签。损失函数:添加了5个损失函数,2个用于RPN计算,2个用于最终分类回归instance,1个用于掩码损失计算。原始标签处理:推理网络中,Proposeal筛选出来的rpn_rois直接用于生成分类回归以及掩码信息,而training中...原创 2019-12-14 21:11:06 · 554 阅读 · 0 评论 -
keras Mask Rcnn代码走读(九)-detect方法介绍
keras Mask Rcnn代码走读(八)-detect方法介绍,主要用于图片实体分割的推断时调用的。一,首先对图像进行处理,调用self.mold_inputs()函数,把原图等比例resize成102410243的图像,不够的地方用0填充,同时减去图像平均值。并记录原图的位置及大小信息在image_metas里, molded_images处理后的图像。windows为原图在处理后图片的对...原创 2019-12-11 20:55:56 · 627 阅读 · 0 评论 -
keras Mask Rcnn代码走读(八)-demo
Mask R-CNN Demo首先:导入一些模块并定义一些路径:logs,预训练权重文件,image#%%import osimport sysimport randomimport mathimport numpy as npimport skimage.ioimport matplotlibimport matplotlib.pyplot as plt# Root d...原创 2019-12-11 19:41:56 · 163 阅读 · 0 评论 -
keras Mask Rcnn代码走读(七)-mask生成
获取了待检测图片的分类回归信息,我们将回归信息(即待检测目标的边框信息)单独提取出来,结合金字塔特征mrcnn_feature_maps,进行Mask生成工作(input_image_meta用于提取输入图片长宽,进行金字塔ROI处理# Detections# output is [batch, num_detections, (y1, x1, y2, x2, class_id, score)...原创 2019-12-10 20:28:36 · 296 阅读 · 0 评论 -
keras Mask Rcnn代码走读(六)-Detections
DetectionLayer输入包含ROI,及对应的class,box修正信息,同时还有输入的image信息(image_meta),最终的输出都基于原图上的物体检测,原图的信息来自于image_meta。# Detections# output is [batch, num_detections, (y1, x1, y2, x2, class_id, score)] in# normali...原创 2019-12-10 19:48:10 · 337 阅读 · 0 评论 -
keras Mask Rcnn代码走读(四)-ROI Align
ROI Align透过RPN操作获取了有限的proposal 区域,ROI Align就是在特征图上提取相关的proposal区域。使用proposal对共享特征进行ROI操作,相对于Faster-RCNN在Mask-RCNN中这里有两个创新:一个是用ROI Align代替ROI Pooling,二是采用多尺度特征map代替单尺度特征map。mrcnn_feature_maps = [P2, ...原创 2019-12-07 22:04:30 · 613 阅读 · 0 评论 -
keras Mask Rcnn代码走读(三)-RPN
keras Mask Rcnn代码走读(二)-RPNRPN-Region proposal Net,主要作用为通过得到所有anchors的score(前景概率)及box初步矫正信息,及NMS来实现对anchors的筛选。找到规定数量且满足条件的anchors。数量不足的填0处理,确保每张图的筛选anchors数量相等,便于tensor计算。1.RPN score(前景概率)及box初步矫正信...原创 2019-12-07 10:25:04 · 348 阅读 · 0 评论 -
keras Mask Rcnn代码走读(二) - anchors的产生
一,生成 anchors需要的参数self.config.BACKBONE_STRIDES = [4, 8, 16, 32, 64]特征层的下采样倍数,中心点计算使用self.config.RPN_ANCHOR_RATIOS = [0.5, 1, 2]特征层锚框生成参数self.config.RPN_ANCHOR_SCALES = [32, 64, 128, 256, 512]特征层...原创 2019-12-06 23:23:30 · 633 阅读 · 0 评论 -
keras Mask Rcnn代码走读(一)
https://github.com/matterport/Mask_RCNN主要就是model.py,其他都是辅助模块。本次先从class MaskRCNN()类的build建模函数讲起image 在特征提取网络中,进行6次特征缩小操作C1,C2,C3,C4,C5其中C1为4倍率缩小,其他为2倍率缩小,total 64倍缩小,所以网络要求输入的图像的尺寸为64的整数倍,默认输入为102...原创 2019-12-04 20:29:05 · 486 阅读 · 0 评论 -
keras动态调整学习率
keras随着epoch及loss变化情况动态调整学习率,主要利用Callback, ReduceLROnPlateau来实现import keras.backend as Kfrom keras.callbacks import Callback, TensorBoard, ReduceLROnPlateau, ModelCheckpointclass LrReducer(Call...原创 2019-12-02 20:14:12 · 1836 阅读 · 0 评论 -
如何获取某层特征网络的输出
如何获取某层特征网络的输出for 其他网络使用1.使用特征层的name来提取skips = backbone.get_layer(name='xxx').output2.使用特征层的id来提取skips = backbone.get_layer(index=i).output...原创 2019-12-01 15:58:38 · 1302 阅读 · 0 评论 -
PSPNet介绍-语义分割
PSPNet - Pyramid Scene Parsing Network核心模块是金字塔池化模块( pyramid pooling module),它能够聚合不同区域的上下文信息,从而提高获取全局信息的能力。实验表明这样的先验表示(即指代PSP这个结构)是有效的,在多个数据集上展现了优良的效果。1.pyramid pooling module该模块融合了4种不同金字塔尺度的特征,第一行...原创 2019-11-28 21:11:56 · 17241 阅读 · 7 评论 -
Finetune时训练与冻结层选择
Finetune时训练与冻结层选择一般在基础特征提取网络上进行finetune训练时,建议冻结除BatchNormalization layers的其他layer,会比较好。def freeze_model(model): """Set all layers non trainable, excluding BatchNo...原创 2019-11-27 20:35:39 · 1219 阅读 · 0 评论 -
经典分类网络的keras权重.h5文件下载地址
经典分类网络的keras权重.H5文件:1.resnet及其变种的权重:https://github.com/keras-team/keras-applications/releases/tag/resnet2.其他网络权重:VGG,Inception,densenet,mobilenet等https://github.com/fchollet/deep-learning-models/...原创 2019-11-26 19:44:38 · 1219 阅读 · 0 评论 -
膨胀卷积的padding公式
采用膨胀卷积后的padding计算K为膨胀的等效卷积核,r为膨胀系数K=k+(k−1)∗(r−1) 总的padding量为K-1。然后再进行两边分配。p = kernel_size+(kernel_size-1)*(dilation-1)-1p1 = p // 2p2 = p - p1x = layers.ZeroPadding2D(padding=((p1, p2), (p1,...原创 2019-11-23 10:06:06 · 1839 阅读 · 0 评论 -
空洞卷积的等效卷积核大小计算
1.普通卷积2.膨胀卷积空洞卷积的等效卷积核大小尺寸计算公式如下:K=k+(k−1)∗(r−1)其中,K代表等效卷积核尺寸,k代表实际卷积核尺寸,而r代表dilation,空洞卷积的参数。3.keras 膨胀卷积实现,卷积里面的dilation_rate参数来实现现有的框架都要求dilation_rate>1时,strides不能>1,也就是strides =1时,才能...原创 2019-11-23 10:03:51 · 4097 阅读 · 3 评论 -
name 'backend' is not defined
在kears模型中有用到backend,在训练时没有异常,在load model进行predict时,居然报错:name ‘backend’ is not defined。import keras.backend as backendy = Lambda(lambda z: z[:, :, :, j * c:(j + 1) * c] if backend.image_data_fo...原创 2019-11-17 21:26:15 · 1629 阅读 · 1 评论 -
keras保存加载模型的方式
keras保存加载模型的方式:1.方式一:保存与加载整个模型,包含结构与权重,使用load_model&model.save。from keras.models import load_modelmodel = load_model('model.h5') #训练过程model.save('model_weight.h5')2.方式二:保存与加载权重,使用load_w...原创 2019-11-16 07:55:34 · 318 阅读 · 0 评论