自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 xml转yolotxt

import globimport os#xml文件夹的路径xml_path = ''def _read_anno(filename): import xml.etree.ElementTree as ET """ Parse a PASCAL VOC xml file """ tree = ET.parse(filename) a = tree.find('size') w,h = [int(a.find('width').text),

2021-07-02 09:31:54 320

原创 如何实现高质量人像抠图(matting)

hello,之前发过一篇使用u2net来实现人像抠图换背景的文章,对于一些简单的图片(单人,场景简单)有很好的效果,但是由于官方提供的预训练模型是基于一个多分类无标签数据集训练出来的,因此除了人还会分割出一些一些其他的东西,今天再来介绍一种方法,是有商汤最新提出的matting算法。代码链接(我只是算法的搬运工)下载好代码和预训练模型以后,在inference.py文件中修改相关配置参数(输入、输出、权重文件地址)运行即可。下面给大家看一下效果图:是不是效果很棒!头发丝都能分割出来,然后基于原图

2020-12-22 15:28:04 1982 16

原创 yolov5数据强化方法并不是越多越好

最近刚刚更新的yolov5 3.1版本,里边封装了好多好多的数据强化方法,但是在实际训练中,并不是强化方法越多越好,下边主要是基于其中的三种方法做一下介绍:1.mosaicMosaic简单的说就是把四张训练图片缩放拼成一张图,这样我们原本较大的目标在缩小大概一倍之后也会变成较小的目标,这样训练可以增强我们模型的检测小模型的能力。但是如果我们的数据集本身就有很多的小目标,那么这个方法反而会导致本来较小的目标变得更小,导致模型的泛化能力变差。例如下边这张图是我自己正在做的一个目标检测项目训练集label分

2020-12-07 16:19:24 9362 22

原创 如何用实例分割产生的mask图实现人像抠图和背景替换

最近在做一个人像分割的项目,来实现人像抠图和背景替换等功能实例分割阶段,可以使用u2net来输出mask图,代码地址。下边为原图以及产生的mask图然后我们找一张想要替换的背景图import cv2person = cv2.imread("原图")back = cv2.imread("背景图")#这里将mask图转化为灰度图mask = cv2.imread("mask图",cv2.IMREAD_GRAYSCALE)#将背景图resize到和原图一样的尺寸back = cv2.r

2020-11-12 17:30:56 7318 1

原创 yolov5如何找出召回率以及map较低的原因(或者说找出难以预测的图片)

    最近一直在用yolov5(v1.0版本)做头盔、安全帽、人脸三分类的检测任务,数据集是三个数据集的融合,关于融合数据集前边说到过,这里就不再提起,最终的指标(0.5的阈值)如下:尝试了一些增强数据方法,也用了很多优化策略,但是指标都不提升,因此从数据角度查找原因,通过指标可以看出,模型的精度很高,召回率较低,因此说明模型漏检问题较为严重,对detect.py文件进行一些修改,labels = []#这里是画检测框的代码for *xyxy, conf, cls in det: lab

2020-10-28 19:32:30 17235 36

原创 yolov5训练安全帽数据集之 训练集和验证集的划分

    废话不多说,直接上代码和注释import osimport cv2import globimport random#train_txt_path = 'train.txt'val_txt_path = 'val.txt'#全部的txtpath_imgs = 'your_data_path/*.txt'#glob.glob返回所有匹配的文件路径列表。image_list = glob.glob(path_imgs)#打乱random.shuffle(image_list)#

2020-10-21 17:56:01 4669

原创 yolov5训练安全帽数据集之 xml文件生成txt

    本文针对用yolov5训练安全帽数据集,由于初始的安全帽数据集数据较少,因此我找了三个数据集进行了融合,其中两个数据集的xml文件中分别以’0’,'1’代表没戴安全帽和戴安全帽,另一个数据集通过‘white’,‘red’,‘blue’等颜色来表示戴了安全帽以及安全帽的颜色,‘none’来表示没有带。第一种xml格式如下图:第二种如下:除此之外,还有一些问题比如不同的数据及都是用数字来命名的,因此会重名,yolov5需要的信息是x,y,w,h,xml中提供的是x1,y1,x2,y2,那么我们如

2020-10-21 17:42:15 3940

原创 关于一些常用数据集以及训练模型小记录

