MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    MMM-Face-Reco-DNN receiving PythonShellError: TypeError

    Scheduled Pinned Locked Moved Troubleshooting
    5 Posts 3 Posters 1.1k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K Offline
      KSumwalt
      last edited by KSumwalt

      I am trying to get facial recognition working but it is not happening. Here is what I have found. Any advice on how to get this to work?

      I have loaded the MMM-Face-Reco-DNN and even used the i_face_recognition.py from https://www.pyimagesearch.com/2018/06/25/raspberry-pi-face-recognition/ with the encodings file generated from the MMM-Face-Reco-DNN instructions and had that .py file recognize faces. So I backed everything out of my config file except the default MMM-Face-Reco-DNN settings from the instructions and when I manually start MM2 everything looks fine. I am running on a Raspberry Pi 4. I did install a different facial recognition module, but it was not in the config file and decided not to use it when I saw it only recognized 1 person. When I step in front of the camera, this comes up in the terminal where I manually started MM2:

      [2020-08-09 00:59:28.399] [ERROR]  Whoops! There was an uncaught exception...
      [2020-08-09 00:59:28.400] [ERROR]  PythonShellError: TypeError: '<' not supported between instances of 'numpy.ndarray' and 'str'
          at PythonShell.parseError (/home/pi/MagicMirror/modules/MMM-Face-Reco-DNN/node_modules/python-shell/index.js:246:21)
          at terminateIfNeeded (/home/pi/MagicMirror/modules/MMM-Face-Reco-DNN/node_modules/python-shell/index.js:129:32)
          at ChildProcess.<anonymous> (/home/pi/MagicMirror/modules/MMM-Face-Reco-DNN/node_modules/python-shell/index.js:121:13)
          at ChildProcess.emit (events.js:200:13)
          at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
          ----- Python Traceback -----
          File "modules/MMM-Face-Reco-DNN/tools/facerecognition.py", line 143, in <module>
            if minDistance < args["tolerance"]: {
        traceback: 'Traceback (most recent call last):\n  File ' +
          '"modules/MMM-Face-Reco-DNN/tools/facerecognition.py", line ' +
          '143, in <module>\n    if minDistance < args["tolerance"]:\n' +
          "TypeError: '< ' not supported between instances of " +
          "'numpy.ndarray' and 'str'\n",
        executable: 'python3',
        options: null,
        script: 'modules/MMM-Face-Reco-DNN/tools/facerecognition.py',
        args: [
          '--cascade=modules/MMM-Face-Reco-DNN/tools/haarcascade_frontalface_default.xml',
          '--encodings=modules/MMM-Face-Reco-DNN/tools/encodings.pickle',
          '--usePiCamera=1',
          '--source=0',
          '--rotateCamera=0',
          '--method=dnn',
          '--detectionMethod=hog',
          '--interval=2000',
          '--output=0',
          '--extendDataset=False',
          '--dataset=modules/MMM-Face-Reco-DNN/dataset/',
          '--tolerance=0.6'
        ],
        exitCode: 1
      }
      [2020-08-09 00:59:28.409] [ERROR]  MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
      [2020-08-09 00:59:28.409] [ERROR]  If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues
      
      

      Here is my config.js

      /* Magic Mirror Config Sample
       *
       * By Michael Teeuw https://michaelteeuw.nl
       * MIT Licensed.
       *
       * For more information on how you can configure this file
       * See https://github.com/MichMich/MagicMirror#configuration
       *
       */
      
      var config = {
      	address: "0.0.0.0",
      	port: 8080,
      	basePath: "/", 	// The URL path where MagicMirror is hosted. If you are using a Reverse proxy
      					// you must set the sub path here. basePath must end with a /
      	ipWhitelist: [],
      
      	useHttps: false, 		// Support HTTPS or not, default "false" will use HTTP
      	httpsPrivateKey: "", 	// HTTPS private key path, only require when useHttps is true
      	httpsCertificate: "", 	// HTTPS Certificate path, only require when useHttps is true
      
      	language: "en",
      	logLevel: ["INFO", "LOG", "WARN", "ERROR"],
      	timeFormat: 12,
      	units: "imperial",
      	// serverOnly:  true/false/"local" ,
      	// local for armv6l processors, default
      	//   starts serveronly and then starts chrome browser
      	// false, default for all NON-armv6l devices
      	// true, force serveronly mode, because you want to.. no UI on this device
      
      	modules: [
      		{
      			module: "alert",
      			classes: 'default everyone',
      		},
      		{
      			module: "updatenotification",
      			classes: 'default everyone',
      			position: "top_bar"
      		},
      		{
      			module: "clock",
      			classes: 'default everyone',
      			position: "top_left"
      		},
      		{
      			module: 'MMM-Face-Reco-DNN',
      			config: {
      			  // Logout 15 seconds after user was not detected any more
      			  // If they are detected within this period, the delay will start again
      			  logoutDelay: 15000,
      			  // How often the recognition starts in milliseconds
      			  // With a Raspberry Pi 3+ it works well every 2 seconds
      			  checkInterval: 2000,
      			  // Module set used for strangers or if no user is detected
      			  defaultClass: 'default',
      			  // Set of modules which should be shown for every recognised user
      			  everyoneClass: 'everyone',
      			  // XML to recognize with haarcascade
      			  cascade: 'modules/MMM-Face-Reco-DNN/tools/haarcascade_frontalface_default.xml',
      			  // Pre-encoded pickle with the faces
      			  encodings: 'modules/MMM-Face-Reco-DNN/tools/encodings.pickle',
      			  // Use Raspberry Pi camera or another type
      			  // 1 = RasPi camera, 0 = other camera
      			  usePiCamera: 1,
      			  // If using another type of camera, you can choose
      			  // i.e. 0 = /dev/video0 or 'http://link.to/live'
      			  source: 0,
      			  // Rotate camera
      			  rotateCamera: 0,
      			  // Method of facial recognition
      			  // dnn = deep neural network, haar = haarcascade
      			  method: 'dnn',
      			  // Which face detection model to use
      			  // "hog" is less accurate but faster on CPUs
      			  // "cnn" is a more accurate deep-learning model which is GPU/CUDA accelerated
      			  detectionMethod: 'hog',
      			  // How long in milliseconds modules take to hide and show
      			  animationSpeed: 0,
      			  // Path to Python to run the face recognition
      			  // null or '' means default path
      			  pythonPath: null,
      			  // Should a welcome message be shown using the MagicMirror alerts module?
      			  welcomeMessage: true,
      			  // Capture new pictures of recognized people, if unknown we save it in folder "unknown"
      			  // So you can extend your dataset and retrain it afterwards for better recognitions
      			  extendDataset: false,
      			  // If extendDataset is true, you need to set the full path of the dataset
      			  dataset: 'modules/MMM-Face-Reco-DNN/dataset/',
      			  // How much distance between faces to consider it a match. Lower is more strict.
      			  tolerance: 0.6
      			}
      		},
      
      
      	]
      };
      
      /*************** DO NOT EDIT THE LINE BELOW ***************/
      if (typeof module !== "undefined") {module.exports = config;}
      
      

      And here is everything in the terminal before stepping in front of the camera:

      pi@raspberrypi:~/MagicMirror $ npm start
      
      > magicmirror@2.12.0 start /home/pi/MagicMirror
      > DISPLAY="${DISPLAY:=:0}" ./node_modules/.bin/electron js/electron.js
      
      [2020-08-09 00:58:21.215] [LOG]    Starting MagicMirror: v2.12.0
      [2020-08-09 00:58:21.240] [LOG]    Loading config ...
      [2020-08-09 00:58:21.248] [LOG]    Loading module helpers ...
      [2020-08-09 00:58:21.251] [LOG]    No helper found for module: alert.
      [2020-08-09 00:58:21.325] [LOG]    Initializing new module helper ...
      [2020-08-09 00:58:21.326] [LOG]    Module helper loaded: updatenotification
      [2020-08-09 00:58:21.328] [LOG]    No helper found for module: clock.
      [2020-08-09 00:58:21.354] [LOG]    Initializing new module helper ...
      [2020-08-09 00:58:21.355] [LOG]    Module helper loaded: MMM-Face-Reco-DNN
      [2020-08-09 00:58:21.355] [LOG]    All module helpers loaded.
      [2020-08-09 00:58:21.566] [LOG]    Starting server on port 8080 ... 
      [2020-08-09 00:58:21.574] [INFO]   You're using a full whitelist configuration to allow for all IPs
      [2020-08-09 00:58:21.580] [LOG]    Server started ...
      [2020-08-09 00:58:21.581] [LOG]    Connecting socket for: updatenotification
      [2020-08-09 00:58:21.583] [LOG]    Connecting socket for: MMM-Face-Reco-DNN
      [2020-08-09 00:58:21.583] [LOG]    Starting module helper: MMM-Face-Reco-DNN
      [2020-08-09 00:58:21.584] [LOG]    Sockets connected & modules started ...
      [2020-08-09 00:58:21.891] [LOG]    Launching application.
      [2020-08-09 00:58:25.058] [INFO]   Checking git for module: MMM-Face-Reco-DNN
      [2020-08-09 00:58:32.928] [LOG]    [MMM-Face-Reco-DNN] loading encodings + face detector...
      [2020-08-09 00:58:33.177] [LOG]    [MMM-Face-Reco-DNN] starting video stream...
      
      
      S 1 Reply Last reply Reply Quote 0
      • S Do not disturb
        sdetweil @KSumwalt
        last edited by

        @KSumwalt it seems that python has added type checking, which it wasn’t using before.

        there was another python related type checking problem a few days ago…

        looks like the node_helper has launched the python script to compare the face files, and run into a problem checking the parms passed to it.

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        K 1 Reply Last reply Reply Quote 0
        • K Offline
          KSumwalt @sdetweil
          last edited by

          @sdetweil Thank you. I have passed this on as an issue on the github site for the plugin.

          X 1 Reply Last reply Reply Quote 0
          • X Offline
            x3mEr @KSumwalt
            last edited by

            @KSumwalt , hi! Check the module update.

            1 Reply Last reply Reply Quote 0
            • K Offline
              KSumwalt
              last edited by

              Beautiful! I updated and it appears to be working fine. Thank you, @x3mEr !!!

              1 Reply Last reply Reply Quote 0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              • 1 / 1
              • First post
                Last post
              Enjoying MagicMirror? Please consider a donation!
              MagicMirror created by Michael Teeuw.
              Forum managed by Sam, technical setup by Karsten.
              This forum is using NodeBB as its core | Contributors
              Contact | Privacy Policy