目录

  • 基于TensorFlow开发的库Keras,Tflearn,TensorLayer
  • opencv版本问题
  • anaconda创建虚拟环境
  • 人脸检测参数
  • save的用法
  • cv2.imread()
  • cv2.putText()
  • cv2.boundingRect(img)
  • cv2.rectangle()
  • shape() , reshape()
  • lrn(局部响应归一化)
  • tf.truncated_normal(shape, mean, stddev)
  • os.listdir()
  • json
  • array asarray
  • np.arange


基于TensorFlow开发的库Keras,Tflearn,TensorLayer

TensorLayer:是16年中发布的,相对较晚但也较为先进。它的优点是速度最快,速度和完全用 TensorFlow 写的代码一样。

同时提供傻瓜式编程方法,和专业级编程方法。参考:tutorial_mnist_simple.py tutorial_mnist.py

提供很多高级功能,适合分布式和嵌入式应用,如:variable reuse ,same model to npz file,GPU manager 等等。

提供大量官方教程,包含了 TensorFlow 官方所有深度学习教程的模块化实现,集合教学和编程于一体。

有中英文文档。

opencv版本问题

在执行cv2.cv.CV_HAAR_SCALE_IMAGE时,如果是opencv3.0以上版本的话,是没有’cv’这个模块的,要换成:cv2.CASCADE_SCALE_IMAGE即可
补充:
(1) cv2.cv.CV_FOURCC()变为cv2.VideoWriter_fourcc()

anaconda创建虚拟环境

# 基于 python3.6 创建一个名为test_py3 的环境
 
conda create -n test_py3 pip python=3.6 
 
# 基于 python2.7 创建一个名为test_py2 的环境
 
conda create -n test_py2 pip python=2.7
 
# 激活 test 环境
 
activate test_py2 # windows
 
source activate test_py2 # linux/mac

# 退出虚拟环境

conda deactivate test_py3

在创建的虚拟环境中安装包 pip 或者conda

# 安装 matplotlib 
 
conda install matplotlib
 
# 查看已安装的包
 
conda list 
 
# 包更新
 
conda update matplotlib
 
# 删除包
 
conda remove matplotlib

Anaconda 的镜像地址默认在国外,用 conda 安装包的时候会很慢,目前可用的国内镜像源地址是清华大学提供的。修改 ~/.condarc (Linux/Mac) 或 C:\Users\当前用户名.condarc (Windows) 配置

channels:
 
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
 
- defaults
 
show_channel_urls: true

除此之外,你也可以把 pip 的镜像源地址也换成国内的,豆瓣源速度比较快。修改 ~/.pip/pip.conf (Linux/Mac) 或 C:\Users\当前用户名\pip\pip.ini (Windows) 配置:

[global]
 
trusted-host = pypi.douban.com
 
index-url = http://pypi.douban.com/simple

虚拟环境下安装tensorflow(cuda=9.0)

(tensorFlow)$ pip install --upgrade tensorflow  # for python 2.7 
(tensorFlow)$ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade tensorflow  # for python 3.n
(tensorFlow)$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade tensorflow-gpu==1.11  # for python 2.7 with GPU
(tensorFlow)$ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade tensorflow-gpu==1.11  # for Python 3.n with GPU


人脸检测参数

detectMultiScale有6个参数。

参数1:image–待检测图片,一般为灰度图像

参数2:scaleFactor–表示在前后两次相继的扫描中,搜索窗口的比例系数也就是每次跌代时图像的压缩率。

参数3:minNeighbors–每个人矩形保留近邻数目的最小值。

参数4: flags–要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为 CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域

参数5、6: minSize和maxSize用来限制得到的目标区域的范围。

sum=add(sum,x,y)时由于等号右边的递归使得程序一直在计算,sum并未被赋值,进而下面的
return sum并未执行,所以只有一个返回值。

image = cv2.resize(image, (48, 48), interpolation=cv2.INTER_CUBIC)