记录做工程项目的过程中用到的数据集以及对应的模型1.VOC2007/2012:这应该是最常用的目标检测数据集了,尝试过用三个模型跑通,分别是yolov3,fasterrcnn,ssd2.widerface:人脸检测数据集,使用retinaface3.Youtube Face:从Youtube上下载的视频,剪切成帧,用来做人脸识别 使用Deepid4.CASIA-WebFace:人脸识别数据集, 使用facenet...

2020-10-16 10:14:10 623

原创 yolov5算法使用小记录(1)

并不是所有的数据强化都能够优化模型,数据增强的方法都要适应所选择的数据集,例如BDD-100K,数据集来源为新车记录仪,图片中的大部分目标都是小目标。此时使用随机擦除(Random Erasing Augmentation)就不再适用。这是因为随机擦除会随机的在图片的一个区域打上马赛克,随机的遮挡待检测物,来增加我们模型的泛化能力,在predict中就算目标被遮挡也可以将他检测出来。但是BDD-100K中目标都很小,即使是用我们的眼睛去看都很模糊,随机擦除如果尺寸过大,则会完全遮挡目标物,尺寸过小则没有意

2020-10-15 16:40:53 1447 3

原创 过拟合解决方法总结(不断更新)

    因为解决过拟合的方法很多,有些方法每次用到的时候都需要百度,因此发个文,将以后用到的缓解过拟合方法总结在这里。(不断更新)1.交叉验证参考地址将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2。应用最多,K-CV可以有效的避免过拟合与欠拟合的发生,最后得到的

2020-09-11 14:02:53 1045

原创 【tensorflow2.0】50.Tensorflow Hub

十行代码能干什么? 相信多数人的答案是可以写个“Hello world”,或者做个简易计算器,本章将告诉你另一个答案,还可以实现人工智能算法应用。基于TensorFlowHub,可以轻松使用十行代码完成所有主流的人工智能算法应用,比如目标检测、人脸识别、语义分割等任务。TensorFlowHub是预训练模型应用工具,集成了最优秀的算法模型,旨在帮助开发者使用最简单的代码快速完成复杂的深度学习任务,另外,TensorFlowHub提供了方便的Fine-tune API,开发者可以使用高质量的预训练模型结合F

2020-07-15 10:14:23 491

原创 【tensorflow2.0】49.Keras和自定义分布式训练

在Keras上使用我们已经将 tf.distribute.Strategy 集成到 tf.keras 中。tf.keras 是一个构建和训练模型的高级API。通过集成到 tf.keras 后端, 用Keras训练框架写的程序可以无缝进行分布式训练。您需要对代码中进行以下更改:创建一个 tf.distribute.Strategy 实例将Keras模型的创建和编译过程挪到strategy.scope中支持各种类型的Keras模型:顺序模型、函数式模型和子类模型:下面是一个非常简单的Keras模型示

2020-07-13 21:05:52 746

原创 【tensorflow2.0】48.分布式训练

    在训练神经网络模型时,我们更偏爱大规模的数据集和复杂的网络结构。更大规模的数据集和更复杂的网络结构可以让我们的模型表征能力更强,但同时也对计算的时间和空间提出了挑战。如果我们只用单机单GPU来跑,则会出现一卡有难(运行时间长、显存不足等),十卡围观的状态。很多神经网络库都提供了分布式训练的API,但是如果不了解内在机理,我们仍然很难得到满意的效率和效果。于是,就有了分布式训练。    tf.distribute.Strategy 是一个用于分布式训练的TensorFlow API ,横跨多GPU、

2020-07-13 20:04:30 524

原创 【tensorflow2.0】47.时间序列数据建模流程实例(总复习)

    本篇文章将利用TensorFlow2.0建立时间序列RNN模型,对国内的新冠肺炎疫情结束时间进行预测。数据集取自tushare。import numpy as npimport pandas as pd import matplotlib.pyplot as pltimport tensorflow as tf from tensorflow.keras import models,layers,losses,metrics,callbacks #读取数据处理数据%matplotlib

2020-07-13 19:50:54 523

