opencv小工具
hsv颜色空间
HSV色彩空间从心理学和视觉的角度出发,提出人眼的色彩知觉主要包含三要素:
H:色调(Hue,也称为色相)
S:饱和度(Saturation)
V:亮度(Value)
色调
在HSV色彩空间中,色调H的取值范围是[0,360]。8位图像内每个像素点所能表示的灰度级有28=256个,所以在8位图像内表示HSV图像时,要把色调的角度值映射到[0,255]范围内。在OpenCV中,可以直接把色调的角度值除以2,得到[0,180]之间的值,以适应8位二进制(256个灰度级)的存储和表示范围。
在HSV空间中,色调值为0表示红色,色调值为300表示品红色。
每个色调值对应一个指定的色彩,而与饱和度和亮度无关。在OpenCV中,将色调值除以2之后,会得到如下所示的色调值与对应的颜色。
确定值范围后,就可以直接在图像的H通道内查找对应的值,从而找到特定的颜色。例如,在HSV图像中,H通道内值为120的像素点对应蓝色。查找H通道内值为120的像素点,找到的就是蓝色像素点。在上述基础上,通过分析各种不同对象对应的HSV值,便可以查找不同的对象。
饱和度
进行色彩空间转换后, ...
GauGAN代码解读
GauGAN简介
自从英伟达提出了GauGAN,各大平台发表的论文解析铺天盖地,估计感兴趣的朋友也已经了解过了。
该模型可以将一张语义图(分割里的semantic mask)生成相应的一张真实图,下图的第一行是输入,不同的颜色代表不同的语义类别,第二行到第三行是生成的真实图像,其中每一行对应一种风格,每行最左边的图例为风格样式。
作者假设,如果语义图输入单个类别,那么一整张图都是同一个数,在经过InstanceNorm之后会输出0(按说应该是个固定的bias),语义信息完全丢失。
因此作者提出了**SPADE(SPatially-Adaptive (DE)normalization)**方法,通过SPADE使用语义图来调整normalization输出的结果,使其更好的具有语义信息,并将语义信息贯穿整个网络。并且其方法可以应对各种使用语义图的生成任务。
那么我们今天就来解读GanGAN代码,并使用相关数据集进行实验。
代码解读
环境配置
将SPADE代码克隆至本地,考虑到一些地区的网络可能不太好,提供一个加速通道:
1git clone https://github.com.c ...
PCA原理与numpy实现
PCA基本原理
数据降维
当数据维度或特征变量的数量过大时,极有可能造成维数灾难,导致计算成本上升。而在实际应用中提取出的有用信息并不需要那么高的维度。
因此本文将介绍一种极其常见的降维方法:主成分分析(Principal Component Analysis, PCA)。
主成分分析
在主成分分析中,数据从原来的坐标系转换到新的坐标系中,尽可能减少信息冗余,新坐标系的选择是由数据本身决定的。
通常来说,第一个新坐标轴选择的是原始数据中方差最大的方向,对应的特征向量作为一个主成分。第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向,对应的特征向量作为另一个主成分。该过程一直重复,重复次数为原始数据中特征的数目。
注意,得到的不同轴之间是不相关的(即协方差为0)。此时新空间的维度小于原来的空间,所以把数据投影到新的空间后,尽可能地保留了原始数据集的信息,又大大降低数据的复杂度。
正如下面这张图,把二维数据降维到了一维空间中的一条线上,此时方差最大。
那么,这些主成分应该如何求出呢?一个矩阵的主成分是它协方差矩阵的特征向量,特征值的大小则能表明该成分的重要性,因此关键还是协 ...
递归深度过大引发的问题
在dfs的时候碰到了两个问题。
首先是递归的次数过多导致报错:
1RuntimeError: maximum recursion depth exceeded。
python默认的递归深度是有限的,大概900多的样子,所以当递归深度超过这个值的时候,就会引发这样的异常。
解决的方法是手工设置递归调用深度,方式为:
12import syssys.setrecursionlimit(1000000) #例如这里设置为一百万
第二个引发的问题,是可能内存不足导致栈溢出的报错:
1Segmentation fault (core dumped)。
而且它没有其他任何提示,终端上只会出现这一行报错。网上大部分的方法都是更改stack的限制:
12ulimit -aulimit -S -s unlimited
因为我很清楚是内存不足的问题哈,所以就直接这么解决了。
有的博主好像是因为import包时,顺序出现了问题,需要一个个排查。
Python实现打印日志到文件类Logging
知识记录:Logging库使用方法简单来说就是提供了一个打印日志的载体(logger),而handler就是这个工具中的模块,具体打印日志是handler决定的(输出地点,格式等等),执行logger相当于执行里头所有的handler(互不干扰)。
功能:在文件当前存储目录下创建Logs文件夹,根据时间(精确到小时)生成日志文件
使用方法:在项目目录创建py文件,将代码copy过去,然后在项目中如果有需要打印日志的地方直接调用对应等级的方法就行。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455import loggingimport osimport time class Log: def __init__(self): self.logger = logging.getLogger() #创建logger self.logger.setLevel(logging.INFO) #日志root等级 ...
GauGAN网络结构与代码解析
闲了再记录
参考博客
https://zhuanlan.zhihu.com/p/75406772
https://blog.csdn.net/u014380165/article/details/100110065
https://zhuanlan.zhihu.com/p/71623130
https://blog.csdn.net/iLOVEJohnny/article/details/89367456
https://blog.csdn.net/KongCDY/article/details/100145526
https://zhuanlan.zhihu.com/p/151358554
阅读记录《最好的告别》
现实中我们要面对的是疾病、衰老以及死亡。如果你去长辈的家里找找,或者翻翻他们的朋友圈,肯定会找到这样一类书或者文章,里面充满了玄幻风格的养生秘诀,告诉你怎么样学会长寿,或者给他们打鸡血,跟衰老和病魔对抗到底。
这往往让人产生一种幻觉,好像大家都故意去忽略了一个事实,这是一场终将会失败的抵抗。面对这样一个不可避免的结局,很少有人告诉我们什么时候可以放弃抵抗,用生命最后那点时间去抓住你最关心的东西。 也很少有人告诉我们,怎么样坦然地面对死亡。在生命最后阶段怎么样才能获得幸福。当生命的时钟开始倒数的时候,怎么样克服心里的恐惧,好好说再见。
这次共读的书籍是《最好的告别》,作者是美国著名外科医生阿图葛文德。这类非专业作家写的书,既不是单纯的文学作品,也不是医学的学术文章。作者从一个医生的角度,向我们讲述了人们如何一点点衰老,一步步走向死亡。这些类似职业手札的文字,往往带有一些令人着迷的职业独特视角和他们的所思所想。书中探讨了很多美国的养老制度、临终服务,更有很多作者亲身经历的关于临终的案例。细腻又感人。
这些对我们中国现在所面临的紧张医患关系,80、90这一代独生子女家庭的养老问题,可能都会有 ...
阅读记录《一个叫欧维的男人决定去死》
她是色彩,他全部的色彩
我常在悬崖边上走。你轻轻一推我便可以落入黑暗,但你如果愿意拉我一把,我的爱情,连同我整个人,便都是你的。
失去某人以后总是会有一些奇怪的细节惹人怀念。都是极小的事情。笑容、她睡眠时翻身的样子。为她粉刷房间。
相信命运,你在生命中走过的每一条道路最终都会带领你到注定的归宿。
“一个人的品质是由他的行为决定的,而不是他说的话。”欧维说。
这是一个还没过期就已经过时的世界。整个国家都在为没人能正经做事起立鼓掌,毫无保留地为平庸欢呼喝彩。
欧维还活在匠人世界
我愿意向爱过的人学习那些曾经欣赏他的优点,比如温柔比如细腻。
死亡最强大的力量不在于它能让人死去,而在于让留下来的人不想再活着。”——《外婆的道歉信》
他从来就不是那种随心所欲的男人,对女人也没什么特别的兴趣。但看到她以后,他感觉自己就像一把走了火的手枪。
他原路走回火车站,在候车室的一条长凳上躺下睡了一觉。三点一刻,他又按原路走回裁缝店
欧维,你虽然看着不慌不忙,但我知道你一定紧张死了,这一路值得回味,而下一站令人期待。
我觉得自己跟你好像,死板枯燥行为单一,又有该死的原则不可跨越。
我甚至能体会到你 ...
Mac升级BigSur后提示没有权限打开应用程序
Mac升级成BigSur之后打开Pycharm,发现报错“您没有权限打开…”,类似于:
全网搜到的都是使用upx来解决,但是我的失效了哈,所以只能通过修改权限来解决了。
我的解决方案是这样的:
1sudo xattr -rd com.apple.quarantine /Applications/pycharm.app
其中pycharm是软件名称。
迅速完美解决 hhh~
语义分割常用数据集ADE20K与Cityscapes
ADE20K
项目地址:https://github.com/CSAILVision/ADE20K
数据规模:
训练集:25574;验证集:2K;测试集:3K
内容:365个场景;3688个类别。
ADE20K 的数据集,可用于场景感知、解析、分割、多物体识别和语义理解。
图像涵盖了SUN和Places数据集中的场景,官网可视化给出了目标、部件和注释示例的数量的列表。
树状表只展示了带有超过 250 个注解示例的目标,以及带有超过 10 个注解示例的部件。
一些类别可以既是目标,也是部件。例如,一个「门」可以是一个目标(在一张室内图片中)或者一个部件(当它是车的一个门时)。一些目标经常是部件(比如一条腿、一只手),尽管在某些情况下它们看起来与整体是相互独立的(比如车库中的汽车轮子)。
而有些目标则永远不是部件(比如一个人,一辆卡车等等)。依据于部件所属的目标,相同的名称类别(比如门)可对应于若干个视觉范畴。例如,一个汽车的门从视觉上看是不同于一个橱柜的门的。然而它们也共享一些相似的可供性(affordance)。
当目标不是另一个目标的一个部件时,其分割掩码将出现在 * _se ...