MagicMirror² v2.8.0 is available! For more information about this release, check out this topic.

Error MMM-Facial-Recognition



  • I tried to run MMM-Facial-Recognition, but it was blocked at this point.

    0_1557156588303_error.png

    Whoops! There was an uncaught exception...
    { Error: KeyError: '/home/pi/MagicMirror/modules/MMM-Facial-Recognition-Tools/training.xml'
        at PythonShell.parseError (/home/pi/MagicMirror/modules/MMM-Facial-Recognition/node_modules/python-shell/index.js:246:21)
        at terminateIfNeeded (/home/pi/MagicMirror/modules/MMM-Facial-Recognition/node_modules/python-shell/index.js:129:32)
        at ChildProcess. (/home/pi/MagicMirror/modules/MMM-Facial-Recognition/node_modules/python-shell/index.js:121:13)
        at ChildProcess.emit (events.js:182:13)
        at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12)
        ----- Python Traceback -----
        File "modules/MMM-Facial-Recognition/facerecognition/facerecognition.py", line 59, in 
          model.read(config.get("/home/pi/MagicMirror/modules/MMM-Facial-Recognition-Tools/training.xml"))
        File "/home/pi/MagicMirror/modules/MMM-Facial-Recognition/facerecognition/config.py", line 55, in get
          return CONFIG[key]
      traceback:
       'Traceback (most recent call last):\n  File "modules/MMM-Facial-Recognition/facerecognition/facerecognition.py", line 59, in \n    model.read(config.get("/home/pi/MagicMirror/modules/MMM-Facial-Recognition-Tools/training.xml"))\n  File "/home/pi/MagicMirror/modules/MMM-Facial-Recognition/facerecognition/config.py", line 55, in get\n    return CONFIG[key]\nKeyError: \'/home/pi/MagicMirror/modules/MMM-Facial-Recognition-Tools/training.xml\'\n',
      executable: 'python',
      options: null,
      script:
       'modules/MMM-Facial-Recognition/facerecognition/facerecognition.py',
      args: null,
      exitCode: 1 }
    MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
    If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues
    
    

    my facerecognition.py is

    
    import sys
    import json
    import time
    import face
    import cv2
    import config
    import signal
    
    def to_node(type, message):
        try:
            print(json.dumps({type: message}))
        except Exception:
            pass
        sys.stdout.flush()
    
    to_node("status", "Facerecognition started...")
    
    current_user = None
    last_match = None
    detection_active = True
    login_timestamp = time.time()
    same_user_detected_in_row = 0
    
    to_node("status", 'Loading training data...')
    
    if config.get("recognitionAlgorithm") == 1:
        to_node("status", "ALGORITHM: LBPH")
        model = cv2.face.LBPHFaceRecognizer_create(threshold=config.get("lbphThreshold"))
    elif config.get("recognitionAlgorithm") == 2:
        to_node("status", "ALGORITHM: Fisher")
        model = cv2.createFisherFaceRecognizer(threshold=config.get("fisherThreshold"))
    else:
        to_node("status", "ALGORITHM: Eigen")
        model = cv2.createEigenFaceRecognizer(threshold=config.get("eigenThreshold"))
    
    # Load training file specified in config.js
    model.read(config.get("/home/pi/MagicMirror/modules/MMM-Facial-Recognition-Tools/training.xml"))
    to_node("status", 'Training data loaded!')
    
    camera = config.get_camera()
    
    def shutdown(self, signum):
        to_node("status", 'Shutdown: Cleaning up camera...')
        camera.stop()
        quit()
    
    signal.signal(signal.SIGINT, shutdown)
    
    time.sleep(1)
    
    while True:
        time.sleep(config.get("interval"))
        if detection_active is True:
            image = camera.read()
            image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
            result = face.detect_single(image)
            if result is None:
                if (current_user is not None and time.time() - login_timestamp > config.get("logoutDelay")):
                    to_node("logout", {"user": current_user})
                    same_user_detected_in_row = 0
                    current_user = None
                continue
            x, y, w, h = result
            if config.get("recognitionAlgorithm") == 1:
                crop = face.crop(image, x, y, w, h)
            else:
                crop = face.resize(face.crop(image, x, y, w, h))
            label, confidence = model.predict(crop)
            if (label != -1 and label != 0):
                login_timestamp = time.time()
                if (label == last_match and same_user_detected_in_row < 2):
                    same_user_detected_in_row += 1
                if label != last_match:
                    same_user_detected_in_row = 0
                if (label != current_user and same_user_detected_in_row > 1):
                    current_user = label
                    to_node("login", {"user": label, "confidence": str(confidence)})
                last_match = label
            elif (current_user != 0 and time.time() - login_timestamp > 5):
                login_timestamp = time.time()
                current_user = 0
                to_node("login", {"user": current_user, "confidence": None})
            else:
                continue
    
    

    #Load training file specified in config.js
    model.read(config.get("/home/pi/MagicMirror/modules/MMM-Facial-Recognition-Tools/training.xml"))

    Is this the cause?
    What should I do about this part?

    my config.js is

    {
    	module: "newsfeed",
    	position: "bottom_bar",
    	classes: 'minsoo',
    	config: {
    		feeds: [
    			{
    				title: "New York Times",
    				url: "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
    			}
    		],
    		showSourceTitle: true,
    		showPublishDate: true
    	}
    },
    {
    	module: 'MMM-Facial-Recognition',
    	config: {
    		recognitionAlgorithm: 1,
    		lbphThreshold: 50,
    		fisherThreshold: 250,
    		eigenThreshold: 3000,
    		useUSBCam: true,
    		trainingFile: 'modules/MMM-Facial-Recognition-Tools/training.xml',
    		interval: 2,
    		logoutDelay: 15,
    		users: ['minsoo'],
    		defaultClass: "default",
    		everyoneClass: "everyone",
    		welcomeMessage: true
    		}
    },
    ]
    
    };
    
    /*************** DO NOT EDIT THE LINE BELOW ***************/
    if (typeof module !== "undefined") {module.exports = config;}
    
    

    I am anxiously waiting for your help.