基础
xiongxyowo
这个作者很懒,什么都没留下…
展开
-
Python all()的简单用法
Python all()的简单用法原创 2022-11-26 11:26:57 · 1208 阅读 · 0 评论 -
Python Counter的简单用法
Python Counter的简单用法原创 2022-11-25 23:07:39 · 1589 阅读 · 0 评论 -
浅谈分割任务中data augmentation的概率问题
浅谈分割任务中data augmentation的概率问题原创 2022-10-31 16:31:18 · 796 阅读 · 0 评论 -
利用cv2.connectedComponentsWithStats分离图像各连通区域
分离图像各连通区域原创 2022-10-26 15:35:09 · 1077 阅读 · 0 评论 -
图像翻译GAN生成图像有黑块的一种可能原因
另一种思路是,在测试时运用训练阶段同样的数据增强。但这里的问题在于,像透视这种东西,变换过后想要再变回来还挺麻烦,一个个去后处理纠正不太现实。那么解决方案有这么几种。要么就放弃类似的能带来黑边的数据增强,包括但不限于RandomRotation,RandomPerspective等等…这段时间在做一个demo,尝试复现一个经典的任务,将人像照片转化为动漫风格。因为Pad多少像素是我们可以人工指定的并且不存在随机性,因此再把生成的图像给center crop回来就好。而在测试阶段显然是不能使用数据增强的。原创 2022-10-11 14:39:48 · 1530 阅读 · 0 评论 -
简单理解Focal Loss
该值越低,表明网络对该类的这个样本预测的更准确。但是这里存在一个问题,手工设置的超参数可能不准确也不够灵活。更低,那么我们就将其作为系数对损失函数进行加权,使得网络不那么关注这一类的"容易样本"。反之,对于少见的困难类样本,其。假设负类样本数量远多于正类,为了防止网络仅关注于负类的分类效果,我们就可以把负类的权重。Focal Loss用来解决的是类别不均衡问题,其。可以发现,这个权重系数是与网络当前的状态。也就是一种改进的交叉熵,乘了两个系数,更高,网络对其给予更大的权重进行学习。给调小一些,正类的权重。原创 2022-10-10 15:34:26 · 947 阅读 · 0 评论 -
Python利用mask提取保存图片前景
二分割任务,输入了一张图像(比方说3×256×256),网络给了个单通道的预测mask(1×256×256),现在要利用这个mask把前景提出来。至于原理的话是很简单的,把这图像和mask给concat在一起,变为四通道图像,即B, G, R, alpha,然后再转换回三通道即可。原创 2022-09-13 14:51:31 · 2441 阅读 · 5 评论 -
使用Pytorch简单实现混合密度网络(Mixture Density Network, MDN)
本文主要参考自:https://github.com/sksq96/pytorch-mdn/blob/master/mdn.ipynbhttps://blog.otoro.net/2015/11/24/mixture-density-networks-with-tensorflow/?tdsourcetag=s_pctim_aiomsg引言我们知道,神经网络具有很强的拟合能力。比方说,假设我们要拟合如下一个带噪声的函数:y=7.0sin(0.75x)+0.5x+ϵy=7.0 \sin (0.75原创 2022-03-15 18:32:59 · 4321 阅读 · 0 评论 -
VGG Loss的Pytorch实现
代码引自:https://github.com/bryandlee/stylegan2-encoder-pytorch/blob/master/train_encoder.pyclass VGGLoss(nn.Module): def __init__(self, device, n_layers=5): super().__init__() feature_layers = (2, 7, 12, 21, 30) self.weig原创 2021-12-09 19:12:44 · 5537 阅读 · 2 评论 -
利用Python K-means实现简单图像聚类
利用Python K-means实现简单图像聚类原创 2021-10-20 18:31:41 · 13675 阅读 · 17 评论 -
生成对抗网络GAN损失函数loss的简单理解
原始的公式长这样:minGmaxDV(D,G)=Ex∼pdata (x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]\min _{G} \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\bold原创 2021-09-26 18:23:18 · 15591 阅读 · 12 评论 -
多通道卷积的参数数量计算
还是这张老图:输入3×5×5的特征图(H, W, C)原创 2021-05-11 15:30:50 · 1159 阅读 · 0 评论 -
io.imread与cv2.imread的简单区别
两者都可以用来读取图像,主要的区别在于:io.imread读取得到的结果是RGB格式的cv2.imread读取得到的结果是BGR格式的可以看到这两者的第一通道和第三通道刚好是反过来的。在某些情况下,比如用cv2.imread读取某张图像,再用io.imsave进行保存,就可以发现输出的图像颜色不对。所以有的时候可以看到这种代码:img = img[..., ::-1]作用就是把第一个通道和第三个通道调整顺序,实现RGB与BGR的互转。...原创 2021-03-30 14:29:31 · 2920 阅读 · 0 评论 -
由alpha matte生成trimap
基本思想对alpha matte进行膨胀操作,使其变大。对于膨胀后仍没有覆盖到的区域,将其判定为背景对alpha matte进行腐蚀操作,使其变小。对于腐蚀后alpha值仍为1(255)的区域,将其判定为前景剩下的区域为不确定区域Pytorch代码def gen_trimap(alpha): k_size = random.choice(range(1, 5)) iterations = np.random.randint(1, 20) kernel = cv.getS原创 2021-03-29 16:12:20 · 959 阅读 · 0 评论 -
Pytorch 保存中途训练的模型
一般看到的是这个:torch.save(net.state_dict(), 'model.pth')但这个只保存了模型本身的参数,能保证可以load保存的模型进行测试,但是并不方便恢复训练。实际上还需要保存优化器的状态,以及一些其他有助于恢复训练的信息(如loss等):def save_checkpoint(epoch, epochs_since_improvement, model, optimizer, loss, is_best): state = {'epoch': epoch,原创 2021-03-29 14:35:47 · 1404 阅读 · 0 评论 -
Pytorch 一种调整学习率的思路
一般来说,在模型训练的后期,学习率就可以适当调低一些,以获得更好的训练效果。需要准备记录这些参数:epochs_since_improvement:如果一个新的epoch并没有降低loss,则其加一;反之,则清零decays_since_improvement:如果触发了一次学习率调整,则其加一;而如果一个新的epoch下loss降低,则清零shrink_factor:收缩因子,控制学习率的缩小速度。默认为0.6,decay每加1,则再乘0.6,加快学习率的收缩速度准备学习率调整函数:def原创 2021-03-29 14:19:31 · 370 阅读 · 0 评论 -
图像归一化与标准化
归一化(Normalization)一般来说用的是min-max归一化,缩放到0-1之间,即:Xi−XminXmax−Xmin\frac{X_{i}-X_{\min }}{X_{\max }-X_{\min }}Xmax−XminXi−Xmin对于图片来说,由于max是255,min是0,也就是直接除以255就可以完成归一化。from skimage import ioimage = io.imread('1.jpg')image_norm = image / 255io原创 2021-03-27 18:24:46 · 10107 阅读 · 2 评论 -
将Matting结果转化为二分割结果
matting问题本质上作为一个回归问题,其生成的alpha matte包含的是每个像素属于前景的“程度”;而二分割则是分类问题,每个像素要么属于前景,要么属于背景。可以设置一个阈值,认为α\alphaα值超过某个给定阈值则认为其为前景,小于该阈值则认为其为背景,从而达到问题的转化。比如我们有个matting结果如下(图源alphamatting.com数据集):将α\alphaα值非零的像素点都认为是前景(在这里为人像),结果如下:代码:from skimage import ioimg原创 2021-03-25 15:47:38 · 308 阅读 · 0 评论 -
利用alpha matte提取图片前景
首先还是看这个公式:Ii=αiFi+(1−αi)BiI_{i}=\alpha_{i} F_{i}+\left(1-\alpha_{i}\right) B_{i}Ii=αiFi+(1−αi)Bi即一张图片是由一定透明度的前景加上相反透明度的背景组成的,而aloha matte储存的就是这个透明度信息:为1,表示相应像素全为前景,为0,表示相应像素全为背景,为0.7,表示相应像素由70%的前景和30%背景构成。而这里要算前景的话,只需要将完整的图片乘上相应透明度,然后补背景(全黑或全白)即原创 2021-03-22 20:31:53 · 976 阅读 · 3 评论 -
多标签分类与BCELoss
在讨论这一个问题之前,先看一个很有意思的事实:多标签分类的激活函数、损失函数和二分类十分相似,都是sigmoid和binary crossentropy,那么说明这两个问题也有很大的相似之处。多标签分类现在我们有这么一张图:那么二分类问题就可以是,这张图里有没有房子。答案只能是有(1)或者无(0),共两类。而多标签分类问题就相当于有多个二分类问题,比如这张图里是否有房子、有树、有山、有云朵。对于一张特定的图,这些标签可能都具备,也可能都不具备,那么这就叫多标签分类(注意与多分类区分)。BC原创 2021-03-17 11:08:18 · 4668 阅读 · 0 评论 -
多分类与多标签分类
多分类数据集中的数据包含很多个类别,但是一个样本只能属于一个类别,不同类别之间是互斥的。例如对手写数字进行分类,某一个数字只能属于0~9这十个类别中的某一个,这就是一个多分类问题。如果类别只有两类,此时一般把这种多分类问题称作二分类。多分类一般使用softmax作为激活函数,损失函数用crossentropy。二分类一般使用sigmod作为激活函数,损失函数用binary crossentropy。多标签分类数据集中的数据同样包含很多个类别,但是一个样本可以属于多个类别,不同类别之间可能有原创 2021-03-17 09:59:10 · 614 阅读 · 0 评论