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版本,不过这样可能会造成环境版本不稳定。
我发现了另一种简便的解决方案:
- 找到所在出错.py文件中的所在行,我这里是File
“D:\authentic_learningvideo\facenet-master\src\align\detect_face.py”,
line 85;
- 将np.load(path) 改为np.load(path,
allow_pickle=True),我这里是将np.load(data_path,
encoding=‘latin1’)改为np.load(data_path, encoding=‘latin1’,
allow_pickle=True)
- 保存,重新运行。