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.
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
- Expose endpoint that allows for the upload of multiple images
- Throw an error if the user tries to send data that is not of the expected format
- Only allow registered users to acess other endpoints
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
- Return analysis of the results in JSON format as a response to an image upload request
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
- Return dendrogram as a base 64 encoded string as a response to a dendrogram request
As a researcher, I want to retrieve a collage of images using a web API so that I can further understand them.
Acceptance Tests
- Return collage as a base 64 encoded string as a response to a dendrogram request
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
- Given an image, return colour scheme analysis in response body of image upload request
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
- Given an image, return the sentiment of the image as a string
- Need to ensure 70-80% accuracy
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
- Returns the number of objects in photo
- Return the bounding box coordinates of those objects in the image
- Return labels of those objects
- Need to ensure 80-90% accuracy
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
- Returns the number of faces in photo
- Return the bounding box coordinates of those faces in the image
- Need to ensure 80-90% accuracy
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
- Extracts text from an image
- Need to ensure 80-90% accuracy
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
- Allow client to upload more than one image to the web service
- Allow for images to be sent to backend and results to be sent back
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
- Model correctly detects whether there is text in an image or not
- Ensure model accuracy better than 80%
As a web user, I want to upload one or many images, so that the images can be analyzed
Acceptance Tests
- Allow user to select images by selecting a single image or directory of images from their local machine to upload
- Ensure that image(s) are uploaded as base 64 strings
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
- List the results of the analysis beside the image(s) that were uploaded
- Allow user to browse through the uploaded images and their results by scrolling through or clicking through the images
As a web user, I want to view a collage of the images so that I can do aggregate analysis.
Acceptance Tests
- Ensure that collage renders properly on the frontend client
- On clicking a button, the collage should render
As a web user, I want to view a dendrogram of the images so that I can understand the relationship between them.
Acceptance Tests
- Need to ensure dendrogram is rendered on the frontend client on click of a button
- Need to ensure dendrogram is rendered correctly
As a web user, I want to authenticate with my email so that I can access the website and its features.
Acceptance Tests
- If user inputs correct info, it allows them onto the website
- If the user inputs incorrect information, it declines entry onto website
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
- Allow web user to download the report as a json file on click of a download button
- Ensure that user can only request a download if they have uploaded an image(s) for analysis