目录
- 基于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 两个包
- 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)
- 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)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。