【人脸识别】【python】Object arrays cannot be loaded when allow_pickle=False解决方案

2020年2月11日 0次阅读 共1625个字 0条评论 0人点赞 QueenDekimZ
mtcnn debug

用mtcnn对LFW人脸数据集进行人脸检测与关键点对齐,并裁剪到160*160维,为后续facenet训练作training set。

python src/align/align_dataset_mtcnn.py lfw lfw_160 --image_size 160
–margin 32 --random_order --gpu_memory_fraction 0.25

报错:

Traceback (most recent call last):
File "src/align/align_dataset_mtcnn.py", line 159, in <module>
main(parse_arguments(sys.argv[1:]))
File "src/align/align_dataset_mtcnn.py", line 55, in main
pnet, rnet, onet = detect_face.create_mtcnn(sess, None)
File "D:\authentic_learningvideo\facenet-master\src\align\detect_face.py", line 283, in create_mtcnn
pnet.load(os.path.join(model_path, 'det1.npy'), sess)
File "D:\authentic_learningvideo\facenet-master\src\align\detect_face.py", line 85, in load
data_dict = np.load(data_path, encoding='latin1').item() #pylint: disable=no-member
File "D:\CODE_TOOLS\VisualStudio\shared\Anaconda3_64\envs\tflearn-gpu\lib\site-packages\numpy\lib\npyio.py", line 453, in load
pickle_kwargs=pickle_kwargs)
File "D:\CODE_TOOLS\VisualStudio\shared\Anaconda3_64\envs\tflearn-gpu\lib\site-packages\numpy\lib\format.py", line 739, in read_array
raise ValueError("Object arrays cannot be loaded when "
ValueError: Object arrays cannot be loaded when allow_pickle=False

原因是自Numpy 1.16.3版本发行之后,函数 numpy.load() 和 numpy.lib.format.read_array() 采用allow_pickle关键字,现在默认为False以响应CVE-2019-6446 < nvd.nist.gov/vuln/detail / CVE-2019-6446 >。

网上论坛解决方案一般是通过pip install numpy==1.16.2来回退numpy版本,不过这样可能会造成环境版本不稳定。

我发现了另一种简便的解决方案:

  1. 找到所在出错.py文件中的所在行,我这里是File
    “D:\authentic_learningvideo\facenet-master\src\align\detect_face.py”,
    line 85;
  2. 将np.load(path) 改为np.load(path,
    allow_pickle=True),我这里是将np.load(data_path,
    encoding=‘latin1’)改为np.load(data_path, encoding=‘latin1’,
    allow_pickle=True)
  3. 保存,重新运行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值