0%

2019-10-9随记

python异常机制
numpy中的ndim / shape/ dtype/ astype方法
  • ndim 返回数组维度(int)
  • shape 返回各维度大小的元组(元组)
  • dtype 返回该数组的数据类型(整型返回int32,有小数点返回float64)
  • astype 转换数组的数据类型
    • int32 —> float64
    • float64 —> int32 小数部分被截断
    • string —> float64 如果字符串数组表示的全是数字,也可以用astype转化为数值类型
numpy.transpose(a, axes=None)
  • 重置数组的维度
  • 参数:a<输入数组>;axes<整数列表>默认情况下,反转维度,否则根据给定的值对维度进行排列。
  • 返回值:修改维度后的a
PIL.Imagenumpy.array之间的相互转换
1
2
3
4
5
6
from PIL import Image

image = Image.open('path/to/image')
img = numpy.array(image)
# 图像处理
image = Image.fromarray(img.astype('uint8')).convert('RGB')
array[::-1,:,:] 逆序
numpy.flatten(): 多维数组变成一维数组
numpy.mean(array, axes)
中心化与标准化
  • 中心化(又叫零均值化)zero-centered 或者 Mean-subtraction
  • 标准化(又叫归一化)Standardization 或者 Normalization
    • 意义:数据中心化和标准化在回归分析中是取消由于量纲不同、自身变异或者数值相差较大所引起的误差。
    • 原理
      • 数据标准化是指变量减去均值,再除以标准差
      • 数据中心化是指变量减去均值
    • 目的:通过中心化和标准化处理,得到均值为0,标准差为1的服从标准正态分布的数据。在训练神经网络的过程中,通过将数据标准化,能够加速权重参数的收敛;对数据进行中心化预处理,能够增加基向量的正交性
1
2
3
4
5
mean = np.array([np.mean(image[0]),np.mean(image[1]),np.mean(image[2])])

std = np.array([np.std(image[0],ddof=1),np.std(image[1],ddof=1),np.std(image[2],ddof=1)])

np.std(array, ddof=1) # 最后的参数一定要加!!!
  • caffe与PyTorch的图像预处理不同。caffe2中图像的通道与OpenCV相同,是BGR格式,标准化到0-255,PyTorch中图像是RGB格式,标准化到0-1。
numpy.random.get_state() & numpy.random.set_state()
  • 功能:获取/设置随机生成器np.random的状态
  • 作用:具有相同state的随机生成器(random)的随机效果相同。随机生成器random,每执行一次,random的状态(state)就会变化一次,所以每次产生的随机数都不同,或随机操作的效果都不同。而当random的状态(state)不变时,多次执行random的同一操作具有相同的效果。
  • 用途:
    • 通过设置相同的state,使得两次生成的随机数相同
    • 通过设置相同的state,使得random.shuffle以相同的规律打乱两个列表,进而使得两个列表被打乱后,仍旧能维持两个列表间元素的一一对应关系。这一点在深度学习的标注数据集的打乱的过程中很有用。一一对应的image_list 与label_list,在分别打乱后,仍能维持一一对应的关系。
1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np

images_list=[1,2,3,4,5,6,7,8,9]
labels_list=[1,2,3,4,5,6,7,8,9]

state = np.random.get_state()
np.random.shuffle(images_list)
np.random.set_state(state)
np.random.shuffle(labels_list)

print(images_list)
print(labels_list)
cv::RotatedRect

这是一个存储旋转矩形的类,通常用来存储最小外接矩形函数minAreaRect()和椭圆拟合函数fitEllipse()返回的结果。它具有三个属性:

  • 矩形中心(质心):const Point2f &center
  • 边长(长和宽):const Size2f &size
  • 旋转角度:float angle

参数angle从平行于x轴射线出发,逆时针为负,顺时针为正。逆时针旋转碰到的第一条边的边长即为width