![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
tensorflow
AI剑客
计算机视觉方向:图像及视频处理
展开
-
tf.Graph.finalize()使用
一,tf.Graph.finalize()在调用tf.Graph.finalize()之后,不能向计算图 g 添加新操作。 此方法用于确保在多个线程之间共享时能像计算图添加任何操作,例如使用 tf.train.QueueRunner 的时候。二,实例,加载完模型后,禁止图添加操作。g = tf.Graph()with g.as_default(): model = inference_wrapper.InferenceWrapper() tore_fn = model.build_g原创 2020-06-20 22:33:23 · 1663 阅读 · 0 评论 -
tensorflow loss定义添加与获取tf.losses.add_loss tf.losses.get_total_loss
tf.losses.add_loss 将外部定义的损失添加到损失集合中。原创 2020-06-10 21:28:46 · 2943 阅读 · 0 评论 -
matlab 模型mat文件转tensorflow ckpt
第一步:Build the model,在tensorflow中完成model的搭建。第二步:Sets up the function to restore embedding variables from .mat model files1.Get parameter from .mat file into parms(dict)2.tf.get_collection()收集变量3.op=tf.assign(),一个操作把 parms赋值给tf变量,4.initialize = tf.group原创 2020-06-10 20:43:34 · 758 阅读 · 0 评论 -
Multi Object Tracking 高级之孪生网络siamese-fc
一,孪生网络siamese-fc,两个相同的全卷积网络,共享权重。reference image为参考图像,一般为视频的初始帧,包含Tracking Object,透过孪生网络,生成Object特征图。search image可以是视频帧图的ROI,也透过孪生网络,生成search image特征图,再使用Object特征图在search image特征图上进行卷积,相当于滑动比较相似度,生成一个相似度map,相似度最高的地方,就是Object的位置,实现对Object的定位及跟踪了。网络只要训练好了,只原创 2020-06-03 21:31:31 · 694 阅读 · 0 评论 -
tf.py_func灵活操作tensor
一,tensorflow中所有的tensor只是占位符,在没有用tf.Session().run接口feeddisk填充值之前是没有实际值的,不能对其进行判值操作,如if … else…等,在实际问题中,我们可能需要将一个tensor转换成numpy array 然后进行一些 np.的运算,然后返回tensor. 这样可以加强tensorflow的灵活性。二,tf.py_func1.func函数:以numpy arrays 作为输入(或placeholder 需要feed),并以numpy array原创 2020-05-16 20:02:11 · 269 阅读 · 0 评论 -
tensorflow网络输入数据迭代生成器tf.data.Dataset
tensorflow网络输入数据生成器tf.data.Dataset使用一,准备要加载的numpy数据,可以是图片的全路径名。tf_fns = tf.constant(filenames, dtype=tf.string)二,使用 tf.data.Dataset.from_tensor_slices()函数加载dataset = tf.data.Dataset.from_tensor_slices(tf_fns)三,使用 shuffle() 打乱数据。dataset = dataset.shuf原创 2020-05-14 21:40:56 · 1278 阅读 · 0 评论 -
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 评论 -
faceswap-GAN之perceptual_loss(感知loss)
一,faceswap-GAN之perceptual_loss(感知loss)二,perceptual_loss(感知loss)技巧:直接把生成器生成图片与真实图片送入现有的vggface识别模型,获取四个不同尺寸的特征图,特征图进行instance norm后,比较差异,生成loss。def perceptual_loss(real, fake_abgr, distorted, mask_eyes, vggface_feats, **weights): alpha = Lambda(lam原创 2020-05-10 12:22:47 · 1547 阅读 · 1 评论 -
faceswap-GAN之adversarial_loss_loss(对抗loss)
一,faceswap-GAN之adversarial_loss_loss(对抗loss)二,adversarial_loss,对抗loss,包含生成loss与分辨loss。def adversarial_loss(netD, real, fake_abgr, distorted, gan_training="mixup_LSGAN", **weights): alpha = Lambda(lambda x: x[:,:,:, :1])(fake_abgr) fake_bgr =原创 2020-05-10 11:54:28 · 6839 阅读 · 0 评论 -
faceswap-GAN之reconstruction_loss(重建loss)
一,faceswap-GAN之reconstruction_loss(重建loss),也叫生成loss,确认生成网络的输出图像与真实图像的差异。二.reconstruction_loss采用的是L1,所以也称为MAE loss(均差)reconstruction_loss = normal L1 loss + mask_eyes loss+ other outputs lossnormal L1 loss为Gan生成网络的输出与真实图像的L1 lossmask_eyes loss为Gan生成网络的原创 2020-05-09 23:19:24 · 7815 阅读 · 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 评论 -
ICNR initialization for Sub-pixel convolution
一,Sub-pixel convolution can be interpreted as convolution + shuffling(卷积+洗牌),一般用于超高分辨率图像生成的上采样。二,ICNR initialization for Sub-pixel convolution三,ICNR initialization代码from __future__ import divisio...原创 2020-04-26 11:41:26 · 830 阅读 · 0 评论 -
深度网络中的的权重初始化与正则化(初始化与激活函数搭配问题)
一,kernel_initializer&bias_initializer:建网络层时内核或者偏差权重的初始化方案。此参数是名称或可调用对象。二,kernel_regularizer&bias_regularizer:设置应用于网络层中内核或者偏差权重的正则化方案,例如L1或L2正则化。默认情况下,不应用正则化。三,初始化及正则化的作用在设计深度学习模型的时候,我们经常需...原创 2020-04-25 21:40:11 · 2466 阅读 · 0 评论 -
GAN-tricks之Self-Attention
一,Self-Attention-Gan将注意力机制运用到GAN中,解决GAN在生成图像时无法关注到长距离相关结构的问题。https://github.com/taki0112/Self-Attention-GAN-Tensorflow二,Self-Attention作用是能够更好地学习到全局特征之间的依赖关系。因为传统的 GAN 模型很容易学习到纹理特征:如皮毛,天空,草地等,不容易学习到特...原创 2020-04-02 21:12:05 · 390 阅读 · 0 评论 -
tensorflow-gpu版本与CUDA,cuDNN对应关系
CUDA下载地址cuDNN下载地址原创 2020-03-31 19:25:40 · 357 阅读 · 0 评论 -
含有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 评论 -
TensorFlow提供Python语言的四个不同版本tensorflow,tensorflow-gpu,tf-nightly、tf-nightly-gpu
1.TensorFlow提供Python语言下的四个不同版本:CPU版本(tensorflow)、包含GPU加速的版本(tensorflow-gpu),以及它们的每日编译版本(tf-nightly、tf-nightly-gpu)。2.TensorFlow的Python版本支持Ubuntu 16.04、Windows 7、macOS 10.12.6 Sierra、Raspbian 9.0及对应的更...原创 2020-02-16 17:10:26 · 9640 阅读 · 2 评论 -
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 评论 -
Open CV直接根据tensorflow模型pb文件,进行推断
open cv从3.3版本开始正式支持DNN,可以直接导入caffe、tensorflow等框架训练好的模型,进而完成识别、检测等任务,方便终端部署。第一步:加载pb模型数据,生成netnet = cv.dnn.readNetFromTensorflow(“graph_opt.pb”)第二步:给模型输入图像,使用blobFromImage函数,将图片转换成blob格式。net.setI...原创 2020-02-12 17:52:30 · 2575 阅读 · 1 评论 -
模型压缩之post-training quantization
一,post-training quantization的工作原理在底层,通过将参数(即神经网络权重)的精度从训练时的32位浮点表示降低到更小、更高效的8位整数表示来运行优化(也称为量化)。post-training量化指南:https://www.tensorflow.org/performance/post_training_quantization这些优化将确保将最终模型中精度降低的操作...原创 2020-01-07 20:00:30 · 5735 阅读 · 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 评论 -
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(十三)-训练自己的数据集-面部涂鸦
训练自己的数据集一,VIA标注数据集,这里不再详细介绍使用方法,标注完成后,生成json文件。与图片放在一起。二,根据需要修改config-blog.csdnimg.cn/20191214212250875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nL...原创 2019-12-16 20:07:31 · 488 阅读 · 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代码走读(九)-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代码走读(七)-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 评论 -
tf.where & tf.gather的配合使用索引提取tensor里的特定值
tf.where & tf.gather的配合使用,可以索引提取tensor里的特定值。例子:提取target_class_ids大于0的。先通过tf.where得到大于0的索引值,再透过tf.gather用所以提取对应的tensor值。注意:tf.gather针对1维tensor提取,如果是多维度,要用tf.gather_nd.positive_roi_ix = tf.where(...原创 2019-12-09 21:30:39 · 2136 阅读 · 0 评论 -
keras Mask Rcnn代码走读(五)- Proposal classifier and BBox regressor
Network HeadsProposal classifier and BBox regressor headsoutput shapes:mrcnn_class_logits: [batch, num_rois, NUM_CLASSES] classifier logits (before softmax)mrcnn_class: [batch, num_rois, NUM_CLASS...原创 2019-12-08 10:51:58 · 336 阅读 · 0 评论 -
tf.image.crop_and_resize介绍
fast-RCNN,Mask rcnn中的ROI Pooling层或Align层可以直接利用 tf.image.crop_and_resize 来实现。参数介绍image:为输入的图片boxe:为proposal anchor box,抠图的框(y1,x1,y2,x2)对角坐标。即crop的区域。box_ind:box的索引,也就是后面输出图的索引,要放到fast-RCNN,Mask rc...原创 2019-12-07 22:41:59 · 569 阅读 · 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代码走读(一)
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 评论 -
经典分类网络的Tensorflow预训练权重文件下载地址
经典分类网络的Tensorflow预训练权重文件下载地址:https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models原创 2019-11-26 20:06:00 · 983 阅读 · 0 评论 -
Tensorflow ResnetV2代码解读
一,神经网络逐层加深有Degradiation问题,准确率先上升到饱和,再加深会下降,这不是过拟合,是测试集和训练集同时下降的。网络过深导致的梯度弥散或消失。为了解决深度网络的退化问题,何凯明等人提出了残差结构,这个结构解决了网络越深,训练误差反而提升的问题,使得网络理论上可以无限深。二,残差网络的核心是bottleneck网络结构及恒等映射,注意Channel维度变化: ,宛如一个中间细两端...原创 2019-11-08 21:30:13 · 484 阅读 · 0 评论 -
slim.arg_scope()用法
在rensorflow中利用slim框架搭建网络,一些网络函数使用统一的参数,可以通过slim.arg_scope()来统一设定参数的值,不用再by 每个函数,设定参数。具体用法如下:slim.conv2d, bottleneck, resnet_utils.stack_blocks_dense三个函数里面的 outputs_collections参数都设定为end_points_collect...原创 2019-11-04 19:49:21 · 946 阅读 · 0 评论