- 博客(90)
- 资源 (9)
- 收藏
- 关注
原创 手推BP算法及python实现
画图和编辑公式实在是太麻烦了,我就写在纸上吧一、BP推导一个简单的神经网络:正向传播:1.输入层---->隐含层:这里我们要把得到的值通过sigmoid激活一下:2.隐含层---->输出层:同理这样我们就得到了输出值out(o1)和out(o2),此时这两个输出值和我们预想的输出值肯定相差甚远(可以自己设定几个数试一试)那么我们就要进行反向传播来修正w以此来修正输...
2020-03-30 18:08:08 3692 6
原创 ManTra-Net论文理解
一、Abstract1、Mantra-Net是一个端到端的网络,无需进行预处理与后处理,可执行定位与检测,是一个全卷积神经网络。2、学习385种图像操作类型中学习出鲁棒的图像操作轨迹。3、设计一个Z函数捕捉局部异常,并通过时间轴进行结合(ConvLSTM)评估局部异常4、ManTra-Net可进行多篡改区域检测,不仅仅局限于单一的篡改。二、Introduction传统方法只关注与图像级而不关注于像素级,图像级就是一个 像素为中心取一个图像块,取图像块的特征作为样本进行训练。并且定位的过程
2020-09-21 21:15:08 2961
原创 unet简单实现
U-Net,主要是针对生物医学图片的分割model_partimport torchimport torch.nn as nnimport torch.nn.functional as Fclass DoubleConv(nn.Module): # Conv = > Batch_Norm = > ReLU = > Conv2d = > Batch_Norm = > ReLU def __init__(self, in_channels, out_
2020-09-13 21:00:31 1052
原创 Unsupervised Deep Image Fusion With Structure Tensor Representations论文笔记
一、Abstract1、题目基于结构张量表示的无监督深层图像融合(光/热成像融合、远焦/近焦融合,欠曝/过曝融合,RGB/NIR图像融合)2、现有问题缺乏用于监督学习的标记数据3、提出了一个deep image fusion network (DIF-Net)一个无监督的损失函数使用结构张量表示的多通道图像对比度,通过特征提取、特征融合和图像重建来融合图片。二、Introduction1、图像融合提取各自信道中的有利信息,从多幅图像中生成包含重要特征的融合图,最后综合成高质量的图像2、结
2020-09-05 14:11:04 1525 4
原创 数字图像处理第十章笔记
目录一、基础知识点、线和边缘检测1、背景知识2、孤立点检测3、线检测4、边缘模型5、基本边缘检测6、更先进的边缘检测技术7、边缘连接与边界检测一、基础知识分割将图像细分为构成它的子区域或物体。多数分割算法均基于灰度值的两个基本性质:不连续性与相似性。不连续性:以灰度突变为基础分割一副图像,比如图像边缘。相似的灰度:根据一组预定义的准则把一副图像分割为相似的区域。点、线和边缘检测我们感兴趣的三种图像特征是孤立点、线和边缘。一条线可视为一条边缘线段,该线两侧的背景灰度要么远亮于该线的像素灰度,要
2020-09-01 11:49:04 1213
原创 数字图像处理第十二章笔记
目录一、模式和模式类二、基于决策理论方法的识别1、匹配2、最佳统计分类器3、神将网络三、结构方法1、匹配形状数2、串匹配一、模式和模式类模式识别主要是两大领域:决策理论方法和结构方法决策理论方法处理的是使用定量描绘子会描述的各种模式,如长度、面积、纹理等。结构方法处理的是油定性描绘子来描述的各种模式。模式是描绘子的组合,使用特征来表示描绘子。模式类是具有某些共同属性的一族模式。类的可分程度很大程度上取决于所用描绘子的选择。二、基于决策理论方法的识别决策理论方法识别以使用决策(或判断)函数为
2020-08-28 13:46:49 979 3
原创 数字图像处理第十一章笔记
目录一、表示1、边界追踪2、链码3、使用最小周长多边形的多边形近似5、标记6、边界线段二、边界描绘子1、简单的描绘子2、形状数3、傅里叶描述子4、统计矩三、区域描绘子1、简单的描绘子2、拓扑描绘子3、纹理四、使用主成分进行描绘五、关系描绘子一、表示1、边界追踪a)找到图像左上角为1的点b0,c0表示b0的左侧,所以c0一定是一个背景,从c0开始顺时针找b0的八邻域,b1为遇到的第一个为1的点,此时c1为找到b1的上一个为0的点,存储b0,b1b)令b=b1,c=c1c)从c开始在进行顺时针寻找,找
2020-08-26 21:00:24 2226
原创 数字图像处理第九章笔记
目录一、腐蚀与膨胀1、腐蚀2、膨胀3、对偶性4、开操作与闭操作二、一些基本的形态学算法1、边界提取2、孔洞填充3、连通分量提取4、凸壳5、细化6、粗化7、骨架8、形态学重建三、灰度级形态学1、腐蚀和膨胀2、开运算和闭运算3、灰度级形态学算法一、腐蚀与膨胀1、腐蚀腐蚀可以去除图像的某些部分。2、膨胀膨胀可以连接裂缝。3、对偶性膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的4、开操作与闭操作开操作:B对A先腐蚀,再进行膨胀可以平滑物体轮廓,断开较窄的狭颈并消除较细的突出物。闭操作
2020-08-25 14:41:47 898
原创 数字图像处理第八章笔记
目录一、基础知识1、数据压缩2、冗余数据3、编码冗余4、空间冗余和时间冗余5、不相关信息6、图像信息的度量7、保真度准则8、图像压缩模型二、基本压缩方法1、哈夫曼编码2、Golomb编码3、算术编码4、LZW编码5、行程编码6、基于符号的编码7、比特平面编码8、块变换编码(有损压缩 )9、预测编码10、小波编码三、数字图像水印一、基础知识1、数据压缩减少表示给定信息量所需数据量的处理。2、冗余数据包含不相关或重复信息的数据。C叫做压缩率比如C=5,表示冗余信息:有用信息为5:1,压缩率为5
2020-08-22 18:59:56 1642
转载 数字图像处理第七章笔记
一、多分辨率分析的图像处理如果物体的尺寸较小或对比度较低,通常以较高的分辨率来研究;如果物体的尺寸较大或对比度较高,粗略的观察就已足够如果较大物体和较小物体同时存在时,以不同的分辨率来研究它们将更具优势,即多分辨率分析。1、图像金字塔图像金字塔是一系列以金字塔形状排列的,分辨率逐步降低的图像集合,底部是一个高分辨率图像,顶部是低分辨率图像。金字塔低分辨率级别用于分析较大的结构或图像的整体内容;高分辨率图像适合于分析单个物体的特性。预测残差:一幅图像与该图像的一个预测版本间的差,预测残差可更有
2020-08-20 15:25:17 1422
原创 数字图像处理第六章笔记
一、彩色模型GRB:绿、红、蓝CMY:青、粉红、黄CMYB:青、粉红、黄、黑HSI:色调、饱和度、亮度色调与饱和度称为色度,颜色可以用色度和亮度来表示1、GRB彩色模型图中RGB原色值位于3个角,二次色青色、深红色和黄色位于另外3顶点上,黑色位于原点处,白色位于离原点最远的角上。(颜色都归一化)每幅红、绿、蓝图像都是一幅8比特图像,全彩色表示24比特的RGB图像。但实际使用的只有216种稳定色。(000000~FFFFFF)2、CMY和CMYK彩色模型青色、深红色,黄色是光的二次色
2020-08-19 20:40:10 1392
原创 数字图像处理第五章笔记
目录一、图像复原模型及噪声模型1、复原过程模型2、噪声模型二、空间滤波1、均值滤波器2、统计排序滤波器3、自适应滤波器三、用频率域滤波消除周期噪声(去噪复原)1、带阻滤波器2、 带通滤波器3、陷波滤波器4、最佳陷波滤波四、退化1、加性2、均匀性3、空间不变系统4、图像观察估计5、试验估计6、建模估计五、逆滤波六、维纳滤波七、几何均值滤波一、图像复原模型及噪声模型1、复原过程模型退化(复原)过程被建模为一个退化函数和一个加性噪音项退化后的图像g(x,y) = h(x,y)★f(x,y) + η(x,
2020-08-18 19:26:11 1084
原创 数字图像处理第四章笔记
本章目录一、傅里叶级数基本概念1、概念2、冲激及取样特性3、连续变量函数的傅里叶变换4、卷积二、取样和取样函数的傅里叶变换1、取样2、低通滤波3、由取样后的数据重建函数三、傅里叶变换对1、一维连续函数傅里叶变换对2、一维离散傅里叶变换对(DFT)3、二维连续傅里叶变换对4、二维离散傅里叶变换对四、二维离散傅里叶变换的性质1、周期性2、傅里叶谱和相角3、对称性4、均值这一章实在是太难了,好多没看懂(>人<;)一、傅里叶级数基本概念1、概念任何周期函数都可以表示为不同频率的正弦和或余弦之和的形式,每个正
2020-08-17 15:23:52 982
原创 数字图像处理第三章笔记
一、灰度级变换函数1、反转变换:灰度级范围[0,L-1]2、对数变换:扩展图像中暗像素值,同时压缩更高灰度级的值(可以压缩像素值变化较大的图像的动态范围)3、伽马变换(幂律变换):进行伽马矫正;增强对比度,增加细节,伽马值小到一定程度,会产生冲淡;要处理冲淡,可以使用伽马值大于1来处理,大到一定程度,会丢失细节。4、分段线性变换:对比度拉伸,灰度级分层,比特平面分层对比度拉伸:b图,r1=r2,s1=0,s2=L-1,产生一张二值图像c图,(r1,s1)=(rmin,0),(r2,s2)=
2020-08-15 18:48:29 632
原创 数字图像处理第二章笔记
一、数字图像表示1、f(x,y)就是f(灰度)值:图片的像素都划分为0-255之间的数from PIL import Imageimport matplotlib.pyplot as pltplt.figure()im = Image.open("a.jpg")plt.subplot(1,2,1)# # 二值图im_gray = im.convert('1')plt.imshow(im_gray)# # 灰度图plt.subplot(1,2,2)im_two = im.conver
2020-08-14 16:16:36 607
原创 对MobileNet V1-V3的理解
可分离卷积分为:空间可分离卷积与深度可分离卷积MobileNet用的是深度可分离卷积深度可分离卷积:深度可分离卷积=深度卷积(depthwise convolution)+逐点卷积(pointwise convolution)一、MobileNet V1详解1.设输入特征图是M维,卷积核是Dk * Dk,输出特征图是N维,大小是Dg * Dg普通卷积:计算量:Dk * Dk * M * N * Dg * Dg计算量:5 * 5 * 3 * 256 * 8 * 8 ≈ 123W深度卷.
2020-08-12 16:07:30 5349
原创 对特征金字塔FPN的理解
论文地址:https://arxiv.org/abs/1612.03144一、图像金字塔顾名思义,就是对源图像的尺寸进行放大或者缩小变换,通过向下采样,金字塔的底部是高分辨率,而顶部是低分辨率,层级越高,则图像越小,分辨率越低。主要解决图像分析尺度问题的,构造特征时:可以适应尺度变化,增加特征维度,构造高维特征。第k层通过平滑,下采样获得第k+1层。一张图片通过下采样上采样可以获得很多张图片,对于人眼而言,一张二维图片好像从近到远,增加了一个维度,可以提供更多的信息。二、浅层特征和深层特征复杂
2020-08-11 15:26:05 2515
原创 RPN与ROI Pooling
Faster R-CNN网络结构一、RPN第一条线路:在原图尺度上,设置了密密麻麻的候选Anchor。然后用cnn去判断哪些Anchor是里面有目标的positive anchor,哪些是没目标的negative anchor。feature maps每一个点都有9个anchors,同时每个anchors又有可能是positive和negative,所有这些信息都保存WxHx(9*2)大小的矩阵。通过softmax获得positive anchors,相当于初步提取了检测目标候选区域box(一般认
2020-08-10 16:01:57 1531
原创 读取labelimg生成的xml标签
win10 在anaconda下输入pip install labelimg,可能下的比较慢,翻墙下载宿舍很快输入labelimg打开这就可以对自己的数据集打标签了,生成xml类型标签读取文件中所以xml类型import xml.etree.ElementTree as ETimport os sorce = 'C:/Users/msi/Desktop/a/label' # 文件夹路径dir = os.listdir(sorce)for i in range(len(dir
2020-08-08 14:08:27 5086 3
原创 pytorch SSD代码解读(2)
一、预测过程letterbox_image为了防止失帧,不进行简单的resize,先放大图片,进行三次样条插值,创建一个300*300的灰色图片,把放大后的图片粘贴到灰色图片上,相当于在边缘加上灰条。def letterbox_image(image, size): iw, ih = image.size w, h = size scale = min(w/iw, h/ih) nw = int(iw*scale) # nw,nh一定有一个是300 nh = in
2020-08-07 16:34:33 1160
原创 A New Approach Towards General Purpose Image Manipulation Detection论文笔记
1、解决的问题:图像操作通常会留下图像编辑类型所特有的痕迹,分析不同图像操作的痕迹,图像取证,检测图像篡改。2、现有检测方法:调整大小和重采样、中值滤波、对比度增强、多JPEG压缩等,但是这些检测的都是单个目标操作,还要融合多个取证检测的结果,并且为不同的图像操作创建取证检测器是一个困难和耗时的过程。3、constrained CNN普通的cnn网络倾向于学习图像的内容,而不适合学习与内容无关的篡改痕迹,所以提出了一种constrained CNN的方法,让其来学习低级的操作特征。3.1、做法:
2020-08-07 14:07:29 1100
原创 pytorch SSD代码解读(1)
SSD总共11个block,网络结构如下import torchimport torch.nn as nndef VGG(): vgg = [] # conv1 # 300,300,3 -> 150,150,64 vgg.append(nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1)) vgg.append(nn.ReLU(inplace=Tr
2020-08-04 15:49:06 1643 4
原创 对SSD理解
SSD是把一张图片先变到360 * 360,为了防止失真,并不是直接resize,而是在边缘加上灰,再划分成六种不同的网格,38 * 38,19 * 19,10 * 10,5 * 5和1 * 1,其中38 * 38,19 * 19用于检测小物体,其余用来检测大物体。...
2020-07-31 20:23:30 257
原创 对空洞卷积的理解
一、空洞卷积:不用池化层,因为池化在提供更大的感受野的同时,分辨率降低,会导致空间信息丢失,数据丢失。空间卷积可以避免使用down-sampling,并且在相同的计算量的前提下,提供更大的感受野。设置不同的dilation rate,感受野就会不同,就会有多尺度的信息。在原始特征f0上进行扩张率为1(普通的卷积)的空洞卷积生成f1,f1的一点相对f0感受野为33如图,在f1上做2-dilated的3 * 3卷积,生成的f2上的一点相对于f0感受野为7 * 7;若仍用普通3 * 3的卷积,则生成的
2020-07-30 14:05:37 2682
原创 Inception V1理解及pytorch实现
一、Inception V1用全局平均池化层代替了最后的全连接层全连接层几乎占据了中大部分的参数量,会引起过拟合,去除全连接层之后模型可以训练的更快且避免了过拟合的情况。在Inception v1中1*1卷积用于降维,减少参数量和feature map维度。输入28 * 28 * 192的图像,如果直接通过3 * 3 * 256的滤波器(padding=1,stride=1),输出数据是28 * 28 * 256,参数量是192 * 3 * 3 * 256=44w;如果我们在3*3的滤波器前插入
2020-07-29 17:52:22 2529 2
原创 IOU与NMS实现代码
import numpy as npimport cv2# A[0-3]分别代表左上角横坐标,左上角纵坐标,右下角横坐标,右下角纵坐标def IOU(A, B): #交集框的左上角,右下角 xA = max(A[0], B[0]) yA = max(A[1], B[1]) xB = min(A[2], B[2]) yB = min(A[3], B[3]) areaA = (A[2] - A[0] + 1) * (A[3] - A[1] + 1) # 1
2020-07-28 14:17:51 383
原创 pytorch实现VGG16网络
import torchimport torch.nn as nnclass VGG16(nn.Module): def __init__(self, nums): super(VGG16, self).__init__() self.nums = nums vgg = [] # 第一个卷积部分 # 112, 112, 64 vgg.append(nn.Conv2d(in_channels=3,.
2020-07-27 17:33:00 7015 12
原创 Learning Rich Features for Image Manipulation Detection论文笔记
图像篡改技术:拼接、复制、去除一、解决的问题:视觉篡改(例如,被篡改边缘附近的篡改),而且可以捕获局部噪声特征中的不一致性。二、概述从RGB图像输入中提取特征来发现篡改伪影,如强烈的对比度差、不自然的篡改边界等利用从富含隐写分析的模型滤波器(SRM)层提取的噪声特征来发现真实和篡改区域之间的噪声不一致。双线性池化层融合来自两个流的特征三、网络结构RGB stream input:RGB 流输入;对可见的篡改痕迹(例如:物体边界经常出现的高对比度)进行建模,并将边界框(bounding bo
2020-07-24 12:20:31 1195 3
转载 【目标检测】基础知识:IoU、NMS、Bounding box regression
https://zhuanlan.zhihu.com/p/60794316
2020-07-23 12:26:27 239
原创 吴恩达目标检测
目标定位特征点检测滑动窗口速度太慢,受限于窗口大小与滑动步长全连接层用卷积层来代替 定位不准确bounding box图像分成了33个小格,每个小格有八个向量,所以我们目标输出33*8的矩阵(yolo)交并比非极大值抑制选取概率最大的边框,调暗概率低的边框锚框...
2020-07-22 19:02:01 192
原创 pandas基础用法总结(2)
1.处理丢失数据frame.dropna(axis=0, how=‘any’)axis=0代表处理行,axis=1代表处理列how='any’表示有NaN就处理,how='all’表示一行都是NaN才处理frame.fillna(value=9)把表中NaN的部分都换成0frame.isnull()返回False表示数据没有丢失,返回Ture表示有数据是NaN若表格很大,不好观察是否有True,可以用np.any(frame.isnull())==True,返回Ture表示有数据是NaNi
2020-07-21 16:08:04 627
原创 pandas基础用法总结(1)
1.pd.Series(a,index=none)a是一维数组,series把数组中的元素默认由0~n-1排列,index是长度为n的一维数组,可以设置排列的索引号import numpy as npimport pandas as pda = np.random.random(7)b = pd.Series(a)c = pd.Series(a, index=np.arange(10,17))print(b)print(c)2.pd.date_range时间化序列pandas.d
2020-07-20 18:34:25 334
原创 NumPy基础用法总结
1.把n维变成1维a.flatten()import numpy as npa = np.arange(1,28).reshape(3,3,3)for i in a.flat: print(i,',',end='')print(a.flatten())2.两个矩阵合并np.vstack((a,b))上下合并import numpy as npa = np.arange(1,10)b = np.arange(10,19)c = np.vstack((a, b))prin
2020-07-20 12:07:45 251
原创 torchvision.transforms模块
torchvision.transforms是pytorch中的图像预处理包,包含了很多种对图像数据进行变换的函数,我们可以通过其中的剪裁翻转等进行图像增强。1.transforms.ToTensor()将”PIL图像“或 numpy.ndarray“转换为张量。 将PIL图像或numpy.ndarray(H x W x C) [0,255]的形状转换到torch.FloatTensor(C × H × W)[0.0,1.0]的范围内。from PIL import Imagefrom tor
2020-07-17 17:44:17 745
原创 pytorch中tensorboard的add_scalar与add_image
writer.add_scalar(tag, scalar_value, global_step=None, ):将我们所需要的数据保存在文件里面供可视化使用tag(字符串):保存图的名称scalar_value(浮点型或字符串):y轴数据global_step(int):x轴数据from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs")x = range(100)for i in x:
2020-07-16 11:03:13 14431 1
原创 pytorch快速搭建与一般搭建两层神经网络
import torchimport matplotlib.pyplot as pltfrom torch.autograd import Variablex = Variable(torch.randn(4, 10))y = Variable(torch.randn(4, 2))net = torch.nn.Sequential( torch.nn.Linear(10, 100), torch.nn.ReLU(), torch.nn.Linear(100, 100),
2020-07-15 12:18:47 318
原创 对Batch Normalization理解
论文地址:https://arxiv.org/pdf/1502.03167.pdf深层神经网络有一个前提是IID即独立同分布假设,而每一层输入的分布都会随着前一层参数的变化而变化,这就降低了训练的速度,如图所示当底层网络中参数发生微弱变化时,由于每一层中的线性变换与非线性激活映射,这些微弱变化随着网络层数的加深而被放大(类似蝴蝶效应);另一方面,参数的变化导致每一层的输入分布会发生改变,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难。上述这一现象叫做Internal Covar
2020-07-10 12:10:11 340
原创 深度学习优化器(pytorch实现)
import torchimport torch.nn.functional as Fimport matplotlib.pyplot as pltimport torch.utils.data as Datafrom torch.autograd import VariableLR = 0.01BATCH_SIZE = 32EPOCH = 12x = torch.unsqueeze(torch.linspace(-1, 1, 1000), dim=1)y = x.pow(2) + .
2020-07-09 12:51:59 531
原创 CS231n——KNN python实现
一、代码import numpy as npfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom collections import Counterimport matplotlib.pyplot as pltiris = datasets.load_iris()X ...
2020-04-26 15:20:13 331
cifar10.txt
2020-03-31
stargan在Fer2013数据集下的日志
2020-03-25
stargan在celeba数据集下的可视化tensorboard
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人