缩放有几种不同的插值(interpolation)方法,在缩小时推荐cv2.INTER_ARER,扩大是推荐cv2.INTER_CUBIC和cv2.INTER_LINEAR。默认都是cv2.INTER_LINEAR。

save的用法

训练阶段:
使用saver.save()方法保存模型:
1)sess:表示当前会话,当前会话记录了当前的变量值
2)checkpoint_dir + ‘model.ckpt’:表示存储的文件名
3)global_step:表示当前是第几步
测试阶段:
使用saver.restore()方法恢复变量:
sess:表示当前会话,之前保存的结果将被加载入这个会话
ckpt.model_checkpoint_path:表示模型存储的位置,不需要提供模型的名字,它会去查看checkpoint文件,看看最新的是谁,叫做什么。

cv2.imread()

img1=cv2.imread("test.jpg",0) #以灰度格式读入图片
img1=cv2.imread("test.jpg",-1) #以RGB格式读入图片

注:第二个参数小于0,均为读入彩色图片;当大于0时,交替表示读入彩色or灰度图

cv2.putText()

cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)
各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细

cv2.boundingRect(img)

返回四个值,分别是x,y,w,h: x,y是矩阵左上点的坐标,w,h是矩阵的宽和高

cv2.rectangle()

cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)画出矩形

参数解释

第一个参数:img是原图

第二个参数:(x,y)是矩阵的左上点坐标

第三个参数:(x+w,y+h)是矩阵的右下点坐标

第四个参数:(0,255,0)是画线对应的rgb颜色

第五个参数:2是所画的线的宽度

shape() , reshape()

import numpy as np
a=np.array([[[1,1],[2,2],[3,3]],[[4,4],[5,5],[6,6]]])
print(a.shape) #result:(2,3,2) 分别对应一个立方体的宽、高、长
print(a.reshape(3,-1))
#result:
# [[1 1 2 2]
#  [3 3 4 4]
#  [5 5 6 6]]

tf.reshape(-1,48,48,1)
-1表示任意数量的样本数,大小为28x28深度为1的张量
可以忽略(其实是用深度为28的,28x1的张量,来表示28x28深度为1的张量)

lrn(局部响应归一化)

在每一层卷积神经网络的池化之后增加一层lrn层,有利于训练准确度的提升

tf.truncated_normal(shape, mean, stddev)

tf.truncated_normal(shape, mean, stddev) :shape表示生成张量的维度,mean是均值,stddev是标准差。这个函数产生正态分布,均值和标准差自己设定。这是一个截断的产生正态分布的函数,就是说产生正态分布的值如果与均值的差值大于两倍的标准差,那就重新生成。和一般的正态分布的产生随机数据比起来,这个函数产生的随机数与均值的差距不会超过两倍的标准差,但是一般的别的函数是可能的。

os.listdir()

os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 ‘.’ 和’…’ 即使它在文件夹中。

json

常用有 json-py 与smiplejson 两个包

  1. json-py: json-py 包含json.py外,还有一个minjson
import json 
json.read( json_obj )# Converting JSON to Python
json.write(python_obj)# Converting Python to JSON
import minjson
minjson.read( json_obj )#同上
minjson.write(python_obj)
  1. simplejson
import json
json.loads(json_obj)   # Converting JSON to Python
json.dumps(python_obj)# Converting Python to JSON

array asarray

import numpy as np
# 将list转换为ndarray
a = [1, 2]
print(np.asarray(a))    # [1, 2]

# 如果对象本身即为ndarray,且不改变dtype,则不会copy之
a = np.array([1, 2])
print(np.asarray(a) is a)    # True

# 如果对象本身即为ndarray,且改变dtype,则还是会copy之
a = np.array([1, 2], dtype=np.float32)
print(np.asarray(a, dtype=np.float32) is a)    # True
print(np.asarray(a, dtype=np.float64) is a)    # False

np.arange

返回值: np.arange()函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。