Inspired by the work of CodeParade and carykh, and general application of neural networks on new and unexpected data.

What it does

Given only a book cover, our project produces a book rating out of 5 stars. It has 3 primary components:

Data Collection

A Java executable controlling the Selenium webdriver, collects book thumbnails and reviews, and storing them locally, corresponding them via an index file.

Neural Network

Using the data set, a neural network trains to make accurate rating guesses based exclusively on the cover images of the books.


A processing program takes a picture from the webcam, formatting it as a book cover, and sending it to the network to rate it.

How we built it

The group of three split the task into two primary parts: a team of two working with neural nets, and one working on data collection and the front-end. These tasks were all new to the team, so a majority of the time was spent researching and experimenting.

Challenges we ran into

One of the biggest barriers we encountered was deciding the number of hidden layers and the size of said layers. Often times the behavior of the network did not follow what it theoretically should. To overcome this, all three team members experimented with configurations for the network that we had seen working, or had reason to believe would work well. As well as gathering additional research.

In the end, we restructured our project to allow us to train many different networks at once, so we could judge the pros and cons of several designs against each other.

Accomplishments that we're proud of

The group is quite proud of our ability to format any image into a usable book cover, for the purposes of the network.

What we learned

Among others: browser automation, image formatting, network training, and creating categorical and continuous neural nets.

What's next for Judge a Book by its Cover (with a Neural Network)

We hope to expand our data set in the future, and to use it to create a generative network to generate "optimal" book covers. This algorithm can also be generalized and applied to any number of image data sets.

Built With

Share this project: