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

本文介绍了在使用Keras和OpenCV进行人脸识别时遇到的问题及解决方案。首先,通过实例说明了在处理图像时,读取图片的路径必须指向包含图片的最底层文件夹,而非含有子文件夹的目录。为解决此问题,需要将不同人的图片分别保存到单独的文件夹,然后将这些文件夹放入dataSet目录。此外,确保dataSet中每个类别的人脸图片数量相近,以避免训练时准确性显著下降。最后,提到了可能通过添加dropout层来提高模型的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天写到,实验室小伙伴也是显示Hansen,所以今天就在网上下载了李冰冰的图片,新建了一个label看看。
这是扣完脸之后的图片.这是直接运行pick_face的。

这里写图片描述
但是,如果运行read_img就会有问题。
这里写图片描述
进入不了for循环了,也就是读不了图片了。后发现可以进入for循环,但是if endwith 出错。
直接拿出这一小段程度进行测试。

"""test read_img.endwith  判断s文件夹中是否有带有endstring为后缀的文件"""
def endWith(s,*endstring):
    array = map(s.endswith,endstring)
    if True in array:
        return True
    else:
        return False

#if __name__ == '__main__':
import os
s = os.listdir('E:\Anconda\openCV\pictures\source')
print(s) #['Hansen', 'Libingbing']
for i in s:
    print(1)
    #i = os.path.join('E:\Anconda\openCV\pictures\source\\', i)
    if endWith(i,'.jpg','.jpey'):
        print (i ,)
        print(2)

几经调试发现, read_img 和 pick_face 只是做早期图片处理的工作,当单独测试时,里面路径只能是最底层的文件夹,这个文件夹路径进去就得是图片,不能是子文件夹,然后子文件夹是图片的形式,不然出错。结论:先手工将person1,的源文件放入,然后扣人脸,保存在一个文件夹1,然后person2扣完后保存到文件夹2.。再将文件夹1,文件夹2复制到dataSet里面。然后将dataSet这层目录放到read_data里面。
在rad_data里对上面的问题解决的一句代码:

child_path = os.path.join(path, child_dir)

只有这样才能将子文件的图片读出了。
2.还有一个问题, person1,和person2放入dataSet里的图片数量要想打不多,不然问题非常大。preson2比person1多一倍,去训练,此时accuracy降低到0.6左右,打开摄像头进行识别,都显示person2,跟比认不出person1。

3.对于准确率的问题,猜测还需要, 建立神经元的时候,还需dropout。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值