转载 【tensorflow2.0】46.文本数据建模流程实例(总复习)

    imdb数据集的目标是根据电影评论的文本内容预测评论的情感标签。训练集有20000条电影评论文本,测试集有5000条电影评论文本,其中正面评论和负面评论都各占一半。    文本数据预处理较为繁琐,包括中文切词(本示例不涉及),构建词典,编码转换,序列填充,构建数据管道等等。    在tensorflow中完成文本数据预处理的常用方案有两种,第一种是利用tf.keras.preprocessing中的Tokenizer词典构建工具和tf.keras.utils.Sequence构建文本数据生成器管

2020-07-13 10:46:39 577 1

转载 【tensorflow2.0】45.图片数据建模流程实例(总复习)

    这次我们来看一下图片数据的建模流程,用到的数据集是cifar10的子数据及cifar2,分两个类别airplane和automobile,训练集有10000张图片,测试集有2000张。import tensorflow as tf from tensorflow.keras import datasets,layers,modelsBATCH_SIZE = 100#定义图片预处理的函数def load_image(img_path,size = (32,32)): label =

2020-07-12 20:19:03 236

转载 【tensorflow2.0】44.结构化建模流程实例(总复习)

    下边来个综合案例,代码来源,数据集是titanic数据集,建模流程查看这里import numpy as np import pandas as pd import matplotlib.pyplot as pltimport tensorflow as tf from tensorflow.keras import models,layersdftrain_raw = pd.read_csv('./data/titanic/train.csv')dftest_raw = pd.re

2020-07-12 16:30:43 289

原创 【tensorflow2.0】43.tensorflow 的建模流程

    其实到目前为止,我们已经将tf的基础知识学的差不多了,所以后边除了课程会发一些总结类的文章,今天先说一下tf的建模流程。使用TensorFlow实现神经网络模型的一般流程包括:1,准备数据:其实这一点一直以来是我认为最难的一点,我们除了要建立数据通道输入数据以外,还需要,对数据进行清洗,排除掉错误的数据,数据量少的时候,我们还要进行数据增强,并不是每一个数据集都像mnist一样,我们可以直接几行代码就建立训练集和测试集,大多数的数据集还是需要我们自行去读取和整理,所以numpy,pandas,m

2020-07-10 21:05:29 408

原创 【tensorflow2.0】42.LSTM和GRU的api补充

    之前讲解了lstm和gru的机制和算法,但是忘记了加代码,这里补充一下。tf.keras.layers.GRU( units, activation='tanh', recurrent_activation='sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', kernel_reg

2020-07-10 20:55:24 457

原创 【tensorflow2.0】41.通道注意力模块代码(tf2.0)

我们知道一张图片经过几个卷积层会得到一个特征矩阵,这个矩阵的通道数就是卷积层核的个数。那么,一个常见的卷积核经常达到1024,2048个,并不是每个通道都对于信息传递非常有用了的。因此,通过对这些通道进行过滤,也就是注意,来得到优化后的特征。主要思路就是:增大有效通道权重,减少无效通道的权重#实现方式1class ChannelAttention(layers.Layer): def __init__(self, in_planes, ratio=8): super(Channe

2020-07-07 22:16:06 2122 6

原创 【tensorflow2.0】40.注意力机制介绍

今天查看了一下课表,突然发现老师没有讲关于注意力机制的课,所以搜了一些资源和大家分享。原文地址什么是Attention机制Attention机制通俗的讲就是把注意力集中放在重要的点上,而忽略其他不重要的因素。其中重要程度的判断取决于应用场景,拿个现实生活中的例子,比如1000个人眼中有1000个哈姆雷特。根据应用场景的不同,Attention分为空间注意力和时间注意力,前者用于图像处理,后者用于自然语言处理。本文主要介绍Attention机制在Seq2seq中的应用。为什么要用Attention机制

2020-07-07 22:08:32 2367

原创 【tensorflow2.0】39.Transformer、CNN,RNN对比

三种模型的对比从encoder,decoder,attention三个部位来对比encoder端:1)RNNRNN的encoder端和常见的用于分类的RNN模型没有什么区别,输入x,得到最后一层的隐层状态,用于之后计算attention。2)conv在这里采用stacking conv来对输入x编码,作者认为这种stacking conv是可以捕获到长距离的信息的,假设卷积的kernel size为3,第一层卷积能覆盖的最大长度为3(对原始序列),第二层卷积能覆盖的最大长度为32(对原始序列),

2020-07-07 22:05:00 1159

