一. 理解keras的配置+图片转换为矩阵
在搭建自己的网络之前,我们首先看一下keras.json 这一个文件。
1. 理解keras.json 文件
当你导入keras库的时候,keras会产生一个keras.json 文件,打开它(如果找不到就在安装keras库里面搜索)
打开之后是这样的:
{
"epsilon": 1e-07,
"floatx": "float32",
"image_data_format": "channels_last",
"backend": "tensorflow"
}
在里面,你可以看到四个重要的参数,我们一一说一下它的作用。
(1) epsilon: 防止作除法时,分母为0
(2)float32:定义精度
(3) backend:keras库使用tensorflow作为后端,你也可以使用theano作为后端,将其改为theano
(4) image_data_format: 这个非常重要,这个值有两个类型:channels_last 和channels_first
在opencv中,我们知道也是(rows,columns,channels), 即channels_last类型。
但是在theano的设定中是channel_first的设定。
2. 导入图片, 并将图片转换为矩阵处理(有很多程序,不过一劳永逸,保存为package)
将一个project保存为这样的形式,我们一步一步往里面加东西
|--- pyimagesearch
| |--- __init__.py
| |--- datasets
| | |--- __init__.py
| | |--- SimpleDatasetLoader.py #根据类名大写
| |--- preprocessing
| | |--- __init__.py
| | |--- ImageToArrayPreprocessor.py #根据类名大写
| | |--- SimplePreprocessor.py
关于init文件,都是空的,不过必须要建立起作用。
第一步,打开preprocessing文件夹里面的
ImageToArrayPreprocessor.py
添加程序如下,这一步主要是将图片转换成矩阵的形式:
from keras.preprocessing.image import img_to_array
class ImageToArrayPreprocessor:
def __init__(self,dataFormat=None):
self.dataFormat=dataFormat
def preprocess(self,image):
return img_to_array(image,data_format=self.dataFormat)
第二步,打开preprocessing文件夹里面的
SimplePreprocessor.py
添加程序如下,这一步主要是可以rezise图片到你自己想要的大小