Summary

For this project, we will be creating a MagicMirror that will show a user’s reflection and information displayed on an internal computer monitor through a Raspberry Pi 3. There is an open-source repository on Github implemented in Javascript that we will be building on top of. The main feature that will be implemented is a user profile system that will be driven by an attached camera and OpenCV. A user will be able to stand in front of the mirror and have his/her face scanned. If the user has a previously made customized profile, the mirror will load that specific user’s profile. If not, the camera will take pictures in order to train the system for a new user and their profile. We will also build a web application that can be used to customize the profile of each user.


Deliverables

  • Web App for profile customization
  • Profiles for MagicMirror saved/loaded through facial recognition
  • Profile training system to create new user profiles

Critical Features

  • Motion Gesture controlled
  • Facial Recognition training to create a user profile
  • Loading of MagicMirror profile
  • Camera that detects face, takes picture, and compares to a previously saved photo
  • Write notes/reminders from phone to display on mirror
  • Proximity Sensor to control On/Off state using the camera
  • Display basic information:
    • Time
    • Date
    • Weather

Performance Metrics

  • Face/profile is recognized correctly 95% of the time
  • User is logged on/out correctly
  • User profile creation is automated correctly
  • SmartMirror can run for 3+ hours without crashing

Milestones

  • Week 3 (4/13): Get camera and the base platform for the mirror OS working
  • Week 4 (4/20): Facial Detection Implementation loads/saves profiles
  • Week 5 (4/27): Face Detection robustness/improvements
  • Week 6 (5/4): Gesture Control customizes module placements
  • Week 7 (5/11): Proximity Sensor through camera controls On/Off state
  • Week 8 (5/18): Customization Web App implemented and connected
  • Week 9 (5/25): Improve Web Application and the ease of use for the user
  • Week 10 (6/1): Mount monitor and Raspberry Pi in the frame, finalize mirror

Team Member Responsibilities

  • Brad:
    • Contribute to facial recognition system
    • Configure the loading protocol of existing profiles
    • Create the sequence for the creation of a profile for a new user
    • PIR-like system using the camera to control the ON/OFF state
  • Brandon:
    • Work on tool for customizing each user’s profile
    • Hide and show specific modules on the Magic Mirror
    • Adjusting the location of each module on the Magic Mirror
    • Establish a way to store each user’s profile
    • Pull corresponding profile based on facial recognition
    • Incorporate useful modules into the Magic Mirror
  • Kurtis:
    • Contribute to facial recognition
    • Testing and troubleshooting user based facial recognition
    • Gesture Control
    • Research and develop a method for gesture control
    • Aid in implementation of gesture control
  • Ryan:
    • Contribute to facial recognition setup
    • Set up customization backend for integrating facial recognition with displayed elements
    • Testing and development of facial recognition per user basis
    • Develop a PCB
    • Layout schematic and PCB in Altium (board will not actually be used on project)
    • Gesture sensor
    • Software development for integrating gestures into the Smart Mirror environment

Outside Help Needed

  • Josh Fromm for Computer Vision help
  • Magic Mirror forum
  • OpenCV forum

Materials/Budget

  • Camera: $34.80
  • 2 Way Mirror Film: $26.76
  • Acrylic Screen: ~$15
  • Wooden Frame: ~$20
  • Monitor (32”): FREE (thanks Ryan!)
  • Approximate Total: ~$96.56

Risks

  • Misidentification of face (viewing angle of camera)
  • Misidentification of gestures (not enough contrast)
  • Slow face recognition
  • Raspberry Pi 3 burnout
  • Damage to monitor
  • Exceeding usage of computational power for the Pi 3

Addressing Risks

  • Assign a fixed placement for the camera so training is consistent with capture
  • Simplify gestures
  • Test optimal camera resolution and face detection thresholds
  • Turn off Raspberry Pi 3 or put in stand-by mode when not in use
  • Take care while handling mirror
  • Optimize program’s usage of processing power