自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

景唯acr

弱者才在乎耻辱

  • 博客(45)
  • 收藏
  • 关注

原创 YOLOv5检测界面-PyQt5实现

YOLOv5检测界面的简单实现

2021-09-27 14:30:40 55907 226

原创 Grad-Cam实现流程(pytorch)

最近感觉类激活图可视化是一件很有趣的事情。CAM由于对网络结构有定性要求,所以在可视化一些有多个全连接层的网络时,表现不太友好,于是出现了Grad-CAM。算法思路引用的博主 G5Lorenzo 一句话Grad-CAM根据输出向量,进行backward,求取特征图的梯度,得到每个特征图上每个像素点对应的梯度,也就是特征图对应的梯度图,然后再对每个梯度图求平均,这个平均值就对应于每个特征图的权重,然后再将权重与特征图进行加权求和,最后经过relu激活函数就可以得到最终的类激活图实现过程先准备图

2020-06-01 17:15:56 35786 78

原创 GIoU详解

Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression蓝色动机:IoIoU同时作为度量和损失函数时,存在两个问题:如果两个目标没有重叠,IoU将会为0,并且不会反应两个目标之间的距离,在这种无重叠目标的情况下,如果IoU用作于损失函数,梯度为0,无法优化。IoU无法区分...

2019-04-14 17:37:22 39767 18

原创 python实现不同电脑之间视频传输

imageZMQ库链接:https://github.com/jeffbass/imagezmq该库原本是用于树莓派上的视频传输,其包含很多示例,有兴趣可以去看看。确保发送端和接收端接在同一个局域网下。发送端import socketimport timeimport cv2import imagezmqimport tracebackimport simplejpeg# capture=cv2.VideoCapture(0) # 获取摄像头视频capture=cv2.VideoC

2021-06-23 19:48:04 3053 7

原创 EndNote设置参考文献对齐与10.5号字体

效果图:对齐方法(建议在参考文献全部导入完之后再用这个方法):在Endnote 中编辑自己的使用的格式点击下面红色圈圈,Layout -> Insert Filed在上面中的[Bibliography Number]后面加Tab符号,别按键盘上的"Tab",没用,点红色圈中的Tab就行了。另外将右下角设为"All paragraphs"。然后叉掉保存。在word中,点击样式按钮。在弹出的窗口找到下图这玩意儿。修改按照自己学校的要求更改中西文字体和大小格式 -

2021-03-08 22:55:50 6624 2

原创 特征图可视化(pytorch)

本篇博客的可视化是可视化网络的每层特征图,不是指类激活图(CAM)可视化,CAM可视化可以参考Grad-Cam实现流程(pytorch)这篇博客的目的仅是记录而已,由于距离上次使用过于久远,具体参考文章已经找不到.可视化效果如下图:浅层深层代码import torch.nn as nnimport numpy as npfrom PIL import Imageimport torchvision.transforms as transformsimport torchvision.

2021-02-18 00:47:28 9244 9

原创 pytorch加载nn.DataParallel训练的模型出现的问题

nn.DataParallel分布式训练后,如果直接使用torch.save(model.state_dict(), model_out_path)保存模型,等到再加载模型,可以将需要加载模型的网络也弄成分布式训练。分布式训练时,最好使用torch.save(model.module.state_dict(), model_out_path)保存模型,这样等到需要测试网络时,加载模型时用model.load_state_dict(torch.load(PATH, map_location=device))

2020-09-15 22:09:11 4555 3

原创 API-Net

论文标题:Learning Attentive Pairwise Interaction for Fine-Grained Classification针对目标:细粒度图像分类来源: AAAI 2020下载地址:https://arxiv.org/pdf/2002.10191.pdf官方github地址: 未开源坑点:对设备要求极高,按照论文中消融实验的结果,batch_size设为120,另外还要构造成图像对,才能达到论文的 88.6 acc槽点:这篇论文写的太大白话了点,额。。。动机.

2020-09-13 10:17:49 1674 1

原创 WSDAN 论文及代码解读

论文标题:See Better Before Looking Closer: Weakly Supervised Data AugmentationNetwork for Fine-Grained Visual Classification针对目标:细粒度图像分类下载地址:https://arxiv.org/pdf/1901.09891v2.pdf官方github地址: https://github.com/tau-yihouxiang/WS_DANpytorch复现版github地址:https.

2020-09-05 11:47:49 5357 16

原创 读取cifar100并将图片按类别保存

