Algorithmia Blog - Deploying AI at scale

Supercharging the Command Line: Using Smart Thumbnail to Batch Crop Photos

As much as I love building large, robust software systems and services, I often just want a quick script to solve a particular problem. In those instances I feel most comfortable dropping to the command line. With Algorithmia’s new CLI tool, I can quickly and easily access algorithms for a wide variety of tasks. With the entire Algorithmia marketplace readily available behind the command line interface, now it’s trivial to detect faces, make passport photos, encrypt messages, crawl a domain to build a site map, cheat at LetterPress or Sudoku, and much so more.

Recently I needed to convert a directory of images into thumbnails, with the goal of having each cropped to the same size without losing the focus on the face. While cropping a photo manually isn’t too bad if you just have to do it once, cropping a large set of photos by hand can be extremely time consuming and tedius. Lucikly, Algorithmia offers an algorithm to do just that: Smart Thumbnail.

The Algorithmia way

The Smart Thumbnail algorithm builds on the opencv-based Face Detection algorithm to detect faces and create thumbnails in one fell swoop. I started with this sample set of photos:


Combining the Smart Thumbnail algorithm with the Algorithmia CLI client, it’s simple to create a clean script for thumbnailing an entire directory:

for image in $@; do
  echo "Processing $image"
  output_file="smart_thumbs/$(basename ${image%.*}).png"
  algo run opencv/SmartThumbnail -D "$image" -o "$output_file"

This short and simple code makes it easy to batch process photos, and the results speak for themselves.


As you can see, each image is cropped to the same size, but no one is left with a half a head or their face cut in two. Instead of having to manually crop each photo so that the faces are preserved, I can just run all the photos through the Smart Thumbnail algorithm. Not only is it the intuitive output I was hoping for, but it was also a simple CLI experience with just one clean tool.

One tool, any algorithm

With the Algorithmia CLI I now have a powerful set of algorithms available to me for use across any project or platform. With access to any algorithm in the marketplace, I can now reach for one tool to perform a variety of tasks. Sign up, install the CLI, pick an algorithm, run it with a simple:

algo run <algorithm> -d '<data>'
# or
algo run <algorithm> -D '<file>'

And enjoy your supercharged command line!

Let us @algorithmia know how you plan to use the Algorithmia CLI. Include #SuperchargedCLI and your Algorithmia username for 10,000 free credits.

Learn how to leverage powerful algorithms with Algorithmia and General Assembly Seattle


We’ve teamed up with General Assembly to produce a free, two-hour workshop designed to help web developers build brilliant apps using Algorithmia’s powerful platform. 

You’ll learn how to gain access to world class algorithms in five lines of code or less, allowing you to recognize patterns in your data, extract visual knowledge, understand audio, classify unstructured data, and derive meaning from language

If you’re in the Seattle area, and have an interest in giving your app super powers, then join us Wednesday, October 14 at 6:30pm! A basic understanding of APIs, and some Python or JS knowledge is required.

About This Workshop:

RSVP here. 

Wednesday, October 14
6:30 – 8:30 pm PDT

WeWork Seattle
500 Yale Avenue N
Seattle , WA 98109

Who’s Who: Facial Recognition Made Simple

Using machine learning from Algorithmia to train a model to recognize faces


Name That Actor is a minimal demo from Algorithmia to show how anyone can use a classic face recognition algorithm. In the box below, enter the URL to a photo of one of the actors from the TV show “Parks and Recreation” or click on one of the example images, which were not used in training the facial recognizer model. The algorithm will run the image input against the model to predict the name of the actor.

This demo is out-of-date. Please See instead.


How we made it

Because Parks and Rec is a celebrated show (for good reason–we hope you agree!), we decided to use the main cast as the recognition model for the algorithm. To train the model, we used the Train Face Recognizer algorithm with a collection of images of the actors.

We started by downloading 10 photos from Google Images of each actor playing the main characters:

  • Amy Poehler as Leslie Knope
  • Nick Offerman as Ron Swanson
  • Chris Pratt as Andy Dwyer
  • Aziz Ansari as Tom Haverford
  • Aubrey Plaza as April Ludgate
  • Adam Scott as Ben Wyatt
  • Rashida Jones as Ann Perkins
  • Retta as Donna Meagle
  • Jim O’Heir as Jerry Gergich (or Garry or Larry or…)

Using the Algorithmia API, we uploaded all the images to a data collection. Then we ran the Train Face Recognizer algorithm against the collection, providing the actor’s name for each photo, to train the model against the collection as a dataset. To analyze new images, we call the Recognize Faces algorithm which uses the trained model to predict the name of the actor.