转载 【tensorflow2.0】38.Transformer简介

    Transformer就是完全利用attention机制来解决自然语言翻译问题,那么为什么attention机制能代替RNN/LSTM呢?我们先来看Transformer的结构它分为encoder和decoder两个部分,每个部分有很多层。encoder里的每层有self attention和feed forward两层。其中encoder输入是n个词向量,n是输入最长的句子里单词数量。decoder的输出则是类似传统的seq2seq结构,是一个一个目标语言的单词。self attentio

2020-07-07 20:01:04 931

原创 【tensorflow2.0】37.nlp实战之模型训练

    接着上一部分做模型的训练和优化。#转化为ont-hot 独热编码train_label = tf.keras.utils.to_categorical(train_label,num_classes=10,dtype='int')val_label = tf.keras.utils.to_categorical(val_label,num_classes=10,dtype='int')test_label = tf.keras.utils.to_categorical(test_label,

2020-07-05 18:08:05 257

原创 【tensorflow2.0】36.nlp实战之词向量与模型构建

接着上一篇文章#训练词向量import os file_name = './embedding/Word2Vec_word_200.model'if not os.path.exists(file_name): model = Word2Vec([document.split(' ')for document in df['content'].values], size=200, window=5,

2020-07-04 22:27:16 213

原创 【tensorflow2.0】35.nlp实战之数据分析与处理

    由于这个项目内容过长,所以我们将它分为三部分,第一部分是数据分析与处理。THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。我们在原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。#首先导入相应的包import pandas as pdimport numpy as npfrom gensim

2020-07-04 22:14:13 477

原创 【tensorflow2.0】34.word2vec作业代码

#没有包的可以先下载pip install gensimpip install jiebaimport pandas as pdimport numpy as npfrom gensim.models import Word2Vec#读取数据集:这里我们有训练集 验证集 测试集train = pd.read_csv('./cnews/train.tsv',sep='\t',header=None,names=['label','content'])val = pd.read_csv('.

2020-07-02 21:01:54 289

原创 【tensorflow2.0】33.word2vec

