卷积神经网络(CNN)学习
前言卷积神经网络(Convolutional Neural Network,CNN) 是多层感知机(MLP)的变种,是一类包含卷积计算且具有深度结构的前馈神经网络(FNN),是深度学习的代表算法之一。常被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础。
CNN本质上是一个多层感知机,xx其成功的原因关键在于它所采用的局部连接和共享权值的方式xx,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。
整体结构一般情况下,CNN的结构形式是:输入层–> Conv层 –> Pooling层 –> (重复Conv、Pooling层) … –> FC(Full-connected)层 –> 输出结果通常输入层大小一般为2的整数倍,通常卷积层使用较小的filter,如3x3,最大也就5x5。Pooling层用于对卷积结果进行降低维度,例如选择2x2的区域对卷积层进行降低维度,则选择2x2区域的最大值作为输出,这样卷积层的维度就降为之前一半。
卷积神经网络整体架构: 卷积神经网络是一种多层的监督学习神 ...
经典网络模型介绍-LeNet-5
简单读一下经典网络模型之LeNet-5,建议重点读第二章
LeNet-5是LeNet的最终稳定版本,具有以下特点:
所有卷积核大小均为5x5,步长为1;
所有池化方法为平均池化;
所有激活函数采用Sigmoid
1.输入层输入图像的尺寸统一归一化为32x32.
2.C1层:第一个卷积层输入图片大小:32x32卷积核大小:5x5,步长1,无填充卷积核种类:6输出特征图大小:28x28 32-5+1=28神经元数量:28x28x6=4704可训练参数:(5x5+1)x6=156 其中,1为偏置参数连接数(和输入层的连接数):(5x5+1)x6x28x28=122304
3.S2层-池化层(下采样层)输入特征图大小:28x28采样区域:2x2采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数。采样种类:6输出特征图大小:14x14神经元数量:14x14x6连接数(和C1层连接):(2x2+1)x6x14x14S2中每个特征图的大小是C1中特征图大小的1/4.
4.C3层-第二个卷积层 ...
PIL将图片切分为九宫格
看到一个好玩的方式,学习一下
思路读取图片->填充图片为正方形(fill_image函数)->将图片切分为9张(cut_image函数)->保存图片(save_image)->over
代码from PIL import Imageimport sys# 将图片填充为正方形def fill_image(image): width, height = image.size # 选取长和宽中较大值作为新图片的宽 new_image_length = width if width > height else height # 生成新图片[白底] new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white') # 将之前的图粘贴在新图上,居中 if width > height: # 原图宽大于高,则填充图片的竖直维度 # (x,y)二元组表示粘贴上图相对下图的起始位置 n ...
Python OpenCV库
图像处理,怎么能不学OpenCV呢
前言OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。OpenCV依赖一些库,比如Numpy,自行安装。
OpenCV应用领域:1、计算机视觉领域方向2、人机互动3、物体识别4、图像分割5、人脸识别6、动作识别7、运动跟踪8、机器人9、运动分析10、机器视觉11、结构分析12、汽车安全驾驶
安装:# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-pythonconda install -c conda-forge opencv
关于M1下安装请看:https://blog.csdn.net/jjw_zyfx/article/details/119851647
读取操作import cv2# 打开 & 显示im = cv2.imread("./mcat_jpg.jpg") ...
CNN(卷积神经网络)学习
最近刚学到CNN,遂做个笔记来帮助自己理解
前言CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础
Python PIL库
上次接触PIL是2017年的事情了,由于好几年不用都忘了个一干二净,最近又接触到图像处理方面的工作,重新学一下
前言Pillow 是 Python 中较为基础的图像处理库,主要用于图像的基本处理,比如裁剪图像、调整图像大小和图像颜色处理等。与 Pillow 相比,OpenCV 和 Scikit-image 的功能更为丰富,所以使用起来也更为复杂,主要应用于机器视觉、图像分析等领域,比如众所周知的“人脸识别”应用 。
Pillow 提供了丰富的图像处理功能,可概括为两个方面:
图像归档(包括创建缩略图、生成预览图像、图像批量处理等)
图像处理(包括调整图像大小、裁剪图像、像素点处理、添加滤镜、图像颜色处理等)
常用操作基本操作图像打开与读取在PIL中,任何图像都可以用Image对象表示
"""方法 描述Image.open(filename,mode=‘r’) 根据文件名读取图片Image.new(mode,size color) 根据给定参数创建一个新图像Image.fromarray(obj, mode=None) 从array数据创建图像Image.show() 显示图像 ...
最大似然估计
最大似然法
极大似然估计方法(Maximum Likelihood Estimate,MLE)也称为最大概似估计或最大似然估计,是求估计的另一种方法,我们用已知的样本数据分布去推测具体的分布情况。
通俗来说,最大似然估计的目的就是就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!
换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。
使用极大似然估计方法的两个条件:
我们假定数据服从某种已知的特定数据分布型。
我们已经得到了一定的数据集。
一般步骤
这部分来自:https://www.cnblogs.com/BlairGrowing/p/14877125.html求最大似然值的一般步骤:1.写出似然函数;2.对似然函数取对数,并整理;3.求导数 ;4.解似然方程
...
h5py库初学
简单入门用法,记录一下
简介h5py文件是存放两类对象的容器,数据集(dataset)和组(group):
dataset类似数组类的数据集合,和numpy的数组差不多
group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集)。
创建h5py文件import h5pyf=h5py.File("myh5py.hdf5","w") # w 写,r读
创建dataset数据集创建了一个只有20个整数的数据集,但是没有赋值所以为0
import h5pyf=h5py.File("myh5py.hdf5", "w") # w 写,r读# deset1是数据集的name,(20,)代表数据集的shape,i代表的是数据集的元素类型d1=f.create_dataset("dset1", (20,), 'i')for key in f.keys(): print(key) print(f[key].name) ...
sklearn包简介
只对该包做一个简单的介绍和使用方法的查找,具体可以查看官方文档,使用的时候查找即可
简介scikit-learnsklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训练模型的各个方面。在实战使用scikit-learn中可以极大的节省我们编写代码的时间以及减少我们的代码量,使我们有更多的精力去分析数据分布,调整模型和修改超参。不过sklearn主要应用是传统的机器学习,并且其在数据量较小的情况下非常适用。
概括sklearn拥有可以用于监督和无监督学习的方法,一般来说监督学习使用的更多。sklearn中的大部分函数可以归为估计器(Estimator)和 转化器(Transformer)两类。
估计器(Estimator)其实就是模型,它用于对数据的预测或回归。基本上估计器都会有以下几个方法:
fit(x,y):传入数据以及标签即可训练模型,训练的时间和参数设置,数据集大小以及数据本身的特点有关
score(x,y):用于对模型的正确率进行评分(范围0-1)。但由于对在不同的问题下,评判模型优劣的的标准不限于简单的正确率,可能还包括召回率或者是 ...
np.dot()、np.outer()、np.multiply()
这几天看吴恩达深度学习作业时候,遇到了np.dot()、np.outer()、np.multiply()、*几个函数,记录一下
np.dot1.如果处理的是一维数组,则得到的是两数组的內积(对应位置的元素相乘再相加)参数的顺序不会影响结果
import numpy as npx1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]result = np.dot(x1, x2)print(result)
2.如果是二维数组(矩阵)之间的运算,则得到的是矩阵积(等同于矩阵乘法)可以使用np.matmul 或者 a @ b 得到相同的答案参数位置的不同会改变结果注意:第一个矩阵的列和第二个矩阵的行的数字显得更才能计算
import numpy as npx1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0 ...