自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 收藏
  • 关注

原创 torch的cumsum

函数作用:在张量的某个维度上进行累加从语言描述上比较抽象,看下以下代码加以说明(针对二维张量):import numpy as npx = np.array([[1, 2, 3], [4, 5, 6]])x = torch.from_numpy(x)这时x的结果为:tensor([[1, 2, 3], [4, 5, 6]])使用cumsum:x_ = x.cumsum(dim=0)x_的结果为:tensor([[1, 2, 3], [5, 7, 9

2022-05-04 13:56:09 1028

原创 非root用户如何更改docker权限

对于非root用户每次使用docker命令都需要加上sudo,这显示是一件很麻烦的事情,那么对于非root用户如何更改docker权限呢?sudo groupadd docker 创建docker用户组(组名为docker)sudo gpasswd -a${USER} docker 将非root用户加入该组内(此时终端会显示:正在将用户xxx加入到"docker"组中)sudo service docker restart 重启docker服务newgrp - docker 切换当前会话到新gro

2021-09-12 20:04:53 691

原创 SpringBoot——ResponseBody

很多情况下我们希望后端的调用结果能直接写入Http的响应体中以供前端获取来更新页面显示,此时需要我们在以@controller为注解的类中对相应方法加上@ResponseBody注解:@Controllerclass HelloWorldController { @RequestMapping("/hello") @ResponseBody public String hello(){ return "Hello World!"; }}我们也可

2021-09-05 16:09:05 1947

原创 StyleGAN源码之FID

看到很多网友在用StyleGAN训练自己的数据集的时候都忽略了fid,源码中fid利用了inception v3的pertained model,源码写的是要从谷歌网盘下载该pretrained model,如果只想run着玩可以忽略fid的计算,把相应代码注释掉;否则最好提前下载下来然后在本地目录导入下载好的inception v3即可。源码FID的位置:metrics/frechet_inception_distance.py调用FID的位置:metrics/metric_base.py实际的

2021-09-05 13:16:49 760

原创 ubuntu查看conda环境并选择其他环境进入

conda info --envs 查看现有conda环境,终端会显示环境名称和所在路径conda activate 环境名称 重新激活环境并进入

2021-06-22 15:17:22 3505 1

原创 Tensorflow配置参数

import tensorflow as tftf.compat.v1.app.flags.DEFINE_integer('batch_size', 100, help='The size of each batch.')tf.compat.v1.app.flags.DEFINE_integer('epoch', 10000, help='The epoch of training.')tf.compat.v1.app.flags.DEFINE_string('saved_models', './s

2021-06-03 10:34:15 280

原创 python请求网页将图片保存本地

标准写法:from urllib import requestfrom urllib import errorif __name__ == "__main__": url = r"http://z.about.com/d/fashion/1/0/v/1/3/80998678_10.jpg" headers = {'User-Agent': 'Mozilla/5.0'} path = './1.jpg' req = request.Request(url, heade

2021-06-02 13:06:06 369

原创 利用python的absl配置参数

将深度学习应用到CV领域必不可少的要搭建模型,训练网络,一般模型搭建为一个py文件,网络训练为一个py文件,其中网络训练需要大量参数设置,比如张量运行的设备(CPU or GPU),初始学习率,训练次数,批次大小,图像裁剪尺寸等等,如果我们在程序中随意定义并初始化这些参数不免显得程序非常凌乱,而且维护性较差,同时占用内存,那么一个好的方法就是在程序的开头将其全部声明和初始化并且打包成一个整体,下面看代码:from ansl import flags, appflags.DEFINE_string('参

2021-05-20 16:08:52 1314

原创 Python:collections的namedtuple

collections模块不太常用,之前我也从未接触过,最近在看EfficientNet的源码发现程序中作者用了collections.namedtuple方法,于是help了一下查看官方说明文档:>>> import collections>>> help(collections.namedtuple)Help on function namedtuple in module collections:namedtuple(typename, field_nam

2021-05-19 17:56:11 106

原创 WGAN解读(一)

WGAN全称Wasserstein GAN,重点以及和DCGAN的不同之处在于Wasserstein,Wasserstein是个啥呢?网上有很多很棒的解答,这里直接送上传送门KL散度、JS散度、Wasserstein距离WGAN的作者选择Wasserstein距离来度量真实图像分布和生成图像分布之间的距离,目标即为最小化该距离。尽管Wasserstein距离从公式的形式上来看比较复杂难懂,但是结合代码实现来看其实非常简单。官方GitHub给出的代码如下:loss_D = -torch.mean(dis

2021-05-13 21:24:13 3614

原创 【机器学习随笔】数学符号

infinfinf(全称:infimum):集合下界supsupsup(全称:supremum):集合上界

2021-05-13 12:06:49 114

原创 如何判断链表有环

1.链表有无环(面试常考):思路1:集合操作利用集合元素唯一性的特点,从链表的头部开始遍历,依次将结点放入集合中,并且每放入一个结点都需判断该集合的长度与前一次放入结点时有无变化,如果长度没有变化,则说明链表有环,如果遍历到尾结点,链表的长度均依次递增,说明链表没有环。例题:leetcode141.代码(python):# Definition for singly-linked list.# class ListNode:# def __init__(self, x):#

2021-05-13 09:26:56 138

原创 图像识别最新进展:来自Google Brain Team的MLP-Mixer

CV领域最近几年发展火热,各种先进算法、模型层出不穷,CV领域的科研工作者和从业者也被迫需要天天学习新的structure,幻想有朝一日能够提出实现SOTA的方法。图像识别兜兜转转,居然从MLP开始经过CNN、Transformer又回到了MLP,近日,谷歌大脑团队提出的MLP-Mixer又引发了CV领域的浪潮,论文发布在arXiv,仔细发现参与的研究者大多也是Vision Transformer(ViT)的提出者,通过论文中的实验结论我们可以发现MLP-Mixer在JFT-300M数据集上的识别精度相比V

2021-05-10 15:02:55 697

原创 打印模型训练过程中的学习率

print(optimizer.state_dict()['param_groups'][0]['lr'])

2021-05-09 21:31:35 882

原创 热重启的随机梯度下降

看了CSDN的一些博客感觉讲的都不是很清晰,这里简单分析一下:首先基于热重启的学习率衰减策略可以说是余弦退火衰减策略的进化。余弦退火学习率衰减策略在整个训练过程持续衰减直到学习率为0,那么当损失函数的值陷入局部最优值的时候,越来越小的学习率显然难以跳出局部最优值。而热重启很好地解决了这个问题,先摆上公式和图像:首先利用大白话讲一下为什么叫“热重启”,“重启”指的是每间隔TiT_iTi​次迭代学习率重启一次,并且每次重启后的状态与之前相同(就好比电脑重启一个道理,暂且我们认定电脑只含有一个操作系统,电

2021-05-09 20:25:47 1402

原创 图像评估指标:PSNR

公式:MSEMSEMSE:模型的输出图像与真实图像之间的均方误差MAXMAXMAX:nnn位RGB图像所能取到的最大值(例如nnn===888,此时MAXMAXMAX===2228^{8}8−-−111===255255255)意义(重点,面试常考):峰值信号的能量与噪声的平均能量之比代码实现:def psnr(pred, gt): pred = pred.clamp(0, 1).cpu().numpy() gt = gt.clamp(0, 1).cpu().numpy()

2021-05-09 09:57:17 1556 2

原创 Leetcode笔记3

题目:剑指offer 05.替换空格:解答传送门剑指Offer05.替换空格

2021-05-08 20:35:06 76

原创 深度学习训练遇到的坑(一)

如果使用的训练集图像的分辨率很高(几千x几千的那种),不要在训练的过程中将resize图像方法封装到transforms.Compose中,这样会使得resize图像的过程变得特别慢,最好的方法是在训练之前就对所有图像做预处理,利用opencv的resize方法对训练集和验证集图像全部裁剪成特定尺寸,得到低分辨率的图像后再进行训练。...

2021-05-08 14:06:51 350 1

原创 Helen人脸数据集生成人脸分割

Helen人脸数据集包括2330张人脸图像,并且每张人脸图像包含11个部位的掩模,通常做人脸分割只需要面部以及面部特征掩模即可。数据集文件的整体结构如下:依赖的库:import osimport cv2 as cvimport numpy as np定义人脸分割不同部位的颜色:colors = [[160, 0, 10], [11, 138, 19], [11, 138, 19], [21, 83, 184], [21, 83, 184], [33, 182, 151], [255, 16,

2021-05-08 09:30:49 1623 2

原创 图像风格迁移及代码实现

图像风格迁移其实非常好理解,就是将一张图像的“风格”(风格图像)迁移至另外一张图像(内容图像),但是这所谓的另外一张图像只是在“风格”上与之前有所不同,图像的“内容”仍要与之前相同。Luan et al. and Gatys et al. 的工作都是利用VGGNet19作为该项任务的backbone,由于VGGNet19是一种近似“金字塔”型结构,所以随着卷积操作的加深,feature maps的感受野越来越大,提取到的图像特征从局部扩展到了全局。我们为了避免合成的图像过多地保留内容信息,选取VGGNet1

2021-05-07 15:41:56 5803 15

原创 某些场景下采用3x3的卷积or5x5的卷积

假设我们要进行一次卷积操作,输入feature maps的channel为64,输出feature maps的channel也要为64,那么对于555×\times×555和333×\times×333的卷积尺寸该怎么选择呢?答案如下图所示:即选择333×\times×333的卷积核对输入的feature maps做两次卷积而非用555×\times×555的卷积核对输入的feature maps做一次卷积。这样做的主要区别在于两点:1.参数量;2.感受野。kernel sizerecept

2021-05-06 16:16:55 361

原创 PyTorch:提取ResNet152线性层之前的CNN

很多情形下,我们需要拿在ImageNet上经过fine-tuning的ResNet来作为任务的backbone,通常我们只会选取预训练好的ResNet的CNN部分而非线性层,具体代码操作如下:import torchimport torch.nn as nnfrom torchvision import modelsclass ResNet152(nn.Module): def __init__(self, pretrained, path): super(ResNet15

2021-05-05 20:27:29 452 2

原创 Leetcode笔记2

题目:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例 1:输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]此题有很多解法,但个人认为利用位运算比较好理解。针对不同的示例,我们可以得出这样的结论,即若数组nums的长度为n,则其子集一共有2n^{n}n

2021-05-05 15:44:58 63

原创 ubuntu:wget提示无法建立SSL连接

在网址后面加上--no-check-certificate,例如:wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run --no-check-certificate原因:wget在使用https协议时会验证网站证书,而证书会经常失效,加上--no-check-certificate忽略验证证书的步骤。...

2021-04-29 22:19:59 4010 9

原创 低分辨率feature maps的上采样方法:pixelshuffle

pixelshuffle是一种对低分辨率特征图上采样的新思路,假设我们打算将H×\times×W×\times×C的特征图在长和宽的维度扩大rrr倍变成rrrH×\times×rrrW×\times×C,pixelshuffle的做法是通过深度为r2r^{2}r2C的卷积对H×\times×W×\times×C的特征图进行卷积操作得到H×\times×W×\times×r2r^{2}r2C的特征图,然后通过“周期洗牌”的方式将H×\times×W×\times×r2r^{2}r2C的特征图编排为rrrH×\

2021-04-29 10:53:36 2976 1

原创 git clone太慢的解决办法

在git.com后面加上git.com.cnpmjs.org,亲测有效!

2021-04-27 19:48:21 130

原创 Linux学习笔记(一)

1.打开终端的快捷键:ctrl+alt+t2.终端输入reboot系统重启3.cd ./文件夹名 从本地文件进入文件名所在目录4.cd .. 返回上一级目录5.cd ../文件夹名返回上一级目录再进入另一个文件夹中6.mkdir test创建名为test的目录,但是不能递归创建目录7.递归创建目录:mkdir -p test1/test2/test38.挂载:挂载的概念和为什么要挂载——Linux挂载详解 操作:mount /dev/hdc6 /mnt/hdc6 将/dev/hdc6挂载到/m

2021-04-27 16:22:18 129

原创 Leetcode笔记1

题目如下:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例2:输入:l1 = [0], l2 = [0]输出:[0]示例3:输入:l1 = [9,9,9,9,9,9,

2021-04-22 16:30:00 78 3

原创 c++实现选择排序

#include<iostream>using namespace std;template<class T>int getArrayLength(T& arr) { return sizeof(arr) / sizeof(arr[0]);}int main() { int a[]={ 32,18,20,58,10 }; int a_len = getArrayLength(a); int min, temp, index; for (int i =

2021-03-29 15:56:33 76

原创 目标识别网络Faster RCNN:Pytorch源码分析(二)

锚框(anchors)产生:感觉论文这块内容说的不太细致,只能深挖源码了~from __future__ import print_function# --------------------------------------------------------# Faster R-CNN# Copyright (c) 2015 Microsoft# Licensed under The MIT License [see LICENSE for details]# Written by Ro

2020-11-21 21:50:00 166

原创 目标识别网络Faster-RCNN:Pytorch源码分析(一)

Faster-RCNN base & Faster-RCNN top (除去RPN部分) :Github源码如下(vgg16.py):# --------------------------------------------------------# Tensorflow Faster R-CNN# Licensed under The MIT License [see LICENSE for details]# Written by Xinlei Chen# ------------

2020-11-21 11:20:28 383

原创 目标识别网络SSD:Pytorch源码分析(二)

1.先验框生成Github源码:from __future__ import divisionfrom math import sqrt as sqrtfrom itertools import product as productimport torchclass PriorBox(object): """Compute priorbox coordinates in center-offset form for each source feature map. ""

2020-11-20 10:25:44 255

原创 目标识别网络SSD:Pytorch源码分析(一)

1.IOU计算:先验框表示方式变换:(cx, cy, w, h) to (xmin, ymin, xmax, ymax):def point_form(boxes): """ Convert prior_boxes to (xmin, ymin, xmax, ymax) representation for comparison to point form ground truth data. Args: boxes: (tensor) center-size

2020-11-18 13:38:10 238

原创 【机器视觉】三维物体重建(一):fast角点检测

Edward Rosten & Tom Drummond于2006年提出的,通过机器学习与角点检测相互融合,实现快速高效检测角点。fast角点检测具体实现:该算法考虑以角点p为中心的圆,其边与图像像素点相交的像素位置,例如上图边所在的16个像素位置,如果存在一组n个连续的像素点其灰度值全部大于p点灰度值加上阈值或者全部小于p点灰度值减掉阈值,那么p即为角点。论文中n被设定为12,经过大量测试得出,因为n=12可以排除大量非角点。对于这16个像素位置,总共只有三种状态:或比p亮,或比p暗

2020-09-23 17:22:09 630

原创 cuda安装精简

使用torch的一定注意cuda版本必须要跟torch版本对应,网上好多网友写的博客都没提到,目前cuda官网的版本是11.0但是我当时在torch官网下载的是支持cuda10.2版本的torch。cuda 10.2 链接是cuda10.2版本的下载链接,下载之后按照提示步骤一步步安装即可非常简单。两种方法测试是否安装成功:1.进入cmd,输入nvcc -V,会出现cuda的版本号等相关信息。2.如果正在用torch的话,直接输torch.cuda.is_available(),如果返回True则

2020-09-06 17:44:10 1361

原创 torch的clamp和clamp_

torch.clamp(input, min, max, out=None)clamp:将张量中的每一个元素变为区间[min, max]之间的值。官方文档给出了一个分段函数用来对元素进行区间变化:举个栗子:而clamp和clamp_的区别就在于前者是值拷贝,并不改变x1本身,最终需要变量来接收,然而后者则直接改变x1自身的值。...

2020-09-03 08:36:49 939

原创 torch的mm和mul的区别

torch.mm是矩阵乘法,torch.mul是矩阵对应位置处元素相乘。

2020-09-03 07:55:55 311

原创 Jupyter NoteBook安装代码提示功能

在base环境依次输入以下四行命令:pip install jupyter_contrib_nbextensionsjupyter contrib nbextension install --userpip install jupyter_nbextensions_configuratorjupyter nbextensions_configurator enable --userpip建议加上镜像源安装完毕重新打开jupyter notebook,会发现根目录的标签栏多了一个Nbextens

2020-09-02 14:19:29 484

原创 【自然语言处理】gensim的word2vec

import jiebaimport gensimtext_path = "E://python/baiyexing.txt"stopwords_path = "E://python/stopwords.txt"with open(text_path) as f: text = [line.strip().split('\n') for line in f.readlines()]print(text)[[‘出了近铁布施站,沿着铁路径直向西。已经十月了,天气仍闷热难当,地面也很

2020-09-01 21:02:05 833

原创 【迁移学习】pytorch中如何加载已经训练好的模型

torchvision的models中包含很多用于图像分类、视频分类、目标检测等模型,例如vgg、resnet、inception v3等,我们既可以加载已经训练好的模型(预训练模型均是在ImageNet上进行训练的),也可以加载未经训练的模型,方法有两种,拿vgg来说:torchvision.models.vgg19(pretrained=False, progress=True, **kwargs)pretrained: 为True时,返回在ImageNet上的预训练模型。progress: 为

2020-08-22 19:45:58 3537

空空如也

空空如也

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

TA关注的人

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