ai4buzz

Project Requirements

Executive Summary

This project is to develop a web service to allow researchers to gain insight into the meanings and semantics of what makes a social media post more influential. Specifically, this project will expose a web REST API to allow researchers at AI4Society to upload images and retrieve a summary of an analysis of that photo. This analysis may contain anything from a color scheme analysis to sentiment classification of the photo.

Project Glossary

User Stories

US 1.01 - REST API and Database setup

As a researcher, I want to register myself in the database when I initially set up the API, so that images are analyzed with those who have permission

Acceptance Tests

  1. Expose endpoint that allows for the upload of multiple images
  2. Throw an error if the user tries to send data that is not of the expected format
  3. Only allow registered users to acess other endpoints

US 1.02 - Image analysis result

As a researcher, I want to retrieve the results of the analysis using a web API, so that I can run my own analysis on the results

Acceptance Tests

  1. Return analysis of the results in JSON format as a response to an image upload request

US 1.03 - Generate Dendrogram

As a researcher, I want to retrieve a dendrogram of a batch of images using a web API so that I can further understand the images

Acceptance Tests

  1. Return dendrogram as a base 64 encoded string as a response to a dendrogram request

US 1.04 - Generate collage

As a researcher, I want to retrieve a collage of images using a web API so that I can further understand them.

Acceptance Tests

  1. Return collage as a base 64 encoded string as a response to a dendrogram request

US 1.05 - Colour scheme analysis

As a researcher, I want to get the colour scheme analysis of an image so that I can know how color affects popularity of an image.

Acceptance Tests

  1. Given an image, return colour scheme analysis in response body of image upload request

US 1.06 - Image sentiment classification

As a researcher, I want to get the sentiment classification of an image so that I can know the mood of the image.

Acceptance Tests

  1. Given an image, return the sentiment of the image as a string
  2. Need to ensure 70-80% accuracy

US 1.07 - Object detection

As a researcher, I want to be able to know the objects detected in a photo so that I can know the contents of the image.

Acceptance Tests

  1. Returns the number of objects in photo
  2. Return the bounding box coordinates of those objects in the image
  3. Return labels of those objects
  4. Need to ensure 80-90% accuracy

US 1.08 - Facial Detection

As a researcher, I want to be able to know the number of faces detected in a photo so that I can know how the number of people affects popularity.

Acceptance Tests

  1. Returns the number of faces in photo
  2. Return the bounding box coordinates of those faces in the image
  3. Need to ensure 80-90% accuracy

US 1.09 - Text extraction

As a researcher, I want to be able to know if an image contains text and what that text is so that I can analyze the text in the image.

Acceptance Tests

  1. Extracts text from an image
  2. Need to ensure 80-90% accuracy

US 1.10 - Batch processing

As a researcher, I want to be able to upload more than one image to a web service, so that I can get batch image analysis in real time.

Acceptance Tests

  1. Allow client to upload more than one image to the web service
  2. Allow for images to be sent to backend and results to be sent back

US 1.11 - Text Detection

As a researcher, I want to detect if an image has text in it so that I can analyze the impact the presence of text has in an images popularity

Acceptance Tests

  1. Model correctly detects whether there is text in an image or not
  2. Ensure model accuracy better than 80%

US 2.01 - Web client image upload

As a web user, I want to upload one or many images, so that the images can be analyzed

Acceptance Tests

  1. Allow user to select images by selecting a single image or directory of images from their local machine to upload
  2. Ensure that image(s) are uploaded as base 64 strings

US 2.02 - Web client analysis

As a web user, I want to view the results of the analysis, so that I can see the features about an image to gain understanding about it.

Acceptance Tests

  1. List the results of the analysis beside the image(s) that were uploaded
  2. Allow user to browse through the uploaded images and their results by scrolling through or clicking through the images

US 2.03 - Web client view collage

As a web user, I want to view a collage of the images so that I can do aggregate analysis.

Acceptance Tests

  1. Ensure that collage renders properly on the frontend client
  2. On clicking a button, the collage should render

US 2.04 - Web client View Dendrogram

As a web user, I want to view a dendrogram of the images so that I can understand the relationship between them.

Acceptance Tests

  1. Need to ensure dendrogram is rendered on the frontend client on click of a button
  2. Need to ensure dendrogram is rendered correctly

US 2.05 - Web client authentication

As a web user, I want to authenticate with my email so that I can access the website and its features.

Acceptance Tests

  1. If user inputs correct info, it allows them onto the website
  2. If the user inputs incorrect information, it declines entry onto website

US 2.06 - Web client JSON download

As a web user, I want to be able to generate an entire report of the features above in a JSON file, so I can use the file to do additional analysis.

Acceptance Tests

  1. Allow web user to download the report as a json file on click of a download button
  2. Ensure that user can only request a download if they have uploaded an image(s) for analysis

MoSCoW

Must Have

Should Have

Could Have

Would Like but Won’t get

Similar Products

Open-Source Projects

Technical Resources

Machine Learning:

Backend: FastAPI + PostgreSQL

Frontend: React

Deployment: Docker