ValueError:min_faces_per_person = 70限制性太强

时间:2017-08-15 14:19:09

标签: python scikit-learn svm python-3.6 face-recognition

我在官方scikit-learn网站上练习使用特征脸和SVM的面部识别示例

http://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py

但是当我在这里跑:

from __future__ import print_function

from time import time
import logging
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import fetch_lfw_people
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import PCA
from sklearn.svm import SVC


print(__doc__)

# Display progress logs on stdout
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s')


# #############################################################################
# Download the data, if not already on disk and load it as numpy arrays

lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)

但我收到的错误告诉我:

Traceback (most recent call last):
  File "D:\神经网络与深度学习\麦子学院-深度学习\(Part One)深度学习基础\代码与素材
\代码与素材(1)\03SVM\plot_face_recognition.py", line 54, in <module>
    lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
  File "D:\Program Files\Python36\lib\site-packages\sklearn\datasets\lfw.py", line 335, in fetch_lfw_people
    min_faces_per_person=min_faces_per_person, color=color, slice_=slice_)
  File "D:\Program Files\Python36\lib\site-packages\sklearn\externals\joblib\memory.py", line 562, in __call__
    return self._cached_call(args, kwargs)[0]
  File "D:\Program Files\Python36\lib\site-packages\sklearn\externals\joblib\memory.py", line 510, in _cached_call
    out, metadata = self.call(*args, **kwargs)
  File "D:\Program Files\Python36\lib\site-packages\sklearn\externals\joblib\memory.py", line 744, in call
    output = self.func(*args, **kwargs)
  File "D:\Program Files\Python36\lib\site-packages\sklearn\datasets\lfw.py", line 231, in _fetch_lfw_people
    min_faces_per_person)
ValueError: min_faces_per_person=70 is too restrictive

我不明白为什么?我的python版本是3.6.2,scikit-learn版本是v0.19.0

3 个答案:

答案 0 :(得分:0)

此错误消息是红色鲱鱼:

ValueError: min_faces_per_person=70 is too restrictive

您的堆栈跟踪显示此错误来自... sklearn \ datasets \ lfw.py&#34;,第231行,_fetch_lfw_people

查看_fetch_lfw_people中的代码,它会显示何时生成此错误

n_faces = len(file_paths)
if n_faces == 0:
    raise ValueError("min_faces_per_person=%d is too restrictive" %
                     min_faces_per_person)

如果找不到要处理的任何(图像)文件,就会发生这种情况。

当我在互联网代理服务器后面时出现此错误,这个Python代码不会为我下载该文件。

为了解决这个问题,我手动下载了这5个文件并将其放在〜/ scikit_learn_data / lfw_home文件夹中。您可以通过查找RemoteFileMetadata(在lfw.py。

中找到这些URL)
https://ndownloader.figshare.com/files/5976018 #lfw.tgz
https://ndownloader.figshare.com/files/5976015 #lfw-funneled.tgz
https://ndownloader.figshare.com/files/5976012 #pairsDevTrain.txt
https://ndownloader.figshare.com/files/5976009 #pairsDevTest.txt
https://ndownloader.figshare.com/files/5976006 #pairs.txt

请记得在2个tgz文件上运行tar -xvf来提取图像文件。

答案 1 :(得分:0)

答案:Click on Factory Reset Runtime

  1. 点击恢复出厂设置运行时间
  2. 运行所有单元格

那么错误就解决了。

原因: 由于您的 Internet 连接性较低,运行时无法正常工作。这就是为什么您必须出厂重置运行时并执行所有单元。 它对我有用,错误消失了,然后数据集被下载了。

Importing

答案 2 :(得分:-1)

我也遇到了这个例外。我发现它可能是因为你运行了这个python程序,但是当它运行并下载数据时,你就会破坏它,并且已经完成了这个目录。

我通过删除maden dir.Its route:~/scikit_learn_data/lfw_home.

解决了这个问题

删除dir lfw_funneled和lfw-funneled.tgz,然后再次运行程序,数据将再次下载。