部分来源于知乎大佬    先举个简单的例子,判断一个词的词性,是动词还是名词,用机器学习的思路,我们有一系列样本(x,y),这里 x 是词语,y 是它们的词性,我们要构建 f(x)->y 的映射,但这里的数学模型 f(比如神经网络、SVM)只接受数值型输入,而 NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding),而 Word2vec,就是词嵌入( wor

2020-07-02 19:54:08 448

原创 【tensorflow2.0】32.词向量

    词向量(Word embedding),又叫Word嵌入式自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。 从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空间的数学嵌入。    生成这种映射的方法包括神经网络,单词共生矩阵的降维,概率模型,可解释的知识库方法,和术语的显式表示 单词出现的背景。    当用作底层输入表示时,单词和短语嵌入已经被证明可以提高NLP任务的性能,例如语法分析和情感分析。    在自然语言处理任务

2020-07-02 16:22:59 422 1

原创 【深度之眼tensorflow2.0框架项目班】31.LSTM和GRU动图理解

原文地址    因为传统的RNN模块会受到短期记忆的影响,当序列过长的时候,靠前的信息很难传递到后边的时间步,因此,当我们使用RNN处理文本进行预测的时候,会遗漏很多重要信息,除此之外,当网络过长的时候,反向传播的过程中会出现梯度消失的问题,梯度消失以后,参数也就不会在更新。因此我们有了LSTM和GRU。    LSTM 和 GRU 是解决短时记忆问题的解决方案,它们具有称为“门”的内部机制,可以调节信息流。    在信息随着时间传入网络的时候,“门”可以知道哪些信息需要保留,哪些需要删除,就像我.

2020-06-30 19:55:59 351

原创 【tensorflow2.0】30.RNN

    循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network),关于RNN算法的介绍,大家可以看一下这个,讲解的特别清楚tf.keras.layers.RNN( cell, return_sequences=False, return_state=False, go_backwards=Fal

2020-06-30 11:42:26 189

原创 【tensorflow2.0】29.tf.keras.applications

    在讲解作业之前,插一个很重要的知识点,也是我们作业中的一个重要的知识点,用tf.keras.applications加载预训练模型。我们可以发现,tf.keras.applications下有很多可以直接使用的预训练模型,其中就有很多我们前两天复现过的结构,下边我们就以mobilenet来演示一下如何使用这个api。tf.keras.applications.MobileNet( input_shape=None, alpha=1.0, depth_multiplier=1, drop

2020-06-28 12:21:18 3024 1

原创 【tensorflow2.0】28.tf2.0实现MobileNet

    MobileNet是一种,轻量级网络,虽然准确率低一些,但是参数真的很少很少,这也是我们后边作业要用到的一个网络,下边来带大家看一下MobileNet的结构和代码复现。    MobileNet的主要结构是深度可分离卷积,具体算法是用n个卷积核遍历数据以后,在用11的卷积核遍历这n个特征图。假设我们的卷积核为33,输入通道10,输出通道20,那么传统卷积参数就是331020=1800个参数,应用深度可分离卷积3310+1020=290,大大的减少了参数量。在tf.keras中可以使用Depthwi

2020-06-28 11:31:00 824

原创 【tensorflow2.0】27.tf2.0实现ResNet

    终于到ResNet了,这个模型的复现比前边的网络难度要大不少,因为前边的都属顺序网络,一层接一层,而ResNet引入了残差结构。它差不多是当前应用最为广泛的CNN特征提取网络。它的提出始于2015年,作者中间有大名鼎鼎的三位人物He-Kaiming, Ren-Shaoqing, Sun-Jian。...

2020-06-28 10:05:22 761 1

原创 【tensorflow2.0】26.tf2.0实现InceptionV3

InceptionV3简介来源    Google 的 InceptionNet 首次亮相是在 2014 年的 ILSVRC 比赛中,并且以 top-5 错误率(为 6.67% )略低于 VGGNet 的优势取得了第一名。习惯上我们将那一年的 InceptionNet 称为 Inception V1 ,这是因为 InceptionNet 是一个大的家族一一截止至 2016 年 2 月, InceptionNet 一共开发了 4 个版本。InceptionV3 是这个大家族中比较有代表性的一个版本,在本节将

2020-06-24 16:46:50 1019

原创 【tensorflow2.0】25.tf2.0实现VGG16

VGG 原理来源    VGG是Oxford的Visual Geometry Group的组提出的(大家应该能看出VGG名字的由来了)。该网络是在ILSVRC 2014上的相关工作,主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。VGG有两种结构,分别是VGG16和VGG19,两者并没有本质上的区别,只是网络深度不一样。    VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。对于给定的感受野(与输出有关

2020-06-23 21:38:16 1144

原创 【tensorflow2.0】24.tf2.0实现AlexNet

    AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。(以下内容出自百度百科)    AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速。    AlexNet将LeNet的思想发扬光大,把CN

2020-06-23 11:07:58 797 2

原创 【tensorflow2.0】23.tf2.0实现LeNet

    手写字体识别模型LeNet5诞生于1994年,是最早的卷积神经网络之一。LeNet5通过巧妙的设计,利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别,这个网络也是最近大量神经网络架构的起点。LeNet5的网络结构示意图如下所示:下边我们通过代码来实现LeNet,给出代码的同时,也会计算参数数量和维度变化。#这里我们通过顺序模型来实现,相当于复习一下前边的内容。#这里我们用的图片为(32,32,1)model = tf.keras.Sequ

2020-06-22 22:32:43 577

原创 【tensorflow2.0】22.卷积层和池化层

    今天的内容对做计算机视觉的同学可以说是最重要的一部分,因为对于卷积的介绍、作用以及算法网上已经有太多太多的资料可以让大家学习,所以本篇文章就介绍一下卷积层和池化层的函数以及如何通过代码实现卷积。#2维卷积(这也是我们做视觉最常用的卷积块)tf.keras.layers.Conv2D( filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), acti

2020-06-22 21:52:39 460

原创 【tensorflow2.0】21.Dataset实战之猫狗大战

    下边是关于猫狗大战代码的解读。#os模块提供了很多操作系统的功能接口函数import tensorflow as tfimport osprint(tf.__version__)#训练集和测试集的位置,本地运行的时候记得修改路径data_dir = './datasets'train_cats_dir = data_dir + '/train/cats/'train_dogs_dir = data_dir + '/train/dogs/'test_cats_dir = data_

2020-06-19 18:04:48 491 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除