tensorflow
文章平均质量分 78
进我的收藏吃灰吧~~
热爱AI,热爱CV
展开
-
Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(四)- 训练过程
Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(四)- 训练过程在Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现中,输入图片已经经过主干网络进行了特征提取,最终得到的fearture map的shape为(512,512,2)。这篇主要讲讲训练过程吧~~一、datasettrain_dataloader = DeeplabDataset(train_lines, input_shape, batch_size, num_c原创 2022-03-03 18:48:43 · 1016 阅读 · 0 评论 -
Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现
Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现一、backboneDeepLab v3+分割网络默认使用Xception或mobilenetV2作为其的主干网络,用于特征提取。其中mobilenetV2的结构,大佬已经解释的很清楚(https://blog.csdn.net/weixin_44791964/article/details/122655063),这里由于我的电脑还能跑的动大模型,所以我这里我选择的是Xception作为网络的backbon原创 2022-03-03 13:46:42 · 1321 阅读 · 0 评论 -
Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(二)
Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(二)-数据生成这篇blog主要介绍下数据的生成~一、原始图片的标注首先,第一步就是要收集你训练的图片,这个毋庸置疑哈,然后用labelme去标注。这里选择labelme而不是选择labelimg标注工具的原因是labelme支持分割网络的标注。标注之后,应该是这样的~一张图片对应一个标注好的json文件~~~~二、转换png格式标注文件然后,将图片和标注文件一起放到datasets/before里面,然后运行json_t原创 2022-03-02 14:56:10 · 1122 阅读 · 0 评论 -
Tensorflow与cuda版本关系(附加多个cuda版本安装)
Tensorflow与cuda版本关系(附加多个cuda版本安装)多说一句如果,在网上down的代码用的tf的版本与你本机cuda不一致的话,可以在本机安装多个cuda版本,到时候再根据你自己的项目来选择使用哪个版本的cuda(就我本机win10为栗子)1.安装cuda,这一步在网上太多教程,随便找个就行(cuda安装教程(windows))2.一般来说,如果cuda默认安装,路径应该与我上面贴出来的图中的路径一致:C:\Program Files\NVIDIA GPU Computing To原创 2022-02-18 11:05:53 · 14030 阅读 · 0 评论 -
Tensorflow2.0—FaceNet网络原理及代码解析(二)--- Triplet loss函数
# Tensorflow2.0—FaceNet网络原理及代码解析(二)— Triplet loss函数Facenet使用的是Triplet loss~一、原理Triplet Loss的输入是三个相同长度的向量(这里为128):a:anchor,基准图片获得的128维人脸特征向量p:positive,与基准图片属于同一张人脸的图片获得的128维人脸特征向量n:negative,与基准图片不属于同一张人脸的图片获得的128维人脸特征向量根据公式,可以看出来,为了让loss越低,那么就得让a与p原创 2021-10-28 17:03:04 · 772 阅读 · 0 评论 -
Tensorflow2.0—FaceNet网络原理及代码解析(一)--- 模型原理及骨干网络
Tensorflow2.0—FaceNet网络原理及代码解析(一)— 模型原理及骨干网络FaceNet其实就是一个前言所诉的通用人脸识别系统:采用深度卷积神经网络(CNN)学习将图像映射到欧式空间。空间距离直接和图片相似度相关:同一个人的不同图像在空间距离很小,不同人的图像在空间中有较大的距离,可以用于人脸验证、识别和聚类。在800万人,2亿多张样本集训练后,FaceNet在LFW数据集上测试的准确率达到了99.63%,在YouTube Faces DB数据集上,准确率为95.12%。代码:FaceNe原创 2021-10-27 12:04:14 · 1680 阅读 · 0 评论 -
SimpleHumanPose代码及原理分析(一)-- coco keypoints数据集
SimpleHumanPose代码及原理分析(一)-- coco keypoints数据集最近,在研究SimpleHumanPose,感觉学到了不少新的知识,所以记录一下。先简单地说下SimpleHumanPose,这个网络是解决关键点keypoints的,算法效果很好。一. coco keypoints数据集框架介绍...原创 2021-07-03 09:49:36 · 650 阅读 · 4 评论 -
Tensorflow2.0—Centernet网络原理及代码解析(三)- 损失函数的构建
Tensorflow2.0—Centernet网络原理及代码解析(三)- 损失函数的构建在Tensorflow2.0—Centernet网络原理及代码解析(一)- 特征提取网络和Tensorflow2.0—Centernet网络原理及代码解析(二)- 数据生成中已经把Centernet网络基本的backbone和数据生成讲完了,还剩一个损失函数的构建~在train.py中model = centernet(input_shape, num_classes=num_classes, backbone=b原创 2021-03-11 10:55:44 · 1427 阅读 · 0 评论 -
Tensorflow2.0—Centernet网络原理及代码解析(二)- 数据生成
Tensorflow2.0—Centernet网络原理及代码解析(二)- 数据生成这篇blog来看看Centernet网络中真实值是如何编码来的~首先,在train.py中有一行是调用数据生成文件的gen = Generator(Batch_size, lines[:num_train], lines[num_train:], input_shape, num_classes)来看下它的参数:Batch_size:批次大小,可自己设定。这里为了简单,只设置为2lines[:num_train原创 2021-03-09 11:20:08 · 564 阅读 · 0 评论 -
Tensorflow2.0---Centernet网络原理及代码解析(一)- 特征提取网络
Tensorflow2.0—Centernet网络原理及代码解析(一)- 特征提取网络目前,目标检测已经被anchor base类型的网络所承包了,anchor free类型的算法已经越来越少了,最近看大佬的blogTensorflow2 搭建自己的Centernet目标检测平台,就想自己尝试学习下anchor free的内容,先把代码过一遍,然后再总结下原理。这篇blog,就先把它的特征提取网络看一遍吧~~在centernet中,backbone的选择性比较多,一般常见的有Hourglass Ne原创 2021-03-04 15:27:53 · 1099 阅读 · 1 评论 -
目标检测---CIOU原理及代码实现
目标检测—CIOU原理及代码实现最近刚写完一篇YOLO V4-tiny的blog,其中Tensorflow2.0—YOLO V4-tiny网络原理及代码解析(三)- 损失函数的构建涉及到了CIOU。所以特地单独领出来写一篇blog记录一下。在YOLO V3中,对于位置的损失函数,使用的还是普通的smooth-l1损失函数,但是到了YOLO V4中,关于位置的损失函数已经变成CIOU了。一、原理,公式关于它的原理,在YOLOV4与YOLOV3的区别中已经有了大致的介绍。二、优点相比于IOU的优点原创 2021-03-03 14:23:53 · 16284 阅读 · 4 评论 -
Tensorflow2.0---YOLO V4-tiny网络原理及代码解析(三)- 损失函数的构建
Tensorflow2.0—YOLO V4-tiny网络原理及代码解析(三)- 损失函数的构建YOLO V4中的损失函数与V3还是有比较大的区别的,具体的可以看YOLOV4与YOLOV3的区别。代码是在nets文件夹下面的loss.py文件中,在train.py中引用的是:model_loss = Lambda(yolo_loss, output_shape=(1,), name='yolo_loss', arguments={'anchors': anchors, 'num_c原创 2021-03-03 10:10:15 · 1237 阅读 · 0 评论 -
Tensorflow2.0---YOLO V4-tiny网络原理及代码解析(二)- 数据的生成
Tensorflow2.0—YOLO V4-tiny网络原理及代码解析(二)- 数据的生成在Tensorflow2.0—YOLO V4-tiny网络原理及代码解析(一)- 特征提取网络中已经把YOLO V4的特征提取网络给讲完了,这篇blog来讲讲数据的生成(其实,v4与v3的数据生成的方式几乎相同)。首先,来看下真实框编码的主函数位置在哪?它是在train.py中,这就是它的主函数:data_generator。def data_generator(annotation_lines, batch_原创 2021-03-01 14:00:05 · 878 阅读 · 1 评论 -
Tensorflow2.0---YOLO V4-tiny网络原理及代码解析(一)- 特征提取网络
Tensorflow2.0—YOLO V4-tiny网络原理及代码解析(一)- 特征提取网络先来看看YOLO V4-tiny的特征提取网络是长什么样子的。个人认为,大体的框架与YOLO V3的相似,只不过在里面加了3个tricks,让网络更加容易训练图片转载:https://blog.csdn.net/weixin_44791964/article/details/107302710一般来说,YOLO V4-tiny与YOLO V4差别在于tiny版本最后只有两个yolo head。同时,一般原创 2021-02-24 17:00:28 · 6925 阅读 · 1 评论 -
Tensorflow2.0---SSD网络原理及代码解析(一)
Tensorflow2.0—SSD网络原理及代码解析(一)在目标检测领域中,一般我们分为单阶段和双阶段。其中,双阶段最著名的就是Faster RCNN,单阶段有之前讲过的YOLO系列,还有一个比较经典的就是今天要讲的SSD目标检测网络算法。废话不多说,直接上干货~一、主体思路主干网络是VGG16,但是与VGG16还是有一点区别:1、将VGG16的FC6和FC7层转化为卷积层。2、去掉所有的Dropout层和FC8层;3、新增了Conv6、Conv7、Conv8、Conv9。目的:因为原始的V原创 2021-02-05 11:00:42 · 712 阅读 · 0 评论 -
Tensorflow2.0---SSD网络原理及代码解析(五)- 损失函数的计算
Tensorflow2.0—SSD网络原理及代码解析(五)- 损失函数的计算前面写了三篇关于SSD代码的讲解,还有最后一个关键代码—损失函数的计算,废话不多说,直接上干货~model.compile(optimizer=Adam(lr=learning_rate_base),loss=MultiboxLoss(NUM_CLASSES, neg_pos_ratio=3.0).compute_loss)这行代码是进行损失计算函数的调用。损失函数被包装成一个MultiboxLoss类,最后一个comp原创 2021-02-05 10:48:00 · 659 阅读 · 1 评论 -
Tensorflow2.0---SSD网络原理及代码解析(四)- 数据生成与编码
Tensorflow2.0—SSD网络原理及代码解析(四)- 数据生成与编码在Tensorflow2.0—SSD网络原理及代码解析(二)-锚点框的生成和Tensorflow2.0—SSD网络原理及代码解析(三)- 特征提取网络中,已经把两个关键的点给讲完了,这篇blog就讲讲数据生成与编码,我个人认为这一节是最难的也是最关键的~这里,为了debug,我就在训练文件夹中保留了两个标签打好的图片数据如何生成这样的数据,可以看我之前写的一篇blog:Keras—数据预处理操作。在train.py主文件中原创 2021-02-04 11:53:48 · 448 阅读 · 0 评论 -
Tensorflow2.0---SSD网络原理及代码解析(三)- 特征提取网络
Tensorflow2.0—SSD网络原理及代码解析(三)- 特征提取网络model = SSD300(input_shape, NUM_CLASSES, anchors_size)这行代码进行SSD特征提取网络的构建。一起来看看内部代码是如何实现的~首先,先进行VGG16网络的搭建。上述就是VGG16网络,用一个dict按照name进行保存。然后return回SSD特征提取网络代码中。接下来,就是对特定的网络层进行处理了~# 对conv4_3的通道进行l2标准化处理 # 38,38原创 2021-02-03 13:14:25 · 511 阅读 · 0 评论 -
Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成
Tensorflow2.0—SSD网络原理及代码解析(二)-锚点框的生成分析完SSD网络的原理之后,一起来看看代码吧~代码转载于:https://github.com/bubbliiiing/ssd-tf2在train.py中有一行代码:priors = get_anchors((input_shape[0], input_shape[1]), anchors_size)这行代码是用于生成锚点框的,原理对应于第一篇博客中2.1知识点。我们进get_anchors函数,发现它是在anchors原创 2021-02-03 10:11:07 · 877 阅读 · 0 评论 -
YOLO系列---YOLO V1原理及代码(一)
YOLO系列—YOLO V1原理及代码(一)yolo系列是第一个单阶段的目标检测网络,与RCNN系列算法(二阶段,即两个网络分别对图片的分类问题,定位问题进行预测)具有本质的区别。同时,由于其单网络的特性,所以训练与预测速度会加快很多,可以实现实时的目标检测任务~代码链接:https://github.com/hizhangp/yolo_tensorflow参考:https://blog.csdn.net/weixin_42278173/article/details/81778217https:原创 2021-01-14 14:38:10 · 1757 阅读 · 1 评论 -
Tensorflow---Faster RCNN网络(细节,代码部分函数)(五)
Tensorflow—Faster RCNN网络(细节,代码部分函数)(五)经过了四个blog的介绍,Faster RCNN网络也基本上讲完了,但是里面还有一些细节没有扣明白,这明显就不符合本人的作风啊~所以特地抽出一篇blog来介绍下内部一些难懂的点。值得注意的,这篇blog的内容大部分是通过在网上自己搜索出来的答案,最后加上自己的理解才写上去的,所以若有错误的地方,还请大佬们指正~一、utils.convert_collection_to_dict'''在原文中的位置:Faster_RCNN_原创 2021-01-07 15:47:09 · 208 阅读 · 0 评论 -
Tensorflow---Faster RCNN网络(预测过程)(四)
Tensorflow—Faster RCNN网络(预测过程)(四)https://blog.csdn.net/weixin_42206075/article/details/112026162https://blog.csdn.net/weixin_42206075/article/details/111984086上面两篇blog中,已经对Faster RCNN的训练阶段进行了解释,下面就是Faster RCNN的预测过程的代码实现。在run step1~4的py文件之后,会生成上图的三个文原创 2021-01-05 11:38:39 · 294 阅读 · 0 评论 -
Tensorflow---Faster RCNN网络(faster rcnn的训练)(三)
Tensorflow—Faster RCNN网络(faster rcnn的训练)(三)在https://blog.csdn.net/weixin_42206075/article/details/111984086照片blog中,已经介绍了第一大部分:rpn_train的代码。通过step1_train_rpn.py,我们训练了RPN网络(分别每次放入256个样本进行训练),然后根据训练好的RPN网络在每个训练图片中选取2000个ROI区域,后续将该img_num * 2000个左右的ROIs放入fast原创 2021-01-04 14:07:57 · 335 阅读 · 2 评论 -
Tensorflow---Faster RCNN网络(一)
Tensorflow—Faster RCNN网络(一)Faster-RCNN是一个非常有效的目标检测算法,虽然是一个比较早的论文, 但它至今仍是许多目标检测算法的基础。Faster-RCNN作为一种two-stage的算法,与one-stage的算法相比,two-stage的算法更加复杂且速度较慢,但是检测精度会更高。注:研究Faster-RCNN也有快一年了,在CSDN和github上面也是搜遍了大多的文章和代码,对其原理和实现代码一直都是似懂非懂的感觉,最近时间比较宽松,准备好好研究下Faster原创 2020-12-30 14:09:57 · 789 阅读 · 0 评论 -
Tensorflow---Faster RCNN网络(RPN的训练)(二)
Tensorflow—Faster RCNN网络(RPN的训练)(二)在Tensorflow—Faster RCNN网络(一)博客中,简单的将Faster RCNN网络的原理讲解了一遍,下面几篇blog就进行代码的分步实现~这里,还是要再次感谢两位大佬的无私分享,不然可能到现在都搞不清楚~转载原理文章链接:https://zhuanlan.zhihu.com/p/32404424实现代码链接:https://github.com/MingtaoGuo/Faster_RCNN_TensorFlow原创 2020-12-31 15:15:22 · 647 阅读 · 3 评论 -
Tensorflow---利用Tensorflow对图像进行处理
Tensorflow—利用Tensorflow对图像进行处理读取图像数据import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tfdef show_image(image): shape = np.shape(image) if len(shape) == 3 and shape[2] == 1: # 黑白图像 plt.imshow(image[:, :, 0],原创 2020-12-18 18:51:10 · 815 阅读 · 3 评论 -
Tensorflow---训练过程中学习率(learning_rate)的设定
Tensorflow—训练过程中学习率(learning_rate)的设定在深度学习中,如果训练想要训练,那么必须就要有学习率~它决定着学习参数更新的快慢。如下:上图是w参数的更新公式,其中α就是学习率,α过大或过小,都会导致参数更新的不够好,模型可能会陷入局部最优解或者是无法收敛等情况。一、学习率的类型上图列举了我们常用的5种学习率设置的方法~1.固定学习率optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.0001)原创 2020-12-18 16:20:35 · 11811 阅读 · 1 评论 -
Tensorflow---tf.nn.moments( )函数中参数的理解
Tensorflow—tf.nn.moments( )函数中参数的理解转载:https://blog.csdn.net/CarryLvan/article/details/103585913转载 2020-12-11 16:14:47 · 307 阅读 · 0 评论 -
Tensorflow---基于CNN的手写数字的代码实现
Tensorflow—基于CNN的手写数字的代码实现全局来看局部来看一、外部参数# 定义外部传入的参数tf.app.flags.DEFINE_bool(flag_name="is_train", default_value=True, docstring="给定是否是训练操作,True表示训练,False表示预测!!")tf.app.flags.DEFINE_string(flag_name="原创 2020-12-10 13:32:50 · 199 阅读 · 0 评论 -
Tensorflow---基于TensorFlow实现手写数字的模型训练预测
Tensorflow—基于TensorFlow实现手写数字的模型训练预测import osimport numpy as npimport matplotlib.pyplot as pltimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# 加几个随机数种子,让多次运行的时候,随机数列一致np.random.seed(28)tf.set_random_seed(28)if _原创 2020-12-09 13:23:08 · 402 阅读 · 0 评论 -
Tensorflow---softmax_cross_entropy_with_logits的用法
Tensorflow—softmax_cross_entropy_with_logits的用法研究人工智能,图像算法也有两三年了,也写过很多代码,但是每次研究dl算法的时候,肯定都会写一句:tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)这其实就是损失函数的构建~今天花了点时间总结了下我对这个api的理解~~计算公式先讲下它的计算公式:下面举个例子来说明下进行交叉熵损失函数的计算过程~import te原创 2020-12-08 09:56:43 · 361 阅读 · 0 评论 -
Tensorflow---模型持久化的相关问题
Tensorflow—模型持久化TensorFlow使用tf.train.Saver类实现模型的保存和提取。– 通过Saver对象的restore方法可以加载模型,并通过保存好的模型变量相关值重新加载完全加载进来。– 如果不希望重复定义计算图上的运算,可以直接加载已经持久化的图,通过tf.train.import_meta_graph方法直接加载保存模型import osimport numpy as npimport matplotlib.pyplot as pltimport ten原创 2020-12-04 16:48:37 · 166 阅读 · 0 评论 -
TensorFlow---tf.FIFOQueue队列
TensorFlow学习—tf.FIFOQueue队列tf.FIFOQueueFIFOQueue类基于基类QueueBase.QueueBase主要包含入列(enqueue)和出列(dequeue)两个操作.enqueue操作返回计算图中的一个Operation节点,dequeue操作返回一个Tensor值.Tensor在创建时同样只是一个定义,需要放在Session中运行才能获得真正的数值.tensorflow使用tf.FIFOQueue类创建一个先入先出队列.属性:capacity:指定队列中原创 2020-12-04 13:50:59 · 142 阅读 · 1 评论 -
Tensorflow---可视化工具TensorBoard的用法
Tensorflow—可视化工具TensorBoard的用法TensorBoard是一个可视化工具,它可以用来展示网络图、张量的指标变化、张量的分布情况等。特别是在训练网络的时候,我们可以设置不同的参数(比如:权重W、偏置B、卷积层数、全连接层数等),使用TensorBoader可以很直观的帮我们进行参数的选择。使用步骤#第一步:(添加想要可视化对象)tf.summary.scalar(name='tmp sum x', tensor=sum_x)#第二步:(合并所有的summary可视化输出操作原创 2020-12-04 10:11:29 · 277 阅读 · 0 评论 -
tensorflow---name_scope与variable_scope的区别
tensorflow—name_scope与variable_scope的区别在讲name_scope与variable_scope的区别之前,先讲一下variable与get_variable的区别:在网上看了很多博主关于这个问题的讲解,不过在我看来,二者之间最大的区别应该是:----get_variable有参数初始化参数,然而variable内部没有参数初始化参数----其次,使用tf.Variable时,如果检测到命名冲突,系统会自己处理,其实就是在命名后面直接加_1。使用tf.get_v原创 2020-12-03 17:30:11 · 133 阅读 · 0 评论 -
Tensorflow---运行设备指定
Tensorflow—运行设备指定import osimport tensorflow as tf# 假设现在有两个GPU,我们代码运行的时候希望仅在第二个GPU上运行,并且仅在第二个GPU上分别内存 --> 通过给定环境变量解决os.environ['CUDA_DEVICE_ORDER'] = 'PCI_BUS_ID'# os.environ['CUDA_VISIBLE_DEVICES'] = "0,1" # 允许当前代码使用第一块、第二块GPUos.environ['CUDA_VI原创 2020-12-03 16:22:43 · 381 阅读 · 0 评论 -
Tensorflow----tf.control_dependencies控制依赖用法
Tensorflow----tf.control_dependencies控制依赖用法用法我们可以通过Variable和assign API完成变量的定义和更新,但是如果在更新变量之前需要更新其它变量,那么会导致一个比较严重的问题:也就是需要多次调用sess.run方法来进行变量的更新。通过这种方式,代码复杂程度 上升,同时也没有执行效率解决该问题的方案就是:控制依赖。其实,说白了,就是:在执行最后一行代码之前,必须先执行下tf.control_dependencies中的tensor张量。代原创 2020-12-03 15:45:42 · 480 阅读 · 0 评论 -
Tensorflow---tf.Variable中参数trainable的作用
Tensorflow—tf.Variable中参数trainable的作用在tf.variable参数中有一个参数是***trainable***,这个参数的意思就是在模型训练的时候是否会更新这个参数。当时就觉得这个参数很神奇,竟然有这么厉害的东西存在;其实,在后续做迁移训练的时候,大部分情况下,会保留部分的参数,因为那些参数已经训练的很好了~这个时候,trainable的作用就体现出来了。我在网上简单的搜了下官方对这个参数的理解,可以总结如下:设定trainable=False 可以防止该变量原创 2020-12-03 14:25:50 · 2118 阅读 · 3 评论 -
Tensorflow---tf.multiply与tf.matmul的区别
Tensorflow系列—tf.multiply与tf.matmul的区别在Tensorflow中,关于张量tensor有两个比较常见的乘法操作tf.multiply:两个shape相同的数组,相应位置相乘tf.matmul:两个数组,按照矩阵乘法进行行列相乘代码展示import tensorflow as tfwith tf.Graph().as_default(): a = tf.constant(value=[[1,1,1],[1,1,1],[1,1,1]], dtype=tf.原创 2020-12-03 13:44:56 · 182 阅读 · 0 评论 -
Tensorflow——线性回归模型实现
Tensorflow——线性回归模型实现最近在看R-CNN代码的时候,对坐标回归模型突然变得好陌生,感觉自己从来就没有接触过这个东西(o(╥﹏╥)o),所以特地复习了下tensorflow实现线性回归模型,加深其中的理解~代码实现先贴出来全部的代码,然后分批进行解释~import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tfif __name__ == '__main__': with tf.Gra原创 2020-12-02 17:20:49 · 309 阅读 · 0 评论