运行代码后会得到两个文件夹,一个是训练集(50000张图片),一个是测试集(10000张图片),这两个文件夹下都会有100个子文件夹。import osfrom skimage import ioimport torchvision as tvimport numpy as npimport torchdef Cifar100(root): character_train = [[] for i in range(100)] character_test = [[] for

2020-07-18 22:13:46 2363 1

原创 VOC类型的xml标签在训练前的清洗工作

标注工具labelimg在收集好所有图片以及对应的标签后,需要对数据进行清洗工作。包括剔除没有标签的图片,剔除没有图片的标签,统计数据中的标签名以及数量,重命名打错字的标签,合并标签,标签替换等等。数据清洗1. 统计数据中标签名有时,可能出现标错标签名的情况,如有些 ‘peroson’ 的标签名打错了,写成了 ‘people’,或者同一类别中,有的写了下划线,有的使用空格表示,例如 ‘cargo_house’ 和 ‘cargo house’ 。统计出所有标签名以及类别数后,我们能够很方便的将错误找

2020-07-08 15:54:08 941 3

原创 合并使用labelimg标注的同一张图片的两个不同xml标签

待解决问题对于某个文件夹下的所有图片,使用labelimg进行标注,获得voc类型的xml格式的标签。由于在进行标注工作时,将不同的类别分开标注了,得到标签文件夹有两个,第一个文件夹存储了类别 a 和类别 b 的 labels ,第二个文件夹存储了类别 c, d, e… 的 labels 。现在想要将相同图片的标签进行,即原本一张图片可能有两个对应的 xml,现在要使得一张图片只有一个对应的 xml。目标效果原图:标签1标签2标签合并解决思路通过分析 xml 文件,得知关键的标签信息存在于

2020-07-01 21:40:46 3576 9

原创 CUB-200-2011鸟类数据集的下载与使用pytorch加载

CUB-200-2011的下载:http://www.vision.caltech.edu/visipedia/CUB-200-2011.html如果只跑分类,下载第一个就行了。里面除了类别标签也有标注框。如果还想用到分割的话,可以下载Segmentations。我只下了红框内的压缩包下载完,解压后:images文件夹:一共200类,每类60张左右的图片:读取图片与类别标签:import numpy as np# 读取数据import scipy.miscimport osfrom

2020-06-24 10:20:37 26204 18

原创 PIL与opencv绘制bounding box(带文本标签)的比较

在目标检测领域,经常需要用到矩形框来显示检测到的目标,常用的绘制工具包括PIL库和Opencv库。首先弄清楚图片的坐标系:图形左上角为原点,纵轴为Y轴,横轴为X轴。原始图片:PIL绘制bbox:from PIL import Image, ImageDrawdef pil_draw(img_path): # 1.读取图片 im = Image.open(img_path) # 2.获取标签 # 标签格式 bbox = [xl, yl, xr, yr]

2020-06-24 08:56:24 4388

原创 opencv-python将视频转为图片,将图片转为视频

opencv-python将视频转为图片,将图片转为视频

2020-06-24 08:45:39 3250 1

原创 ValueError: some of the strides of a given numpy array are negative.的解决方法

错误代码:使用opencv读取图片后,转换颜色通道,再转为tensorimg = img[:, :, ::-1] # BGR --> RGBtransform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize([0.4948052, 0.48568845, 0.44682974], [0.24580306, 0.24236229, 0.2603115]) ])

2020-06-01 14:13:16 2106

原创 img[::-1,:,:]、img[:,::-1,:]、img[:,:,::-1]是啥?

如果使用了opencv读取图像作为网络的输入时,经常能够看到 img = img[:,:,::-1] 的一行代码。原因是opencv读取图像时,图片的颜色通道为 GBR,为了与原始图片的RGB通道同步,需要转换颜色通道。img = img[:,:,::-1] 便能达到该效果。当使用PIL或者scipy读取图片,就不会出现这种问题,也就不需要转换颜色通道了。三种读取图片的方式比较import cv2import scipy.miscfrom PIL import Imageimport num

2020-06-01 11:23:48 5374

原创 CAM实现的流程(pytorch)

之前写了一个简化版本的可视化过程,简化版的可视化没有考虑到通道之间的关系。流程图:算法思路:将要可视化的图片输进网络模型,判断出所属类别获取最后一个卷积层的输出特征图通过图片所属类别,得到权重,对获取的特征图的各个通道赋值,并且相加为单通道的特征图举个例子:如果输入一张图片,通过网络模型之后,判断这张图片为第500类(总共1000类)。特征图shape为(1,512,13,13),假设分类层为1 x 1卷积(这里就不算是最后一个卷积层,而是属于分类层)和全局平均池化组成。那么,1000个

2020-05-27 19:51:50 14346 31

原创 特征图可视化为类激活图(CAM)--简化版

在图像分类领域的论文中,经常看到如下所示的可视化图片。将特征图的响应大小,映射到了原图,能让读者更直观的了解模型的效果。这类图,通常被称为类激活图(CAM, Class Activation Map),或者注意力图、热图。上一张图,是我使用训练好的细粒度分类模型(网络结构源于Mutual-Channel Loss )可视化的结果。用到的函数为:cv2.applyColorMap(),cv2.addWeighted()cv2.applyColorMap()函数的功能是将矩阵转化为伪彩色图(可以把伪彩色

2020-05-21 19:31:51 11417 8

原创 Mutual-Channel Loss 论文解读

论文标题:The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification来源:IEEE TIP 2020针对目标:细粒度图像分类下载地址:https://arxiv.org/abs/2002.04264github地址:https://github.com/PRIS-CV/Mutual-Channel-Loss首先,说说这篇论文的优点:简单,高效,易于实现。这篇论文相比于SOTA的其.

2020-05-14 21:37:35 3334 9

原创 Class-Balanced Loss Based on Effective Number of Samples

会议:CVPR2019GitHub地址:https://github.com/vandit15/Class-balanced-loss-pytorch/blob/master/class_balanced_loss.py论文下载:https://arxiv.org/pdf/1901.05555.pdf

2020-05-14 16:59:32 4388 3

原创 cross channel pooling 的原理与代码实现

普通的 pooling,是 channel 之间独立做的,只是在每个 feature map 空间维度上去做pooling,pool 完 channel 数是不会改变的。cross channel pooling,是在 channel 维度上去做,比如现在有 50 个 feature map,想通过 cross channel pooling 去得到5个feature map。做法就是把 50 个 feature map 分成 5 组,每组内的 10 个 feature map 在 channel 维度上

2020-05-12 11:52:45 3009

原创 pytorch中reshape()、view()、permute()、transpose()总结

1. reshape() 和 view()参考链接:PyTorch中view的用法pytorch中contiguous()功能相似,但是 view() 只能操作 tensor,reshape() 可以操作 tensor 和 ndarray。view() 只能用在 contiguous 的 variable 上。如果在 view 之前用了 transpose, permute 等,需要用 contiguous() 来返回一个 contiguous copy。 view() 操作后的 tensor 和原

2020-05-11 11:43:49 5885

原创 pytorch+resnet18实现长尾数据集分类

实验基于论文: Class-Balanced Loss Based on Effective Number of SamplesClass-balanced-loss代码地址:https://github.com/vandit15/Class-balanced-loss-pytorchresnet18代码参考链接:https://blog.csdn.net/sunqiande88/articl...

2020-05-03 23:29:02 3212

原创 Expected more than 1 value per channel when training, got input size torch.Size([1, 9, 1, 1])

ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 9, 1, 1])原代码:import torchimport torch.nn as nnmodel = nn.Sequential( nn.Conv2d(3, 9, 1, ...

2020-04-30 19:06:36 2087 2

原创 pytorch获取nn.Sequential的中间层输出

对于nn.Sequential结构,要想获取中间网络层输出,可以使用循环遍历的方式得到。示例import torchimport torch.nn as nnmodel = nn.Sequential( nn.Conv2d(3, 9, 1, 1, 0, bias=False), nn.BatchNorm2d(9), n...

2020-04-30 14:11:41 14362

原创 选择排序算法以及c++实现

算法步骤:在未排序序列中找到最小(大)元素,存放到序列的起始位置。从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列 的末尾。重复第2步,直到所有元素均排序完毕。动图演示c++实现...

2020-04-12 15:23:06 213

原创 CodeBlocks20.03:Can't find compiler executable in your configured search path's for GNU GCC Compiler

出现错误的原因: 在安装codeblocks时,更改了 安装目录(前提是下载带有编译器的版本,如下图所示)解决方案:第一步,添加环境变量复制CodeBlock安装目录下MinGW文件夹中bin文件夹的路径右键点击此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 在系统变量(s)下双击PATH -> 新建 -> 粘贴之前复制的路径 -&gt...

2020-04-07 13:17:09 2912 1

原创 ShuffleNet V1, ShuffleNet V2论文笔记

参考链接:『高性能模型』轻量级网络ShuffleNet_v1及v2轻量级网络–ShuffleNet论文解读

2020-03-31 11:06:13 374

原创 opencv-python给图片添加半透明mask

示例中,mask为矩形框,如果是不规则点的分割mask,可以使用cv2.fillPoly()函数代替cv2.rectangle().原始图片:import numpy as npimport osimport cv2def put_mask(img_path,output_fold): # 1.读取图片 image = cv2.imread(img_path) ...

2019-12-29 21:53:42 21937 6

原创 NTS-Net

ECCV2018细粒度分类paper:Learning to Navigate for Fine-grained Classification作者无私的将代码公布了出来,源码基于pytorch。项目地址:https://github.com/yangze0930/NTS-Net在自己设备上复现时,鸟类数据集能够达到论文中的效果,但是汽车数据集的accuracy只有90.3%,和论文中描述的93...

2019-11-18 17:24:15 4398 27

原创 RA-CNN细粒度分类网络

CVPR2017细粒度分类paper:Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition。论文链接:http://openaccess.thecvf.com/content_cvpr_2017/papers/Fu_Look_Cl...

2019-11-10 16:40:09 1757

原创 Stanford Cars数据集的下载与使用

本篇博客主要介绍Stanford Cars数据集的下载与使用Stanford Cars数据集主要用于细粒度分类任务。数据集中一共包含16185张不同型号的汽车图片,其中8144张为训练集,8041张为测试集。官网下载链接:http://ai.stanford.edu/~jkrause/cars/car_dataset.html官网中有两个版本的数据集,在旧版本中没有测试集的标注,我们要下载...

2019-11-09 14:13:59 19868 24

原创 理解torch.gather

先上案例:>>> a = torch.Tensor([[1,2,3],[4,5,6]])>>> atensor([[1., 2., 3.], [4., 5., 6.]])>>> torch.gather(a,dim=0,torch.LongTensor([[0,1,0],[1,0,0]]))tensor([[1., 5...

2019-10-26 11:46:09 714

原创 Ubuntu16.04开机没反应

系统:Ubuntu16.04一时手贱,将可能没做好的启动盘插在usb接口后,电脑开不了机。按下主机电源键时,显示器黑屏,显示器的电源指示灯会闪烁,闪烁间隔大概4秒。解决办法:首先先放静电。断开主机上除了电源线之外的所有连线,长按电源线接口上方的黑色小按钮30秒左右。按住按钮时,风扇会开启。然后尝试开机。这一段是新遇到的问题((((按下电源键开机时,显示器上内容停留在了grub界面。进入U...

2019-10-25 14:51:18 1658 2

原创 安装tensorflow提示Requirement already satisfied,然而无法导入tensorflow

Requirement already satisfied: funcsigs>=1; python_version < “3.3” in /usr/local/lib/python2.7/dist-packages (from mock>=2.0.0->tensorflow-gpu==1.4) (1.0.2)解决办法:输入以下命令 pip install --upg...

2019-05-30 21:03:44 15170 13

原创 ubuntu系统开机黑屏,左上角光标闪烁的解决办法

前天早上,电脑按下电源键开机后,突然无法进入桌面。现象:黑屏,并且左上角有光标在闪烁。1、解决办法:开机后,在显示dell图标后,按下Esc进入grub界面。不同电脑进入grub方法不一样,自行百度。在ubuntu处按下e键,进入编辑。 在倒数第二行的样子,会看到 ro quiet splash $vt_handoff 在splash 后面加入nomodeset就变为了 ro qui...

2019-05-08 20:02:59 50176 22

原创 Salient Object Detection Driven by Fixation Prediction 论文解读

首先引入两个概念Fixation Prediction (FP): 眼动点预测,目的为确定眼动点。一张图中,我们人第一眼注意到的位置即为眼动点。Salient Object Detection (SOD): 显著性目标检测,目的为突出图像中的显著性目标区域。一、动机:  在视觉显著性方面的研究中,主要分为两类任务:眼动预测和显著性目标检测。但是两者之间的关系,却很少被研究人员探索。下图中的...

2019-04-30 16:26:09 2232

原创 Ubuntu16.04中Anconda2/Anconda3的安装使用和tensorfow的配置

1.下载安装包:在官网下载就行了,下载速度挺快的。链接 https://www.continuum.io/downloads2.安装:进入下载目录,一般情况下在 Download 目录下终端输入:bash Anaconda2-2018.12-Linux-x86_64.sh(后面的.sh文件是下载的安装包名)一路yes过去就行。3.启动anaconda:终端输入:anaconda-n...

2019-04-07 22:25:11 1400

原创 RequestsDependencyWarning:Old version of cryptography ([1, 2, 3]) may cause slowdown.

安装好tensorflow后,每次导入的时候(import tensorflow)都会提示:RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slow down.原因很明显,cryptography版本太老了。虽然对运行代码影响不是很大,但是我实在是无法忍受每次导入tensorflow时...

2019-03-24 15:17:26 4808

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除