Python类和包的介绍

一:
## argparse:

参考:https://blog.csdn.net/yy_diego/article/details/82851661?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control
argparse是处理命令行操作参数。先创建一个对象;再向对象中参加参数,每个参数有对应的名字和默认值; 最后利用该对象的名字可以进行调用该参数值;

二:
## yaml文件:

参考:https://cloud.tencent.com/developer/article/1569879
yaml是一种直观的能够被电脑识别的的数据序列化格式;首先打开该yaml文件,f = open(’.yaml’);再生成该yaml对象 yaml.load(f); 最后我们可以输出该对象的所有数据内容(输出的数据是一个字典)
我们也可以用yaml.dump(传入字典数据),将该字典变成yaml数据

三:

pkl文件:

pkl文件和yaml文件都是用来存储数据的,目的都是为了将文件转换为字典然后进行调用数据; 先打开该文件,然后创建该文件的对象将该文件转换为字典 ;然后用dict.get(key,无key的默认值)方法来获取该键对应的内容。

四:

numpy函数:

1 、np.astype(np.long):
解析: 是用来强制性更改数据类型的;

2、np.concatenate(np1, np2 , axis =0/1) :
解析:是用来连接两个numpy的函数;若axis = 1,则对两个数组的行进行连接;若axis=0 ,则对两个数组的列进行连接

3、np.linalg.norm(x , ord , axis):
解析:用来求矩阵numpy x的范数的; ord =2 ,则求第二范数;axis =0 ,则代表对每个行向量求范数,axis =1,则代表对每个列向量求范数

4、numpy.flatten():
解析:将numpy变成一维的;

5、np.array([ 2, 3] , [4 , 5] ) ,生成一个二维数组 ;

6、np.random.rand(3 ,2)生成一个3x2列的随机numpy

7、np.shape 查看维度 ; np . reshape(-1 , 1)是调整维度,-1是自动调整,1代表有1列

8、查看list维度的方法:
现将其转变成numpy,然后在查看其维度
np.array(list).shape;

9:numpy.T : 将numpy的行列倒置;

10:numpy.zero_like(a) :产生一个和a维度一样大小的全0numpy

11:numpy.repeat(np_a , time , axis)
解析:将np_a进行复制time次数,若axis=none ,则按照从行到列复制每个元素,然后在展平该数组 ; 若axis=0;则按照列的顺序,将每个元素复制time次数; 若axis=1,则按照行的顺序,将每个元素复制time次 ;

numpy.round(float , x) ; 返回float的保留两位的四舍五入值 ;

numpy.clip(x , min ,max)#将Numpy x的值控制在min-max之间 ;小于min的值固定在min ;大于Max的值固定在max 中 ;

五:

getattr( )

getattr(obj , 该对象的属性名),作用是获得该对象的属性值;

六:

pth文件

1:pth文件是用来存储模型的;接下来我们讲解如何获取该模型;
2:直接加载 .pth文件得到模型: model = torch.load(‘文件名’)
3:此时该model就是一个字典,共含有4个键值 对,model,optimizer,scheduler,iteration; 其中每个键对应的值依然可能是字典;可能会有多层的字典叠加;
4:详情参考:https://zhuanlan.zhihu.com/p/84797438
5:注意Ubuntu要把内核更新关上,否则一旦进行自动更新,NVIDIA驱动程序和内核的兼容性就会发生错误;此时NVIDIA就会错误。

七:

state_dict():

1 : model.state_dict(): 返回的是该模型的字典;字典的key是模型参数名,字典的value是模型参数名对应的参数值;
2:model.load_stat_dict(mode_dict) : 将该字典的参数复制到model中;这是更改模型参数名对应的参数值时的必须操作;

八:

torch.backends.cudnn.benchmark = true 代表gpu运行时自动为网络提速;

九:

cv.imread(.png)

1: 读取图片,将图片数据变成tensor,读取后的数据是[h , w, channel ];注意区分transform.Totensor(PIL),将PIL类型的图片变成tensor ; 此时维度是[channel , h , w ]
2:cv2.imshow(tensor),是显示该图片;

十:

cv.resize()

进行缩放图片; img = cv.resize(img_resize , 缩放的大小 , interplation缩放的方式)

十一:

for _ in zip(numpy_a numpy_b)

这是实现并行遍历的 ;

十二:

matplotlib.pyplot as plt 的运用

