
学习记录
群星闪耀
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Adam (L2 regularization) 和 AdamW(weight decay)的区别
原创 2021-12-02 11:33:28 · 7385 阅读 · 2 评论 -
面向对象编程:使用@property
python面向对象编程:使用__slots__和@property当我们创建好class(类),我们可以给这个类附加属性和方法。属性和方法分别对应函数式编程里面的参数和低阶函数。尝试给实例绑定一个属性:class Student(object): # 创建类 pass >>> s = Student() # 实例化类>>> s.name = 'Michael' # 动态给实例绑定一个属性>>> print(s.n原创 2021-10-12 20:11:56 · 314 阅读 · 0 评论 -
MSSIM和L1loss的混合损失函数用于图像恢复
背景在图像恢复的深度神经网络当中。大部分的损失函数一般是L1 norm(MAE),L2 norm(MSE)。或者是SSIM,PSNR。其中SSIM有了评价函数的变体MS_SSIM,具体的实现先参考文献[2], 代码部分再去参考[1]。英伟达和MIT联合发表了一篇Loss Functions for Image Restoration with Neural Networks, 这种损失函数将MS_SIM和L1损失函数结合在一起。下面写一些具体如何实现实现过程MS_SSIM的实现过程已经在[1]中原创 2021-08-02 17:23:58 · 11332 阅读 · 13 评论 -
python导入类输入参数遇到的bug
项目场景:作者写好一个class之后, 想导入到另外一个文件中使用,from filename import classname然后直接使用classname(para1,para2)问题描述:发现报错,debug发现是类里面的一个参数变了, 作者就一直找为什么会改变. 原因分析:因为作者用的class定义的时候一般有两个部分class Classname(Object): def __init__(self, para1=1, para2=2, para...):原创 2021-08-01 17:29:18 · 300 阅读 · 0 评论 -
HDF5文件的介绍及python将大量图片文件存储为hdf5文件方便训练
HDF5文件介绍HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF 小组维护下继续发展。当前流行的版本是 HDF5。HDF5 拥有一系列的优异特性,使其特别适合进行大量科学数据的存储和操作,如它支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等,详见其官方介绍:What is HDF5?。H5文原创 2021-07-30 14:13:35 · 10934 阅读 · 6 评论 -
Git 上传文件、文件夹或项目到 Github
目录准备工作配置Git、SSH绑定用户配置 SSH上传文件上传文件夹上传项目如何上传更新准备工作配置Git、SSH下载、安装 Git绑定用户$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"配置 SSH1、在用户主目录(C:\Users\Admin\)下,看看有没有.ssh目录,如果有,再看看这个目录下原创 2021-06-24 19:50:36 · 453 阅读 · 1 评论 -
python中拼接路径os.path.join的坑
python中os.path.join的用法如下:import osos.path.join('path1', 'path2', 'pathn')可以将多个路径进行拼接,但是需要注意一点是:第一个绝对路径之前的参数将被忽略也就是说,如果path2的第一个字符是‘/’,那么返回的拼接路径中path1并没有包含。————————————————版权声明:本文为优快云博主「Odegaard」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声...原创 2021-05-27 20:27:47 · 3553 阅读 · 2 评论 -
Pytorch中Tensor与各种图像格式的相互转换、读取和展示
用pytorch做训练时,我们经常会将图片数据转换为tensor格式,方便加速训练。但是有很多时候我们会需要展示训练的结果。所以难免会涉及到将Tensor数据转换回方便展示的格式。原创 2021-05-27 20:19:03 · 5644 阅读 · 1 评论 -
导入和导出requirement
Python requirement 导入导出包 - nmydt - 博客园 (cnblogs.com)在使用Python的时候,需要把安装的Package通过requirements.txt导出来,一个命令便可部署新环境。requirements.txt,是用于记录所有依赖包及其精确的版本号。自动生成requirement.txt命令:pip freeze > requirements.txt执行成功后,会在当前目录下自动生成requirement.txt文件。一把这个目录就是用户转载 2021-05-26 21:15:06 · 1816 阅读 · 0 评论 -
debug: 导入matplotlib.pyplot时出现错误:module ‘cairo‘ has no attribute ‘version_info‘
首先安装了一下cairopip install cairo发现还是没用然后安装pycairo,pip install pycairo安装之后就好了原创 2021-05-25 21:16:48 · 1329 阅读 · 0 评论 -
python加载matlab数据,及matlab中struct的创建和保存
在应用深度学习的模型中,有的模型会加载matlab的.mat格式。如果要修改模型,则需要python加载.mat文件。同时,需要将自己的数据保存为.mat文件。我的代码.mat文件是一个struct的结构。现在我们一起来看一下如何加载.mat文件1. python读取.mat文件的struct结构import scipy.io as sioim_gt = sio.loadmat("路径名字\文件名字" + ".mat")['im_gt']im_b = sio.loadmat("路径名字\原创 2021-05-25 20:36:46 · 1731 阅读 · 0 评论 -
Image.open读取PNG文件变成灰度图片
项目场景:用Image.open读取PNG图片,做深度学习的训练,:问题描述:原来的是读取JPG图片,本来的想法是直接应用模型就可以了,发现Image.open会将PNG图片降维成灰度图像,导致模型出错:解决方案先用cv2.imread导入读取,再转换为PIL的格式。下面的代码论证上述的问题过程import cv2import matplotlib.pyplot as pltfrom PIL import Imageimport numpy as np%matplotlib inlin原创 2021-05-20 19:41:22 · 5696 阅读 · 0 评论 -
二进制和电路图
本篇笔记理解需要的内容:二进制的基本知识,如何用0,1表示二进制的正负,二进制的加减法等等。逻辑运算与或非;了解电路中的串联,并联,电阻等概念。1.晶体管如何控制逻辑运算:and:类似于电路中的串联,用两个晶体管串联在一起,可以实现“与”的功能。or:类似于电路中的并联,这样其中一个通路,就可以实现通路。即和‘或’的概念一致。not: 类似短路和电阻的设计,图中的表就像开关,该支路是没有电阻的,都是输出是在有resistor的一端。如果开关闭合,即输入是1,则电阻端短路,不通过‘电.原创 2020-11-08 11:12:17 · 4824 阅读 · 0 评论 -
Pycharm如何打开terminal
Pycharm的下方工具栏中有两个窗口:Python Console和Terminal(如下图)其中,Python Console叫做Python控制台,即Python交互模式;Terminal叫做终端,即命令行模式。Python交互模式主要有两种:CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Python交互模式主要是为了调试Python代码用的。命..原创 2020-10-06 16:50:55 · 18251 阅读 · 0 评论 -
Pytorch的自动求导:AUTOGRAD: AUTOMATIC DIFFERENTIATION
torch.Tensoris the central class of the package. If you set its attribute.requires_gradasTrue, it starts to track all operations on it. When you finish your computation you can call.backward()and have all the gradients computed automatically. The gra...原创 2020-05-18 15:35:31 · 272 阅读 · 0 评论 -
python 类中的方法互相调用为什么是self.function()形式
因为,不加self, 你可能会执行类外的同名函数eatdef eat(thing): print(thing,'--->执行了类外函数') class Dog: def eat(self, thing): print('执行了类内函数', thing) def run(self): eat(2) Dog().r...转载 2020-02-15 21:03:53 · 1128 阅读 · 0 评论 -
OpenCV之Feature Matching + Homography to find Objects
import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltMIN_MATCH_COUNT = 10img1 = cv.imread('box.png',0) # queryImageimg2 = cv.imread('box_in_scene.png',0) # trainImage#...原创 2020-02-15 20:49:49 · 423 阅读 · 1 评论 -
OpenCV之Feature Matching
Brute-Force matcherBFmatcher(Brute-Force Matching)暴力匹配,应用BFMatcher.knnMatch( )函数来进行核心的匹配,knnMatch(k-nearest neighbor classification)k近邻分类算法。kNN算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。该算法涉及3个主要...原创 2020-02-15 20:30:11 · 1450 阅读 · 0 评论 -
解决OpenCV中SIFT,SURF不能使用,修改成ORB检测特征
我们知道因为一些专利的原因,SIFT和SURF不能再OpenCV后续的版本中继续使用。所以我们可以用OpenCV自带的其他检测器:Oriented FAST and Rotated BRIEF。引用官网的话:This algorithm was brought up by Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary R. Bradsk...原创 2020-02-15 16:02:47 · 1277 阅读 · 1 评论 -
Introduction to SIFT (Scale-Invariant Feature Transform)
问题:前面学习的Harris算法检测corners是旋转不变性的。就是说即使这些corners旋转了也可以检测出来。但是假如有的角标放大了之后,在图片中看起来就会变得平滑。比如下面的图片:以前的方法就没用了。为了解决这个问题,所以有的学者就发明了尺度不变的检测方法叫做(Scale-Invariant Feature Transform)SIFT。SIFT算法实现物体识别主要有4...原创 2020-02-14 22:05:34 · 207 阅读 · 0 评论 -
Opencv:Shi-Tomasi 角点检测 & 适合于跟踪的图像特征(Shi-Tomasi Corner Detector & Good Features to Track)
原理:In last chapter, we saw Harris Corner Detector. Later in 1994, J. Shi and C. Tomasi made a small modification(前一个方法的小改进) to it in their paperGood Features to Trackwhich shows better results com...原创 2020-02-14 21:43:00 · 357 阅读 · 0 评论 -
OpenCV特征检测
Harris Corner Detectiondst=cv.cornerHarris(src, blockSize, ksize, k)img- Input image, it should be grayscale and float32 type.应该输入灰度图像 blockSize- It is the size of neighbourhood considered f...原创 2020-02-14 21:14:25 · 295 阅读 · 0 评论 -
霍夫变换详解
来源于:https://www.cnblogs.com/php-rearch/p/6760683.html我觉得OpenCV里面介绍霍夫变换那一章讲得很有启发性。如果所有的图形都可以用数学表示出来,那么所有的图形都可以用霍夫变换检测。下面是我看到的一篇非常好的霍夫变换应用于检测直线的文章,存在这里。前言今天群里有人问到一个图像的问题,但本质上是一个基本最小二乘问题,涉及到霍夫变换(H...转载 2020-02-09 15:35:18 · 932 阅读 · 0 评论 -
opencv-轮廓检测详解
轮廓检测是基于图像边缘提取的基础,寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓的发现相关APIfindContours 发现轮廓drawContours绘制轮廓操作步骤1.转换图像为二值化图像:threshold方法或者canny边缘提取获取的都是二值化图像2.通过二值化图像寻找轮廓:findContours3.描绘轮廓:drawContours相...原创 2020-02-04 14:50:55 · 755 阅读 · 0 评论 -
Canny算子的非极大值抑制Non-maximum Suppression
Non-maximum SuppressionAfter getting gradient magnitude and direction, a full scan of image is done to remove any unwanted pixels which may not constitute the edge. For this, at every pixel, pixel i...原创 2020-02-02 17:31:41 · 1081 阅读 · 0 评论 -
如何让构造卷积的核函数kernel
Structuring ElementWe manually created a structuring elements in the previous examples with help of Numpy. It is rectangular shape. But in some cases, you may need elliptical/circular shaped kernels...原创 2020-02-02 17:22:28 · 1211 阅读 · 0 评论 -
学习OpenCV图像处理最好的路径:官方材料搭配b站视频
推荐可以现在官方网址上学习。有一个一个的步骤叫你深入学习opencv.https://docs.opencv.org/4.1.2/d2/d96/tutorial_py_table_of_contents_imgproc.html里面要求你会用numpy和matplotlib,我一开始也是没接触过这两个,但是学习过程中用到的很多函数可以去百度,谷歌都搜得到用法。以及如果想学习其他的比如...原创 2020-02-02 17:11:05 · 390 阅读 · 0 评论 -
转载收藏:python图像处理:绘制灰度和彩色直方图
https://blog.youkuaiyun.com/Hanging_Gardens/article/details/79016183原创 2020-02-02 16:48:35 · 374 阅读 · 0 评论 -
双边滤波原理详解:资料
https://blog.youkuaiyun.com/u011961856/article/details/77606180http://blog.youkuaiyun.com/jfuck/article/details/8932978http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.htm...原创 2020-02-02 16:35:59 · 405 阅读 · 0 评论 -
Morphological形态学处理
膨胀(dilate):腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点;腐蚀(erode):膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。开运算(opening Operation)开运算其实就是先腐蚀再膨胀,可以消除图像上细小的噪声,并平滑物体边界。-----------闭运算(closing Operation...原创 2020-02-02 16:16:23 · 1626 阅读 · 2 评论 -
为什么高斯模糊的卷积核只能是奇数?eg. 3*3,5*5
通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。"模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)。它将正态分布(又名"高斯分布")用于图像处理。本文介绍"高斯模糊"的算法,你会看到这是一个非常简单易懂的算法。本质上,它是一种数据平滑技术(data smoothing),适用于多个场合,图像处理恰好提供了一个直观的应用实例。...转载 2020-02-01 20:58:44 · 3173 阅读 · 0 评论 -
skimage的介绍和其他图像处理工具的比较
skimage的简介skimage即是Scikit-Image。基于python脚本语言开发的数字图片处理包,比如PIL,Pillow, opencv, scikit-image等。 PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。scikit-image是基于scipy的一款图像处理包,它将图片...原创 2020-01-30 21:08:03 · 496 阅读 · 0 评论 -
matplotlib中subplot不均匀的绘图
如果希望展示的小图的大小不相同, 应该怎么做呢? 以上面的4个小图为例, 如果把第1个小图放到第一行, 而剩下的3个小图都放到第二行.使用plt.subplot(2,1,1)将整个图像窗口分为2行1列, 当前位置为1. 使用plt.plot([0,1],[0,1])在第1个位置创建一个小图.plt.subplot(2,1,1)使用plt.subplot(2,3,4)将整个图像窗口...原创 2020-01-30 21:06:13 · 3155 阅读 · 0 评论 -
python中如何找到每个颜色的HSV准确值?
How to find HSV values to track?This is a common question found instackoverflow.com. It is very simple and you can use the same function,cv.cvtColor(). Instead of passing an image, you just pass t...原创 2020-01-27 21:46:55 · 1565 阅读 · 0 评论 -
关于为什么要用 if cv2.waitKey(1) & 0xFF 中0xFF的解释
It is also important to note that ord('q') can return different numbers if you have NumLock activated (maybe it is also happening with other keys). For example, when pressing c, the code:key = cv2....转载 2020-01-27 21:29:21 · 1799 阅读 · 0 评论 -
python timeit学习笔记
介绍timeit是python自带的包,用来测试代码的执行时间。使用方式import timeit相关方法 timeit(stmt='pass', setup='pass', timer=<defaulttimer>, number=1000000) 返回: 返回执行stmt这段代码number遍所用的时间,单位为秒,float型 stmt:要...转载 2020-01-27 20:57:57 · 180 阅读 · 0 评论 -
cv.waitkey()参数详解
在显示图像时,经常使用cv.Waitkey()来进行交互。参考别人的代码,每个人在里面使用的数字都不一样。查找资料后得到了解答,所以做一个记录。1.官网解释def waitKey(delay=None): # real signature unknown; restored from __doc__"""waitKey([, delay]) -> retval. @bri...原创 2020-01-10 11:03:06 · 13150 阅读 · 1 评论 -
Numpy:对Axis的理解
Axis就是数组层级 设axis=i,则Numpy沿着第i个下标变化的方向进行操作 Axis的应用Axis就是数组层级要想理解axis,首先我们先要弄清楚“Numpy中数组的维数”和"线性代数中矩阵的维数"这两个概念以及它们之间的关系。在数学或者物理的概念中,dimensions被认为是在空间中表示一个点所需要的最少坐标个数,但是在Numpy中,dimensions指代的是数组的维...转载 2019-11-08 17:23:46 · 354 阅读 · 0 评论 -
如何根据'[]'判断数据的维度
>>> import numpy as np>>> data = np.random.randint(0, 5, [4,3,2,3])>>> dataarray([[[[4, 1, 0], [4, 3, 0]], [[1, 2, 4], [2, 2, 3]], [[4,...原创 2019-11-08 17:20:47 · 1434 阅读 · 0 评论 -
大津二值化算法(Ostu二值化算法)及其改进算法
1.Ostu算法原理使用大津算法来二值化图像!大津算法,也被称作最大类间方差法,是一种可以自动确定二值化中阈值的算法,从类内方差和类间方差的比值计算得来:小于阈值 t 的类记作 0,大于阈值 t 的类记作 1; w0 和 w1 是被阈值 t 分开的两个类中的像素数占总像素数的比率(满足 w0+w1=1); S0^2, S1^2 是这两个类中像素值的方差; M0, M1 是这两个类的像...原创 2019-11-07 13:56:14 · 5416 阅读 · 0 评论