EdgeNet Challenge Series - Shoe Image Classification Web App

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Challenge Overview

Welcome to the Topcoder EdgeNet Challenge Series! We are running a series of challenges leading up to the 2021 Topcoder Open (TCO) to educate and introduce you to the EdgeNet Platform, API’s and Services. Learn all about the Challenge Series - jump in, register on the EdgeNet Developer Platform, ask questions and have fun creating! Each Topcoder challenge in the series will have its own unique objectives so join in at any time and realize that the more you learn about EdgeNet and 5G, the more it will help you during TCO21 upcoming events.

Fun prizes

In addition to the cash prizes, AlefEdge will award an EdgeNet T-shirts for all submitters that pass review!

Challenge Objectives

The objective of this challenge is to build a web based shoe image classification demo, using a deep learning classification script as the starting point. Here the web app will allow a user to select and upload images to the backend. Once the backend classifies these images and returns the output, the frontend should be able to clearly demonstrate the class of each image. Broadly, the primary requirements of the challenge for the contestant are:

  • Understand the existing code: The contestants are expected to go through the existing code (available in the forum), which contains the deep learning model and the ancillary code that was developed in the previous challenge. Familiarity with machine learning and deep learning, particularly tools like PyTorch would be useful, but is not essential. All one needs to successfully understand the existing code is to be familiar with Python and to be able to refer to documentation as needed.
  • Create the web front-end to allow image uploading and to display classification results: The frontend of the web app needs to be built to allow users to upload images via a webcam to the backend, and to display classification results via a clean interface.
  • Create the web backend to receive images, perform classification and render results: A Python based backend needs to be built, which can accept uploaded images or urls as input, perform classification on these images using the existing deep learning model, and render the results in JSON format to the UI.

Project Background

The goal of the project is to build a demo image classification application for our client AlefEdge that can take as input an image, classify it and then perform some additional operations based on the classification. In the previous challenge, the task was limited to building the classification model and wrapping it into a function called classify_images, such that it is easy to invoke this function by the additional API and web components that will be built in this subsequent challenge. In this current challenge, we are building those additional components and the web app to enable the use and demonstration of the image classification capabilities of the developed model.

Challenge Details

  • Understand the existing code: The contestants are expected to go through the existing code (available in the forum), which contains the deep learning model and the ancillary code that was developed in the previous challenge. Familiarity with machine learning and deep learning, particularly tools like PyTorch would be useful, but is not essential. All one needs to successfully understand the existing code is to be familiar with Python and to be able to refer to documentation as needed.
  • The contestants are recommended to go through the previous challenge specification carefully and understand the importance of the classify_images function. This function has been built such that it can be easily incorporated within an API framework. The combination of previous challenge specification and the documentation included in the project folder should provide the necessary background about the function and its usage.
  • The existing classify_images function will be able to classify any image into one of the following classes: sneakers, boots, loafers, sandals, flip_flops, soccer_shoes, no_shoe_found.
  • Create the web front-end to allow image uploading via webcam and to display classification results: The frontend of the web app needs to be built to allow a webcam to push images to the backend, and to display classification results via a clean interface. The contestants are free to decide the overall look and design of the page, but in terms of aesthetics, the UI should be clean and the elements on the page should be well-placed and well-aligned. For each image that has been classified, its class name should be clearly visible somewhere around the image. In addition to the class name, a short string related to each class should also be displayed with smaller text under the recognised class name. The exact list of these class-specific strings will be shared in the forum.

    • Waiting messages or gifs - The UI should show proper waiting messages or gif animations while the images are being uploaded and then classified. At no time during the process, should the UI look like it has gone unresponsive.
    • Allowed Libraries - Contestants are free to use front-end libraries like Angular, React or Vue.
  • Create the web backend to receive images, perform classification and render results: A Python based backend needs to be built, which can accept uploaded images or urls as input, perform classification on these images using the existing deep learning model, and render the results in JSON format to the UI. The backend primarily has two components: the handler component and the image classification component:

    • Handler component - This component of the backend should take the uploaded images, store them in a temporary folder, and after the classification has been performed on them, these images should be deleted. These images should also be deleted in case any exception is detected during code execution. The list of local paths from this temporary folder then needs to be passed to the classification component, which in turn will return the list of classes. These results should then be returned to the client that made the API call.
    • Classification component - This will primarily consist of the classify_images function (developed in previous challenge) and all the ancillary code required for its execution. Note that the extraneous files that are of no use to the functionality should be removed, such as Jupyter Notebooks, videos etc. Although the contestants of the previous challenge were informed that the classify_images function would be used in the backend in the future, there could possibly be some areas in the code that might need to be improved to make it more suitable for backend execution. Note - the classify_images function need not be exposed as an endpoint. The handler component should be the only publicly exposed endpoint, which in turn will interact internally with the classification component.
    • On efficiency - an attempt should be made to keep the backend code as efficient as possible, because its speed will directly image the overall feel of the web app.
  • Optional Machine Learning feature requirement - The UI should highlight the shoe or otherwise identify via a circle or square, with the name of the class (as classified by the backend) clearly visible somewhere around the image. An additional bonus payment of $500 will be paid if this capability is added to to the backend.

Use of Docker

Use of Docker is allowed.

Review Criteria

The review will in general be performed as usual using a subjective scorecard.

For the coding and development part, the review will be similar to most code reviews, but there will be some subjective evaluation in terms of the quality of the UI and its user experience.

Technology Stack

Deployment Environment - Deployable languages are primarily Javascript and Python. The application should be deployable on any platform that can execute Docker. The contestant should ensure that the code contains nothing that keeps it from executing at standard container computing services provided by AWS, Azure etc. Language - Should be the same as that used by the existing code (details in the existing documentation)

What To Submit

  • Source code - The actual source code that has been developed.
  • Documentation - Instructions to deploy the solution from scratch.
  • Verification Instructions - The documentation should contain detailed instructions.
  • Video Bonus Contestants can optionally also include a video demonstrating their script and submission meets all the requirements. The video can be uploaded to YouTube, Google Drive, Dropbox or elsewhere and the link can be included in the submission archive. The video should demonstrate the submission in action, particularly the core requirements. If the submission manages to win a placement in the top 3 winners, a bonus of $50 will be awarded in addition to the prize money.

EdgeNet Topcoder Challenge Series

As part of the Topcoder EdgeNet Challenge series, we are excited to hear and learn from Topcoder Community members about your experience with this challenge, future challenges, and the EdgeNet platform. The winners of this challenge will have an opportunity to share their experience or be showcased as a top developer in EdgeNet challenges. Topcoder may reach out to the winner, where the winners can participate in additional marketing and promotional activities related to the EdgeNet Challenge Series.

ELIGIBLE EVENTS:

2022 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30192385