If you’re like us, you spend more time than you care to admit staring at a computer screen. Whether it’s trying to find the right words for a blog post or troubleshooting some code, the end result is the same: an otherwise normally functioning human being is reduced to a slack-jawed zombie. Wouldn’t it be nice to be able to quantify just how much of your life is being wasted basking in the flickering glow of your monitor? Surely that wouldn’t be a crushingly depressing piece of information to have at the end of the week.
With the magic of modern technology, you need wonder no longer. Prolific hacker [dekuNukem] has created the aptly named “facepunch”, which allows you to “punch in” with nothing more than your face. Just sit down in front of your Raspberry Pi’s camera, and the numbers start ticking away. It’s like the little clock in the front of a taxi: except at the end you don’t have to pay anyone, you just have to come to terms with what your life has become. So that’s cool.
It doesn’t take much hardware to play along at home. All you need is a Raspberry Pi and the official camera accessory. Though for the full effect you should add one of the displays supported by the Luma.OLED driver so you can see the minutes and hours ticking away in real-time.
To get the facial recognition going, all you need to do is take a well-lit picture of your face and save it as a 400×400 JPEG. The Python 3 script will take care of the rest: checking the frames from the camera every few seconds to see if your beautiful mug is in the frame, and incrementing the counters accordingly.
Even if you’re not in the market for an Orwellian electronic supervisor, this project is a great example to get you started in the world of facial recognition. With a little luck, you’ll be weaponizing it in no time.
Nice project and interesting as well. I was just wondering if you can use it for unlocking your computer, for example, only when you are staring into the camera? Would you recommend it for something like this? Also what about the privacy? Should I keep the camera facing a wall?
Many devices already use facial recognition to unlock themselves, this however seems more basic because it’s not recognizing *you*, just “any face similar to your example photo”. I’m sure that could be fixed if you tried, there are tons of security-minded facial recognition apps out there. Windows 10 even has it built-in as an alternative to using a password, though I’m not sure how secure it is.
Having said that, no software on the market is fool-proof. Even the new iPhones have been cracked with a simple mask, so I would never advise using facial recognition as the *only* authentication factor. Combine it with a simple pin, password, fingerprint, RFID chip, etc to have multiple factors.
Regarding privacy, I can virtually guarantee nobody is going to be hacking your RPi and hijacking the camera unless you’re a super high profile target. That’s extremely difficult even on a Windows machine, let alone any flavor of Linux. This software also doesn’t appear to store or transmit any of the data it collects, so that’s not a big concern. It’s just a simple Every Five Seconds (is there a face vaguely matching the example pic?) {Add seconds to total time}, the only data being stored is the amount of time someone (similar to your example photo) is sitting in front of the screen, nothing beyond that. However if you’re really concerned, there’s nothing wrong with just pointing it at a wall or covering the camera when not in use (aside from just looking silly).
Manually pointing the camera around defeats the whole point. How are you going to see a person’s face when you’re not even looking at them?
This is a good idea except I would use it to track the time wasted *not* basking in the flickering glow of my monitor.
My problem is that there’s probably no way to distinguish between *actually working* and simply *zoned out while staring at the monitor*
More networks! Yay!
Potential design flaw: it looks like there is only space for two digits to designate hours in the Week field. Possible solution would be to display the time in hex.
Nice. No caveats.