Note: Our method for detecting and recognizing faces works best for frontal face images. Faces at a profile are harder to detect and recognize with the same level of accuracy. It also helps when the faces are reasonably large relative to the size of the image, a modest 1/64 of the size of the image in pixels. Read more about face recognition using Algorithmia here.

Learn More:

Understanding Facial Recognition OpenFace

Build intelligent serverless apps in minutes with Algorithmia and AWS Lambda


Algorithmia’s is pleased to announce a new, built-in AWS Lambda Node.js blueprint, making it easy to call the Algorithmia API in response to events from Amazon Kinesis, Amazon DynamoDB, Amazon S3, and other Amazon web services.

With Algorithmia you have access to the largest marketplace of algorithms in the world in less than five lines of code. Leverage state-of-the-art algorithms to recognize patterns in data, extract visual knowledge, understand audio, classify unstructured data, and derive meaning from language.

AWS Lambda is a service that lets you run code without provisioning or managing servers, making it easy to build applications that respond quickly to new information. Lambda manages the resources for you automatically.

Read the full documentation, including auth and code samples here.

Together, Algorithmia and Lambda make it easy to rapidly build and deploy serverless solutions in minutes. For example, you could combine several algorithms from Algorithmia to:

  • Automatically generate smart thumbnails (using face detection to ensure every thumbnail is perfectly cropped)
  • Take advantage of Algorithmia’s speech-to-text algorithm to transcribe videos uploaded to S3 on the fly
  • You could even leverage a predictive model every time DynamoDB updates

How to Get Started with Algorithmia + AWS Lambda:

  1. Navigate to the AWS Lambda console
  2. Select Create a Lambda function
  3. Type Algorithmia into the filter
  4. Select the Algorithmia blueprint
  5. Setup Auth in your Lambda function using the below guide
  6. Specify your algorithm and input data

Complete documentation here.

Still curious?

Getting Started with the Algorithmia Command Line Interface (CLI)

These instructions are out-of-date. Please See instead.


Algorithmia has released a command line interface (CLI)! This new, cross-platform tool allows you to use the command line to call more than 1,600 algorithms from the Algorithmia API.

The official docs can be found in the README on GitHub, but we’ll do a quick walkthrough to get you up and running.


Setting up the Algorithmia CLI is easy.


Download and extract the OSX tarball with this cURL command:

$ curl -L | tar -xz

We recommend putting it within your PATH with the following:

$ sudo mv algo /usr/local/bin/

Windows (64-bit)

First, install OpenSSL for Windows.

Next, download and extract the Windows zip file. We recommend putting it within your PATH.

Looking for instructions for Debian/Ubuntu or Arch installs? Find them on the official README.

Configure the CLI:

Before we can start making calls to the APIs, first we need configure our authentication. Run the command:

$ algo auth

You’ll be prompted to input your API key for a default profile. If you’d like to create more than one profile, simply run algo auth [<profile>] for the same interactive prompt. For more information, see the auth command help with algo auth --help.

Check that your profile is configured by running algo ls.


Now that we’re set up, let’s try executing some algorithms! We’re going to start with something simple, the Factor algorithm that takes in integer and returns its prime factors. You can find the details about this algorithm on the description page.

$ algo run kenny/factor -d 19635

Here we see the basic syntax: algo run, followed by the algorithm’s username and algorithm name (kenny/factor), the data options, and finally the input. The response we got back was just the result of the algorithm, but we can also add the option --response-body to see the full JSON response:

$ algo run kenny/factor -d 19635 --response-body

Run algo run --help to see more command options, including the data input and output options.

The Algorithmia CLI is also great for interacting with the Algorithmia API. You can use the CLI to create and manage your data directories. Let’s say you want to create a new data directory and upload some files-it’s easy with the CLI.

First, create a new data directory:

$ algo mkdir .my/favoritepics

Created directory data://.my/favoritepics

Copy a file from your local directory to the new data directory:

$ algo cp puppies.png data://.my/favoritepics

Uploaded data://.my/favoritepics/puppies.png

When you’ve finished uploading, check that everything you expect is in your data directory:

$ algo ls .my/favoritepics

puppies.png kittens.jpg baby_turtles.jpg


Algorithmia CLI use of opencv/SmartThumbnail


Run algo --help for additional usage information and to learn about other command options. Be sure to check out the official README for even more detailed instructions on using the Algorithmia CLI and new release updates!