您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

pytorch代码学习1

这篇文章所写的内容主要是基于Context-Aware_Crowd_Counting-pytorch
的代码写的
1.在深度学习领域,会训练出一个模型,在使用训练好的模型时,其中有一种保存的模型文件格式叫.npy

2.os.path.join()函数:连接两个或更多的路径名组件

               1.如果各组件名首字母不包含’/’,则函数会自动加上

         2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃

         3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾

3.np.newaxis的作用是增加一个维度。

4.cv2.resize()

import cv2 as cv
  

# 读入原图片

img = cv.imread('test.jpg')

# 打印出图片尺寸

print(img.shape)

# 将图片高和宽分别赋值给x,y

x, y = img.shape[0:2]
  

# 显示原图

cv.imshow('OriginalPicture', img)
  

# 缩放到原来的二分之一,输出尺寸格式为(宽,高)

img_test1 = cv.resize(img, (int(y / 2), int(x / 2)))

cv.imshow('resize0', img_test1)

cv.waitKey()

# 最近邻插值法缩放

# 缩放到原来的四分之一

img_test2 = cv.resize(img, (0, 0), fx=0.25, fy=0.25, interpolation=cv.INTER_NEAREST)

cv.imshow('resize1', img_test2)

cv.waitKey()

cv.destroyAllWindows()

my_dataset.py中

if self.gt_downsample>1: # to downsample image and density-map to match deep-model.
    ds_rows=int(img.shape[0]//self.gt_downsample)
    ds_cols=int(img.shape[1]//self.gt_downsample)
    #ds_cols*self.gt_downsample,ds_rows*self.gt_downsample为缩放系数
    img = cv2.resize(img,(ds_cols*self.gt_downsample,ds_rows*self.gt_downsample))
    img=img.transpose((2,0,1)) # convert to order (channel,rows,cols)
    gt_dmap=cv2.resize(gt_dmap,(ds_cols,ds_rows))
    gt_dmap=gt_dmap[np.newaxis,:,:]*self.gt_downsample*self.gt_downsample

    img_tensor=torch.tensor(img,dtype=torch.float)
    img_tensor=transforms.functional.normalize(img_tensor,mean=[0.485, 0.456, 0.406],
                             std=[0.229, 0.224, 0.225])
    gt_dmap_tensor=torch.tensor(gt_dmap,dtype=torch.float)

不太理解,这个downsample

img = cv2.resize(img,(ds_colsself.gt_downsample,ds_rowsself.gt_downsample))为什么这么操作。

pytorch visdom

使用Visdom进行可视化

vis.line(…)#画折线图

vis.image(…)#可视化其中的一幅图像

函数功能: 匹配所有的符合条件的文件,并将其以list的形式返回。

glob.glob函数:

glob模块被用来查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。glob.glob函数的参数是字符串,查找文件只用到三个匹配符:"", “?”, “[ ]”。其中,"“表示匹配任意字符串,”?" 匹配任意单个字符, “[ ]” 匹配指定范围内的字符,如:[0-9] 与 [a-z] 表示匹配 0-9 的单个数字与 a-z 的单个字符。

import glob

#获取指定目录下的所有图片
print(glob.glob(r"C:/Users/zhf/Desktop/flower/flower_photos/daisy/*.jpg"))

python replace()方法

Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

语法:str.replace(old, new[, max])
old -- 将被替换的子字符串。
new -- 新字符串,用于替换old子字符串。
max -- 可选字符串, 替换不超过 max

io.loadmat

mat=io.loadmat(img_path.replace('.jpg','.mat').replace('images','ground_truth').replace('IMG_','GT_IMG_'))
#下面是mat的格式内容。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTBCCAVd-1622548469169)(C:\Users\haojie\AppData\Roaming\Typora\typora-user-images\image-20210601150952140.png)]

mat_dict:字典
以变量名作为键,并以加载的矩阵作为值的字典。

eg1:
>>> sorted(mat_contents.keys())
['__globals__', '__header__', '__version__', 'testdouble']
>>> mat_contents['testdouble']
array([[0.        , 0.78539816, 1.57079633, 2.35619449, 3.14159265,
        3.92699082, 4.71238898, 5.49778714, 6.28318531]])

eg2:
>>> matstruct_fname = pjoin(data_dir, 'teststruct_7.4_GLNX86.mat')
>>> matstruct_contents = sio.loadmat(matstruct_fname)
>>> teststruct = matstruct_contents['teststruct']
>>> teststruct.dtype
dtype([('stringfield', 'O'), ('doublefield', 'O'), ('complexfield', 'O')])

dirname命令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。 语法:dirname [选项] 参数

>>> from scipy import spatial
>>> x, y = np.mgrid[0:5, 2:8]
>>> tree = spatial.KDTree(list(zip(x.ravel(), y.ravel())))
>>> tree.data
array([[0, 2],
       [0, 3],
       [0, 4],
       [0, 5],
       [0, 6],
       [0, 7],
       [1, 2],
       [1, 3],
       [1, 4],
       [1, 5],
       [1, 6],
       [1, 7],
       [2, 2],
       [2, 3],
       [2, 4],
       [2, 5],
       [2, 6],
       [2, 7],
       [3, 2],
       [3, 3],
       [3, 4],
       [3, 5],
       [3, 6],
       [3, 7],
       [4, 2],
       [4, 3],
       [4, 4],
       [4, 5],
       [4, 6],
       [4, 7]])
>>> pts = np.array([[0, 0], [2.1, 2.9]])
>>> tree.query(pts)
(array([ 2.        ,  0.14142136]), array([ 0, 13]))
返回值是:离查询点最近的两个点的距离和相应的索引。(array([ 2. , 0.14142136])是距离,array([ 0, 13]))是索引。

python报错:‘list’ object has no attribute ‘shape’

如何做呢:np.shape(list)这样就可以了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqVTMA9a-1622548469170)(C:\Users\haojie\AppData\Roaming\Typora\typora-user-images\image-20210601194149168.png)]

import numpy as np
a = np.array([np.arange(12),np.arange(12,24)])
>>>print a
[[ 0 1 2 3 4 5 6 7 8 9 10 11]
 [12 13 14 15 16 17 18 19 20 21 22 23]]

>>>print a[0][6]
6

>>>print a[0,6]
6

np.random.random((100, 50))
#上方代表生成100行 50列的随机浮点数,浮点数范围 : (0,1)



分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进