机器学习
文章平均质量分 78
一只眠羊e
人之所以会累,就是因为常常徘徊在坚持和放弃之间。
展开
-
机器视觉:空间几何变换与摄像机模型
系列文章目录:机器视觉:霍夫变换-理论与python实现机器视觉:空间几何变换与摄像机模型本文目录1 空间几何变换摄影变换:仿射变换比例变换欧式变换2 几何变换的不变量简比与交比不变量射影变换不变性仿射变换不变性比例变换不变性欧式变换不变性3 欧式空间的刚体变换旋转矩阵的表示4 摄像机透视投影模型三大坐标系图像坐标系摄像机坐标系世界坐标系针孔成像模型非线性模型5 摄像机透视投影模型近似模型仿射摄像机1 空间几何变换这部分是个总结,适合看完下面4个变换后再回来看。欧式变换是比例变换的特例,比例变换原创 2021-11-01 13:43:08 · 453 阅读 · 1 评论 -
机器视觉:霍夫变换-理论与python实现
目录前言霍夫变换—直线原理实现方法python实现前言这学期在学习机器视觉,课上讲到了霍夫变换,霍夫变换在图像处理和CV中很常用,借此十一假期仔细了解一下。霍夫变换用来检测给定形状的曲线,其最开始是用来检测图像中的直线的,但经发展也可检测到圆等曲线。在目标检测中,如果不知图像中目标的位置而知道其轮廓的曲线方程,则可用霍夫变换进行检测。霍夫变换—直线原理在平面O-xy中,直线方程的基本形式为:y=ux+v。其中,u和v分别是直线的斜率和截距。对于一条确定的直线y=ux+v,它唯一地对应于平面O-uv原创 2021-10-31 15:09:39 · 3715 阅读 · 3 评论 -
yolov5代码解读-训练
上两篇:yolov5代码解读-datasetyolov5代码解读-网络架构前言:目录前言:参数解读超参数hyp文件命令行参数训练流程训练前训练yolov5的数据处理模块和网络架构已经写完了,做好了这些基础工作,就可以来训练了。yolov5支持多种训练策略,例如单机单卡,单机多卡,多机多卡。参数解读超参数hyp文件在训练之前,先看一下有哪些超参数。在yolov5工程里面有一个 data文件夹,里面有一个hyp.scratch.yaml文件,可以用写字板或者记事本打开。上面这些参数默认就好,原创 2021-10-04 19:44:07 · 8196 阅读 · 2 评论 -
随机种子np.random.seed()
之前看到有个博主在讲随机种子的时候,举了这样一个例子,https://www.cnblogs.com/sddai/p/14606613.htmlnp.random.seed(0)a = np.random.rand(10)b = np.random.rand(10)print(a)print(b)输出结果[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 0.645894110.43758721 0.891773 0.96原创 2021-10-03 17:27:30 · 311 阅读 · 0 评论 -
yolov5代码解读-网络架构
目录前言网络架构可视化可视化工具(1)netron(2)onnx配置文件解读网络层网络架构代码yolo.pymodelparse_modelcommon.pyConvfocusBottleneckCSPSPPUpsample前言之前解读了yolov5的数据处理模块:yolov5代码解读-dataset数据处理好之后,就来具体看看网络模型是怎么搭建的吧。网络架构可视化可视化工具网络架构可视化工具netron的安装参考:(1)netron可以看我之前写的netron安装和使用文章。也可以直接下原创 2021-10-03 12:48:21 · 6535 阅读 · 4 评论 -
图像插值:理论与Python实现
这里写目录标题前言最近邻插值法(1)理论(2)python实现双线性插值(1)单线性插值(2)双线性插值(3)计算过程(4)python实现双三次插值(1)理论(2)python实现前言参考这篇论文:《Deep Learning for Image Super-resolution:A Survey》1 插值法简单来说,插值指利用已知的点来“猜”未知的点,图像领域插值常用在修改图像尺寸的过程,由旧的图像矩阵中的点计算新图像矩阵中的点并插入,不同的计算过程就是不同的插值算法。插值算法有很多种,这里列原创 2021-10-02 23:50:07 · 3222 阅读 · 5 评论 -
yolov5代码解读-dataset
yolov5在数据处理这方面已经做的较为完善了,但是我现在遇到一个问题,就是我明明的是4通道的tiff数据,它用cv2.imread一下就给我读成3通道了。如果只是有个加载数据,我当然可以直接加个标志位解决,但是读取数据不止一个地方,后面还有画图等等操作,每个地方都要考虑,去看看它实际是怎么写的,读懂它,再修改它。这里写目录标题加载数据设置标签缓存训练时实际加载数据 __getitem__马赛克增强第一部分:坐标计算第二部分:更新标签。第三部分:图像增强。图像增强第一部分:构建随机仿射矩阵并变换。第二部分原创 2021-10-01 18:03:40 · 3217 阅读 · 10 评论 -
图像的仿射变换:cv2.warpAffine()
概述图像的几何变换主要包括:平移、旋转、缩放、剪切、仿射、透视等。图像的几何变换主要分为:刚性变换、相似变换、仿射变换和透视变换(投影变换)刚性变换:平移+旋转相似变换:缩放+剪切仿射变换:从一个二维坐标系变换到另一个二维坐标系,属于线性变换。通过已知3对坐标点可以求得变换矩阵透视变换是从一个二维坐标系变换到一个三维坐标系,属于非线性变换。通过已知4对坐标点可以求得变换矩阵。仿射变换仿射变换(Affine Transformation)是指在向量空间中进行一次线性变换(乘以一个矩阵)和原创 2021-10-01 14:03:45 · 11262 阅读 · 5 评论 -
YOLO系列
前言本文是博主整理的学习笔记,不是yolo讲解文章,适合有一定yolo基础的同学复盘学习。长文预告,多图预告。yolo主要关注两个检测指标:mAP和速度。mAP:综合衡量检测效果,包括精度和recall(召回率)等,是精度和recall的交点与原点形成的矩形的面积。召回率:有多少框被检测到了(查全率)精度:iou(查准率)精度和召回率互相矛盾,一个高,另一个就低。所以就直接用mAP一个指标了。其实就是iou的阈值设置的原因。yolo的口号:速度第一,mAP第二。整个yolo系列,在预原创 2021-09-09 20:37:46 · 309 阅读 · 0 评论 -
语义分割处理tiff数据,实现landsat8影像检测(一)
做了一个小实验,对矿山进行检测,属于语义分割的任务,是一个二分类。所用数据是landsat8,tif格式影像。环境是tensorflow2.4。另外,本次训练,不论是训练集还是测试集,准确率都高的离谱。训练集98以上,测试集直接100…不太清楚导致它如此高的原因是什么。因为要修改,特在此将原版记录一下。这一版主要是没有放弃波段8的信息,因为在landsat8中,波段8的分辨率是高于其他波段的,这造成维度不同,因此处理起来也较为麻烦,需要对它重采样以及特殊维度处理。新版计划直接放弃波段8了。所用代码与前原创 2021-06-03 18:49:44 · 2579 阅读 · 2 评论 -
keras搭建unet模型—语义分割
在前一篇文章基于keras的全卷积网络FCN—语义分割中,博主用keras搭建了fcn模型,使用猫狗数据集做了训练。本文在此基础上搭建了unet模型,数据介绍请看上面这篇文章,本文直接展示unet的模型。本文的环境是tensorflow2.4,gpu版本。unet:unet是u型结构,前面的层不断下采样,后面的层在不断上采样,同stage的跳接以保存信息。unet的层数不是很深,在医学领域上用于细胞检测效果显著。搭建unetdef unet(pretrained_weights=None, in原创 2021-05-30 17:00:38 · 3818 阅读 · 6 评论 -
基于keras的全卷积网络FCN—语义分割
语义分割:先码下有时间再写全卷积网络FCN:先码下有时间再写基于猫狗数据的代码实现:数据准备:本文用的是猫狗数据集,images里面存放的是对应的图片(3通道),annotation存放的是语义分割的标签(1通道)。数据的读取、转换和打乱操作:def read_jpg(path): img=tf.io.read_file(path) img=tf.image.decode_jpeg(img,channels=3) return imgdef read_png原创 2021-05-29 20:46:53 · 1778 阅读 · 7 评论 -
python影像裁剪并保存成tiff格式(滑动窗口法)
博主在上一篇文章python影像裁剪并保存成tiff格式(规则网格法)中介绍了将遥感影像按照网格切分,本章介绍滑动窗口的切分方法。介绍滑动窗口和规则网格的区别如下规则网格:滑动窗口:此外,还有一种随机裁剪的方法读取tiff文件数据,整理成我们需要的数组格式,将数组保存成tiff文件,和波段的叠加,mask矩阵的构建等等请参考博主之前的文章python影像裁剪并保存成tiff格式(规则网格法),内容不再重复,我们直接基于上篇文章开始修改,将规则网格升级为滑动窗口。当滑动窗口的重叠率为0时,就原创 2021-05-22 19:57:21 · 4781 阅读 · 18 评论 -
python影像裁剪并保存成tiff格式(规则网格法)
上一篇文章简单介绍了波段的叠加,本文对叠加的波段进行影像裁剪,输出是channels×256×256的tiff格式。本文构建了相应的mask矩阵加在了channel的最后一个通道。数据准备波段的读取可以参考python批量读取landsat8的波段,具体的函数整理数据的函数在这篇文章都介绍的很详细,这里不再重复,我们直接用它的返回列表。波段叠加的具体方式参考python矩阵堆叠-实现遥感影像波段叠加,这些都是博主刚刚更新过的内容,这里直接拿来用。from read_landsat8 import r原创 2021-05-22 18:19:42 · 3050 阅读 · 4 评论 -
python矩阵堆叠-实现遥感影像波段叠加
前文读取landsat8数据,计算NDVI并保存成tiff文件和python批量读取landsat8的波段分别介绍了对landsat8数据的不同读取方式,以及对利用波段数据进行简单的指数计算。本文在此基础上实现波段的叠加。准备工作这一部分参考python批量读取landsat8的波段,利用文中的函数,我们对landsat8的波段路径进行了一个整理,存放到了bands列表中并返回。看一下格式:第一张影像的前5个波段from read_landsat8 import read_landsat8_band原创 2021-05-22 14:13:17 · 1516 阅读 · 1 评论 -
用ltp提取文本关系并创建知识图谱(基于neo4j)(二)
博主在上一篇用ltp提取文本关系并创建知识图谱(基于neo4j)文章中用LTP对单句话做了分析,提取了语义依存关系,并用python在neo4j网站上创建了图谱。本章是对上篇文章的扩展,总体代码类似,本文可以实现对多个句子创建知识图谱,这次创建的不是语义依存关系,而是句法关系(主谓关系,动宾关系等)。可以参考ltp的官方文档和ltp附录阅读文本。使用ltp提取文本关系:本文只是简单演示,分析的句子是:他叫汤姆去拿外衣.汤姆生病了。他去了医院。你也可以随意替换它。from ltp import LT原创 2021-05-20 13:31:22 · 4351 阅读 · 14 评论 -
用ltp提取文本关系并创建知识图谱(基于neo4j)
LTP提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。ltp的官方文档里演示了分词,句法分析,语义依存关系提取等简单demo。本文在此基础上,将提取出的语义依存关系构建出知识图谱,使用的是neo4j平台。同时本文也会演示怎么使用python在neo4j上创建图谱。neo4j的安装比较简单,请自行查阅。用ltp创建知识图谱至少需要3个信息:节点类型节点名字节点间的关系使用ltp提取文本关系:本文只是简单演示,分析的句子是:他叫汤姆去拿外原创 2021-05-19 13:06:58 · 3888 阅读 · 11 评论 -
win10+keras+tensorboard的使用
在训练模型时,不可避免地要对训练结果做一些评估。tensorboard可以对训练过程中的一些指标进行可视化,tensorboard在tensorflow、keras和pytorch等框架下都可以使用。而网上多是关于tensorboard在linux系统下的使用,给win10使用者造成不便。其实,不同用户对应的版本不同,使用的框架不同,最简单的方法就是参考tensorboard官网官网的实例也是linux系统,不过对于keras来说,win10也是相同的用法,只是路径格式不太相同。因为构建模型很简单,不原创 2021-05-18 15:01:54 · 277 阅读 · 0 评论 -
可视化理解深度神经网络
#andrew ng课程学习笔记深度神经网络究竟在做什么?(1)浅层的网络对线条和颜色等比较敏感,容易被一些特定区域激活。(2)在深层中,会看到一个图片更大的部分。在极端情况下,可以假设每一个像素都会影响到神经网络更深层的输出,背后的掩藏单元可以看到更大的隐藏块。在第二层中,标出的两个红框代表了最大化激活隐藏单元的两个图片块。这个可视化展示了最大化激活第二层的9个图片块。每个块又有9个图片块,使得隐藏单元有较大的输出,或者说较大的激活。(3)在更深的层上,可以重复这个过程。在第一层上,似乎原创 2021-03-09 13:36:08 · 228 阅读 · 1 评论 -
github下载代码
github上面有非常多的开源代码,非常适合大家站在巨人的肩膀上学习和实践,也是合作开发的利器。在从giuhub下载代码前,默认读者已经拥有了属于自己的github账号。本文介绍的是用HTTP的方式克隆源码,压缩包方式因不常用,暂且不提。在下载前,我们要先配置好系统环境,已安装好python,pip和Git。如何用下载和安装Git,博主有时间再更新。一、首先,我们以深度学习中的ResNets的开源代码为例在浏览器输入所需代码关键字,这里我们选择何凯明论文中的代码点进去后可以看到关于源码的各种原创 2021-03-07 21:02:41 · 9119 阅读 · 4 评论 -
“上采样”与“反卷积”
在阅读YOLO模型和DenseNet网络模型的时候,对“上采样”和“反卷积”的概念不甚理解,查阅了一些资料,整理如下。并附上pytorch实现上采样的源码。在阅读本文前,默认读者已经了解了深度学习中的卷积操作。声明:本文用到的部分资料来自简书作者@乔大叶_803e和知乎作者@幽并游侠儿_1425文章目录上采样(Upsample)反卷积(Transposed Convolution)pytorch实现上采样上采样(Upsample)在介绍上采样前,还有一个概念叫做下采样。下采样简单来讲,就是在卷原创 2021-02-21 21:36:11 · 6986 阅读 · 1 评论 -
torch.max()用法
函数:torch.max(input, dim, keepdim=False, out=None)返回值:Tensor, LongTensor作用:输入tensor,按维度返回其最大值,并返回其最大维度的索引。创建2个张量a和ba = torch.tensor([[10, 5, 1], [2, 4, 3]])b = torch.tensor([[6, 8, 9], [1, 4, 2]])print(a)print(b)tensor([[10, 5, 1], [ 2,原创 2021-02-19 20:08:28 · 627 阅读 · 0 评论 -
理解深度学习中的“卷积神经网络”(二)
上一篇:理解深度学习中的“卷积神经网络”(一)在上一篇文章中,博主详细介绍了卷积基础,包括二维卷积、三维卷积、卷积核的特点,以及使用卷积网络的原因。在这一篇,我们将更加深入地理解卷积,包括卷积中常见的padding、步长和池化操作。声明:本文用到的部分材料来自吴恩达老师的《深度学习》和51CTO小超老师的 “YOLOV4代码复现-—行人车辆检测”课程。文章目录padding步长(stride)池化(pooling)padding下图是上一篇文章介绍三维卷积的用图。如果是6×6的输入图像,经过原创 2021-02-18 21:31:17 · 891 阅读 · 0 评论 -
理解深度学习中的“卷积神经网络”(一)
文章目录卷积介绍二维卷积操作三维卷积操作卷积核:人工卷积核的特点卷积核与全连接层的关系(为什么要使用卷积核?)博主最近在学习YOLO系列算法,本文是博主学习后的笔记,详细介绍了卷积,希望能帮助到入门深度学习和卷积网络的童鞋。声明:本文用到的部分材料来自吴恩达老师的《深度学习》和51CTO小超老师的 “YOLOV4代码复现-—行人车辆检测”课程。卷积介绍二维卷积操作假设:这里我们假设3种网格,对应3个矩阵。假设我们有一张7×7的输入图片,在计算机中,就是一个7×7的矩阵,记为A。同时,假设我们人原创 2021-02-17 21:34:03 · 2771 阅读 · 13 评论