1 : plt . figure(num=None, figsize=None)
解析:num是图片的编号或者名称 ; figsize(x , y)是定义输出图片的大小 ;
2:plt.imshow( x)
解析:imshow方法首先将二维数组的值标准化为0到1之间的值,然后根据指定的渐变色依次赋予每个单元格对应的颜色,就形成了热图;热图是并不显示的,只有调用plt.show()才会显示 ; 其中参数x的维度可以是一维的数组,也可以是三维的数组;
3:fig , axes = plt.subplots(2 ,3 )
解析: 创建一个23维的窗口 ;然后在这些子窗口中插入图片;
4:ax1 = plt. add_subplot(2,3,1)
解析:向2
3维的窗口中的第一个格子添加图片;其中ax1也可以代表这个图片;即ax1可以单独加进网格中
5:plt.subplots_adjust(left , right , top , botomm ,wspace , hspace )
解析:前面调整子图的位置 ; wspace是子图宽之间的距离, hspace 是子图高之间的距离;
6:plt.plot(x , y ):
解析:生成坐标点,其中x和y是两个列表;从而生成坐标点!!
7:plt.axis(‘off’):
解析:axis是关于坐标系的配置问题;在显示的图片上不显示坐标系;若用plt.axis([0 ,10 , 1 ,15])则是定义x轴的坐标系是0-10 , y轴的坐标系是1- 15。
8:plt.savefig(path):
解析:保存图片到指定的文件下

十三:

lambda函数

lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
pl:
a = lambda x , y ,z :x+y+z, 则print(a(2,3,4))的值就是9

十四:

list列表的详细说明

首先a 的维度是[3 , 100]

1、list a[0 , x::y]
解析:这是代表在第0行从x开始,每隔y进行隔开取数; 代表在第0行开始进行隔空取数;

2、list a [0 , x:y ]
解析:这是代表在第0行, 在x-y范围中进行取数;

3、list a [0 , 3]
解析:这是代表在第0行,取第三个数;

十六:
torch的用法

torch.cat(tensor1,tensor2 , dim)
解析:若dim=1,则按照行进行连接;若dim = 0 ,则按照列进行连接;

numpy.transform(0 ,2 ,1 )是转换维度的意思;

torch.squeeze(0) :删除第一个维度
torch.unsqueeze(0):在第一个维度前插入一个维度

a = torch.from_numpy(numpy) :
解析:将numpy变成一个tensor,且tensor和numpy共用一个内存空间,改变其中一个数据会改变其他的数据;

isinstance(obj1 , obj2) 是用来判断两个对象的type是否相同的;

十七:

Cv2.addWeighted()

解析:图像融合与叠加方法 ; 将两个图片按照一定的权重进行叠加和融合;参数为cv2.addWeighted(img1 , w1 , img2 , w2 )

cv.add(img1 , img2) ; 将两个图片numpy直接进行相加;

cv2.circle(img , (元组表示圆心) , 半径 , 颜色):
用来画圆圈的 ;

cv2.line(img , top_left , right_left , color , size ):是在img图上画直线的 ;

十八:

.npy文件

npy文件就是存储numpy的文件 ;
用np.save(“path” , arr)来保存numpy
用np.load(arr)来获得该numpy

十九:

.mat文件

.mat,yaml , pkl文件都是用来存储数据的; 目的也是将其变成字典;然后利用方法进行调用 ;
用scipy包来读取.mat文件,获得的是一个字典 ;即
dict = scipy.loadmat(".mat_pth")

二十:

用Python处理视频时,必须安装imagio-ffmpeg ;不安装时,Python是不可以处理视频数据的 ;pip install imagio-ffmpeg ;

str.split(’ , ‘):按照’,'进行分割字符串,返回的是一个字符串数组 ; [ -1]是代表取该字符串数组的最后一个数据;
https://blog.csdn.net/Anymake_ren/article/details/78753707

from tqdm import tqdm 的用法:
for i in tqdm(是个列表或者是个iterator迭代器) ; 目的就是在迭代的时候生成一个进度条,并显示出来该进度条 ;

二十一:

关于3DMM的说明

对于三维重建问题 , 得到3DMM的参数 和 bfm模型的数据库中的数据时,我们便可以利用公式重建出三维人脸模型了 ;

关于人脸盒子的说明:人脸盒子就是由四条直线组成的一个方圈,我们可以用
cv2.line(img , tuple(x , y ) , tuple(x , y))来画出直线,其中tuple是直线两个定点的坐标 ;

关于plt.imshow(numpy_image)的说明:生成一个热图,方便在该图上添加东西,但并不显示该图,需要调用plt.show()才会显示该图;其中x是个二维的Numpy,会自动的为其中的每个数值赋予一个颜色代码,若干个颜色组成了一张照片;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值