人脸识别keras+opencv(二):遇到的问题

这里是接着上一篇博文写的。

1.dataSet, 建立一个用于存储和格式化读取训练数据的类。将数据集分开为train, test.建立标签。
因为借鉴的博客是theno做的backend。

#重新格式化和标准化
        # 本案例是基于thano的,如果基于tensorflow的backend需要进行修改
        X_train = X_train.reshape(X_train.shape[0], 1, self.img_size, self.img_size)/255.0
        X_test = X_test.reshape(X_test.shape[0], 1, self.img_size, self.img_size) / 255.0

直接run dataSet是没问题,但是当train_model 时就会出错。
这里写图片描述
把train_model里的loss改了,

#loss='categorical_crossentropy',  #你可以选用squared_hinge作为loss看看哪个好
#loss = 'sparse_categorical_crossentropy',
loss = 'squared_hinge',

这里写图片描述

准确率为1, 有点不理解,那篇图片博文并没有提到需要参入其他错误的图片。

2.train_model 就是建立神经网络,对图片进行训练。一开始run的时候出现错误,
但是他有提示怎么改。说是loss错了,具体我也没看懂,可能是我只用了自己的图片进行训练的吧。这个程序可以识别无数个人的。

#loss='categorical_crossentropy',  #你可以选用squared_hinge作为loss看看哪个好
            #loss = 'sparse_categorical_crossentropy',
            loss = 'squared_hinge',

3.test_model 就是测试一下刚才的model是否有用。可是怎么也跑不通。
这里写图片描述
test_onBatch缺少参数,也是没怎么看懂。这里的测试,既可以用一张图片去测试,也可以建立一个文件夹,里面包含多个子文件夹,读取里面的图片进行测试。
先搁置?????

4.read_camera, 读取摄像头,看里面的人是否是hansen。
一开始跑了半天没响应,就找了个读取摄像头程序测试一下,是否是摄像头的问题。


import cv2
print(1)

"""打开摄像头,按 q 拍照并保存"""
cap = cv2.VideoCapture(0)
while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.imwrite("E:\Anconda\openCV\pictures\test\hansen\ee.jpg", frame)
        break
cap.release()

但是他并没有保存图片,不是道为啥,????
后面再跑read_camera就没问题了。
能识别出hansen,

这里写图片描述
但是,实验室的小伙伴显示都是hansen, ,,,,啊啊啊啊啊啊啊啊啊,气死。

猜你喜欢

转载自blog.csdn.net/weixin_41376658/article/details/79463307