MagicMirror² v2.13.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.



  • Same problem to me . Did you find a solution ?



  • the readme says

    To train the needed model use the MMM-Facial-Recognition-Tools.
    

    wen you follow that link, it says

    DEPRECIATED
    This module is no longer supported. When it does work, the facial recognition methods used performed poorly.
    

    there are a LOT of steps to execute to ‘train the model’

    did u do that? (it creates the missing xml file)



  • to work on a user problem with one of my modules, I installed the https://github.com/nischi/MMM-Face-Reco-DNN module, and it was very complex and time consuming. (I installed in on my linux PC, not my pi)



  • what do you suggest ?



  • @merttcoo i don’t have a recommendation. I don’t use this function

    so you can try the steps to create the model with the one you have partly installed,
    or you can try the other one.


Log in to reply