Photo Analysis

This is Node.js command line tool that analyses a directory of photos of your face for emotion, age, gender, and ethnicity and outputs the result to a CSV file. Currently it uses Affectiva for analysis but I plan on adding support for Microsoft's Emotion API and possibly others in the future.
I originally built this as part of a larger project to analyze Lifeslice photos and show emotional changes over long periods of time. If you are interested in hearing more about that project or helping out, I am actively looking for volunteers to contribute their CSV results! Contact me at chris@cjroth.com for more info.
It will work with any directory of photos - not just Lifeslice photos - you will just need to configure the filename formats to work with other patterns (see analyzer.html
). It currently detects a photo's date from the filename pattern instead of the file's created-at date.
The tool works by launching a hidden Electron window to run the Affectiva library in and render photos.
TL;DR:
Input:

Output*:

* No, Affectiva isn't trying to do some sort of weird affirmative action... it's just bad at detecting ethnicity... or I'm just a really funny looking white guy 👨
Install
You must have Node >= 6.0.0 installed.
npm install -g photoanalysis
(you may need to run this with sudo if you get a permission error)
Run
Assuming you haven't changed Lifeslice's default photo directory, it will work out of the box and output a CSV file of results to your Desktop:
photoanalysis
Input directory:
photoanalysis -i ~/custom/photo/directory
Custom output file:
photoanalysis -o ~/custom/output.csv
Debug mode:
photoanalysis -d
If you stop the process and then start it again, it will pick up where it left off.