Skip to content

OpenVINO at Google Summer Of Code in the past

Adrian Boguszewski edited this page Feb 28, 2025 · 1 revision

Projects already implemented

The projects below have already been implemented and are here just for reference. Don't select any project below for your application.

1. Train a DL model for synthetic data generation for model optimization

Short description: In most cases, DL model optimization requires the presence of real data that the user should provide for the optimization method (e.g. quantization or pruning). However, it was noticed that such methods can perform quite well on synthetic data that are not even relevant to the use case. In this task, we will create a synthetic GAN or VAE-based DL model that is capable of generating synthetic images based on the text hints provided by the user. This data will be used to evaluate the 8-bit post-training quantization method on a wide range of Computer Vision models.

Expected outcomes: DL model that generates synthetic data based on the text input.

Skills required/preferred: DL model training, understanding of GAN, VAE architectures

Mentors: Mansi Sharma

Size of project: 350 hours

Difficulty: Medium

Year: 2022

Implemented by: ThanosM97

The result: Code | Article 1 | Article 2 | Technical report

2. Object Detection demo application to run AI on ARM-based Android devices

Short description: ARM CPUs support has been added to Inference Engine via the dedicated ARM CPU plugin. ARM processors are widely used in Android smartphones, so we want to develop an Android demo application that demonstrates plugin possibilities on this platform. The demo should be written in Java and use Java wrappers to reach Inference Engine public API. We suggest reviewing the functionality of OMZ object detection demo and propagating its core functionality to the Android demo.

Expected outcomes: Android demo application with object detection functionality. Any model (or several models) from the list supported by the plugin could be used.

Skills required/preferred: Practical experience with developing Java apps for Android, at least a basic understanding of computer vision and deep learning technologies, enough to run a network and make it run at real-time speed

Mentors: Junwen Wu

Size of project: 350 hours

Difficulty: Medium

Year: 2022

Implemented by: IRONICBo

The result: Code | Article

3. 3D Jupyter Notebooks and WebGL Integration for OpenVINO

Short description: The world is 3D, but in AI development, we often work on flat 2D displays with flat data visualization plots and charts. In machine learning, many of the tasks may be much better understood if we provide a 3D or 4D (space and time) perspective. In this project, we will answer this question by providing the beginner-friendly Jupyter 3D engine for machine learning visualization along with WebGL integration. Our main goal is not only to make 3D or 4D datasets easier to visualize, but also to make machine learning easier to understand in a more humanistic way.

Expected outcomes: Working 3D support for Jupyter Notebooks running OpenVINO (AI inference). For example, visualizing 3D body pose and characters, visualization 2D-3D mapping, and also providing a clean interface to set up these without a 3D engine or graphics programming background.

Skills required/preferred: Understanding of graphics pipelines (GPU programming is a plus), Software Engineer background and code releasing, Python, C++

Mentors: Raymond Lo

Size of project: 350 hours

Difficulty: Medium to hard

Year: 2022

Implemented by: spencergotowork

The result: Code | Article

4. Showcase performance of PyTorch Image Models (timm) with OpenVINO

Short description: DL model inference performance has been a hop trend in recent years aimed at bringing AI into real-world applications. And OpenVINO is a famous DL inference solution that delivers best-in-class performance on Intel Architectures. In this task, we will provide a Jupyter notebook/tutorial where we showcase inference performance on the set of popular DL models that come from the PyTorch Image Models project on GitHub (timm). The tutorial will provide details on installing OpenVINO, converting models to OpenVINO Intermediate Representation, and properly benchmarking under the various settings.

Expected outcomes: Pull-request with the tutorial into PyTorch Image Models.

Skills required/preferred: DL basics, understanding of ML model optimization

Mentors: Alexander Kozlov, Liubov Talamanova

Size of project: 175 hours

Difficulty: Easy

Year: 2023

Implemented by: sawradip

The result: Code | Article

5. Add OpenVINO support to John Snow Labs Spark NLP

Short description: Spark NLP is an open-source NLP library in production that offers state-of-the-art transformers at scale by extending Apache Spark natively. It supports Python, R as well as JVM ecosystems (Java, Scala, and Kotlin). It is available on PyPI, Conda, and Maven and ships with many NLP features, pre-trained models and pipelines. Currently, CPU optimization is realized via Intel Optimized Tensorflow. The goal of this project is to add support for OpenVINO in Spark NLP, such that users can create and deploy optimized NLP models on Intel hardware through OpenVINO. The project will involve the following tasks:

  1. Explore OpenVINO for Java solution and use JNI to load and infer OpenVINO IR models in Java. Identify additional ops and configs or additional engineering work that is needed for this JNI implementation.
  2. Benchmarking on some representative pre-trained models.

This project would benefit the Spark-NLP developers to take advantage of OpenVINO's optimization capabilities on Intel hardware. It would also benefit Intel and the OpenVINO community by expanding the reach of OpenVINO to a wider range of use cases and developers.

Expected outcomes:

  1. Pull request to the Spark-NLP repo for OpenVINO integration
  2. Documentation and sample scripts to demonstrate how to use OpenVINO with Spark-NLP
  3. Summary on model/operator coverages for Spark-NLP OpenVINO integration (optional)

Skills required/preferred: Java knowledge, basic knowledge of OpenVINO framework, basic knowledge of Spark. Experience with NLP deep learning models, such as BERT etc.

Mentors: Junwen Wu, Ravi Panchumarthy

Size of project: 350 hours

Difficulty: Medium

Year: 2023

Implemented by: rajatkrishna

The result: Code | Article 1 | Article 2 | Article 3

6. Industrial meter reading with OpenVINO

Short description: Automatic industrial meter reading could help utility providers (such as gas or electricity providers) and manufacturers monitor the real-time status data from industrial meters and enable further diagnosis of possible anomalies without periodic trips to each physical location to read a meter. We have provided code examples of automatic meter reading using the PaddlePaddle DL framework for analog and digital meters. To extend the automatic meter reading solutions, we’d like to see solutions using the DL framework on TensorFlow or PyTorch and supporting multi-task input with GUI. The solution pipeline could follow our code examples on the OpenVINO Notebooks repository.

Expected outcomes: In the first stage, we expect a demo repository including testing datasets, demo codes, and test results for metering reading with OpenVINO, using DL models from TensorFlow or PyTorch frameworks. The result should cover contributions to Open Model Zoo demos and can be represented as a notebook as well. We can follow the workflow and reuse the functions in 203-meter-reader and 405-paddle-ocr-webcam, and combine the new work with these notebooks.

In the second stage, this demo can be refined to support multiple camera inputs with GUI, making it more like a real solution for the industry. In this case, the features of OpenVINO, like async API and performance hints, can help improve multi-task workload performance. With GUI, we can demonstrate a live demo with some web/IP cameras for a better user experience. Tools like Flask, HTML, or Java Script can help us quickly create an interactive user interface.

Skills required/preferred: Python programming, knowledge of popular frameworks for DL - PyTorch or/and TensorFlow, Flask, HTML, Java Script

Mentors: Ethan Yang, Zhuo Wu

Size of project: 350 hours

Difficulty: Medium

Year: 2023

Implemented by: ashish-2005

The result: Report | Code | Article

7. Add ensembling methods for tiling to Anomalib

Short description: Detecting small defects in high-resolution images can be a challenging task for anomaly detection models. Anomalib currently has a tiling mechanism in place to improve the detection capabilities for such datasets, which involves dividing the input images into a grid of tiles which are then processed separately by the model. A limitation of the tiling mechanism is that a single model is trained on all tile locations combined, leaving the approach ineffective for locally-aware models that require a fixed position and orientation of the objects in the images. For such models, an ensemble approach would be required. The idea is to train separate models for each of the tile locations and combine the predictions of the models in the post-processing stage. This project involves adding such an ensemble approach to tiling to the Anomalib library.

Expected outcomes: Data-to-prediction pipeline incorporating ensemble-based tiling

Skills required/preferred: ML basics, Python

Mentors: Dick Ameln, Samet Akcay

Size of project: 175 hours

Difficulty: Medium

Year: 2023

Implemented by: blaz-r

The result: Report | Code | Article

8. Anomaly Segmentation Metrics for anomalib

Short description: This project proposes novel evaluation metrics for anomaly segmentation in computer vision, taking into account pixel-level and spatial information. The aim is to provide a more comprehensive evaluation of anomaly segmentation algorithms, aiding researchers and practitioners in selecting and fine-tuning models. The first proposed metric is the False Positive Blob Relative Volume (FP-BRV), which accounts for the visual nuisance of false positive pixels, complementing the Per-Region Overlap (PRO). The proposed metric will be evaluated on popular anomaly segmentation public datasets and visually validated. Milestones: prototype implementation, testing and validation on public datasets, production implementation, optimization/unit testing/documentation, and research paper writing. See "Section 5 Detailed project proposal" in the PDF for details and a timeline.

Expected outcomes: A new metric for segmentation prediction

Skills required/preferred: ML basics, Python

Mentors: Samet Akcay, Dick Ameln

Size of project: 175 hours

Difficulty: Medium

Year: 2023

Implemented by: jpcbertoldo

The result: Report | Demo | Article | Paper

9. OpenVINO Extension for Automatic1111 Stable Diffusion WebUI

Short description: Automatic1111 is a powerful web user interface based on Gradio library specifically designed for Stable Diffusion. It’s most popular open-source Stable Diffusion WebUI on GitHub with 119K+ stars, which supports a lot of features like text-to-image, image-to-image, inpainting, Lora models, custom models from model hubs like civitai.com and huggingface etc. OpenVINO support for Automatic1111 enables Stable Diffusion run on Intel CPUs and GPUs, this solution is currently supported using a custom script. Implementing OpenVINO through the Automatic1111 extension will provide an easier way to use OpenVINO. This project will also aim to provide support for more AUTOMATIC111 features with OpenVINO. Task Description:

  • Develop a built-in extension for Automatic1111 SD WebUI based on the existing OpenVINO custom script leveraging Diffusers library.
  • Support some of the new features like Hires upscalers, new samplers, tiling, face restoration etc. Develop test scripts to evaluate these features.
  • Evaluate with different Stable Diffusion variants (V1.5, V2.1, XL, LCM etc.) on Intel CPUs and GPUs.
  • Optional: Evaluate compatibility with other extensions like ControlNet.

Expected outcomes:

  • Raise a PR with all the contributions to the OpenVINO fork and eventually to the mainstream Automatic1111 repo.
  • Documentation with clear description of features in the extension and demo videos.
  • Medium/OpenVINO blogs.

Skills required/preferred: Python, good understanding of Stable diffusion architectures, experience with Hugging Face and Diffusers libraries, experience with PyTorch (OpenVINO is a plus), Git.

Mentors: Anna Likholat, Mustafa Cavus

Size of project: 350 hours

Difficulty: Medium to hard

Year: 2024

Implemented by: mengbingrock

The result: Code | Report | Article

10. Inference of Neural model in Node.js environment using OpenVINO

Short description: There is a new OpenVINO NPM package. You can work with a neural model directly from your Node.js application now. We propose to rework existing samples that use Python API to Node.js API, or even implement new examples using OpenVINO JS API.

Expected outcomes:

  • Several reworked samples from documentation
  • Project uses a neural model to solve the task
  • Project uses OpenVINO in Node.js environment

Skills required/preferred: JavaScript, Node.js, Python

Mentors: Nikolai Vishniakov, Alicja Miłoszewska

Size of project: 90 hours

Difficulty: Easy to medium

Year: 2024

Implemented by: qxprakash

The result: Code | Report | Article

11. Add Image-to-Image and Image-to-Text generation with GUI support for OpenVINO GenAI

Short description: Currently, openvino.genai has C++ image generation pipeline with Stable Diffusion and LCM, but only Text-to-Image is supported. This project would add Image-to-Image generation and Image-to-Text generation support with C++ cross platform GUI.

Expected outcomes:

Skills required/preferred: C++ programming, knowledge of PyTorch and Qt Creator

Mentors: Su Yang, Fiona Zhao

Size of project: 175 hours

Difficulty: Medium

Year: 2024

Implemented by: chux0519

The result: Code | Article

12. OpenVINO adapters - PyTorch adapter

Short description: OpenVINO adapters' goal is to provide a lightweight layer of Python code that enables easy switching between already used framework (PyTorch) and OpenVINO - targeting inference purposes. The goal is to showcase the potential performance benefits of using OV. The change on the user side should look like import torch --> import openvino_adapters.torch and... that's it! (maybe some minor changes like excluding cuda() calls:)) The project includes the whole development cycle: creating POC, productization of the solution, adding tests, making an installable package, and creating documentation.

Expected outcomes:

  • openvino_adapters package that might be the full fledge open-sourced solution
  • Learning OpenVINO and PyTorch frameworks and creating translations between different APIs
  • Creating the first adapter for PyTorch

Skills required/preferred: Python, PyTorch knowledge

Mentors: Jan Iwaszkiewicz, Przemyslaw Wysocki, Anastasia Kuporosova

Size of project: 175 hours

Difficulty: Medium to hard

Year: 2024

Implemented by: LucaTamSapienza

The result: Code | Report | Article

13. Improve Generative AI workload performance on ARM devices with OpenVINO

Short description: The goal of this project is to implement set of optimizations inside OpenVINO runtime which target GenAI models (e.g. text-generation, diffusers). Optimizations should include improvements in terms of latency/throughput metrics, faster model compilation time and lower memory consumption.

Expected outcomes:

  • Better GenAI workloads adoption in OpenVINO on ARM devices
  • Better compilation and latency/throughput performance on GenAI models
  • Lower memory requirements to run GenAI applications

Skills required/preferred: Mac device with M1 / M2 / M3 chip is a must, C++

Mentors: Alexandr Voron, Dmitry Gorokhov

Size of project: 350 hours

Difficulty: Medium

Year: 2024

Implemented by: mory91

The result: Code | Report | Article

14. AnomalyGPT: Integrating Vision Language Models (VLMs) in Anomalib for zero- and few-shot anomaly detection

Short description: The goal of this project is to integrate the capabilities of Visual Language Models (VLMs) within the anomalib framework. Anomalib is a deep learning library designed for anomaly detection research. VLMs could be used for anomaly detection purposes by prompting the VLM to determine if an image contains an anomaly or not. An advantage of this approach over classical anomaly detection techniques is that a VLM can explain its decision in natural language, which benefits the interpretability of the predictions.

The first part of the project consists of creating a coupling between Anomalib and OpenAI’s ChatGPT API. The student will use the ChatGPT UI to create a custom GPT that is instructed to detect anomalies in images using ChatGPT’s internal VLM. On the Anomalib side, the student will create a model wrapper that interacts with the GPT through API calls so that the GPT’s predictions can be used within the Anomalib framework. Design choices will need to be made around parsing the responses of the GPT and presenting the predictions to the user. The student will conduct a series of experiments to investigate how the performance of the GPT compares to other Anomalib models on structural and logical anomaly detection datasets such as MVTec AD and MVTec LOCO.

Optional extensions of the project include replacing the ChatGPT model with a locally deployed open-source VLM such as LLaVa, and implementing a simple UI that allows a discourse-style interaction with the model.

Expected outcomes:

  • Integrate a custom GPT capable of zero-/few-shot anomaly detection into Anomalib using the ChatGPT API.
  • Design and update the prediction entity of Anomalib to return the predicted description from the model.
  • Conduct experiments to rate the performance of the GPT on different datasets.

Optional:

  • Replace the GPT API by utilizing an open-source VLM models such LLaVa.
  • Design a UI to interact with the model, and show the predictions by utilizing open-source tools such as Huggingface or Gradio.

Skills required/preferred:

  • Proficient in Python and familiar with deep learning frameworks like PyTorch Lightning.
  • Understanding of anomaly detection principles and experience with anomalib is a plus.
  • Knowledge of basic machine/deep learning and computer vision would be useful.

Mentors: Samet Akcay, Dick Ameln, Ashwin Vaidya

Size of project: 350 hours

Difficulty: Medium to hard

Year: 2024

Implemented by: Bepitic

The result: Code | Report | Article

15. Eyes health utilizing OpenVINO and Neural Processing Unit (NPU) on an AI PC

Short description: Many people spend a significant portion of their lives sitting in front of a PC, which can lead to eye fatigue. However, using a webcam it is possible to monitor and manage the amount of time a user spends in front of a computer screen.

Implement application uses a webcam to detect the user's gaze, thereby determining the duration of screen time. If the user exceeds a certain limit, the application sends an alert suggesting a break. This feature helps to prevent excessive screen time and promotes healthier computer usage habits.

The application also includes a user interface that allows users to set intervals for microbreaks.

In addition, the application provides reports on the amount of time spent looking at the display.

To optimize energy efficiency and performance, the application is to be designed to utilize the Neural Processing Unit (NPU) on an AI PC. This ensures that the application runs smoothly and efficiently, minimizing its impact on the computer's overall performance.

Expected outcomes:

  • A standalone desktop application, which is capable of detecting the user's gaze using a webcam and estimating the amount of time a user spends in front of a computer screen. 
  • The application also provides a user interface for configuration and reporting.
  • To use AI responsibly the application must ask a user for consent when tracking eye gaze and confirm, that data is kept locally on the PC.
  • The application utilizes the Neural Processing Unit (NPU) of an AI PC to perform the inference of the corresponding AI model locally. This eliminates the need for an internet connection, making the application more convenient and accessible.
  • The application showcases accuracy and power consumption levels, making it suitable for daily usage.

Skills required/preferred: Python, Deep Learning, Computer Vision

Mentors: Dmitriy Pastushenkov, Zhuo Wu

Size of project: 175 hours

Difficulty: Medium

Year: 2024

Implemented by: inbasperu

The result: Code | Report | Article

16. Porting and Optimizing OpenVINO for RISC-V Devices with Vector Extension

Short description: The project aims to enhance the runtime performance of OpenVINO on RISC-V devices to fully leverage their power efficiency for running DL/AI workloads efficiently. [Methodology] This will be achieved through three key optimization strategies: adopting or improving third-party libraries with RISC-V optimized primitives, porting existing x86/ARM optimized kernels to RISC-V ISA, and implementing device-specific transformation passes tailored for RISC-V backend optimizations.

Expected outcomes:

  • Adoption of optimized RISC-V kernels from third-party libraries for more operations in OpenVINO.
  • Porting of critical x86/ARM optimizations to RISC-V ISA.
  • Implementation of device-specific transformation passes for RISC-V backend requirements.
  • Demonstrated improvement in OpenVINO runtime performance on RISC-V CPU devices through benchmarking against determined workloads.

Skills required/preferred: C++, Deep Learning

Mentors: Alexandra Sidorova, Dmitry Gorokhov

Size of project: 175 hours

Difficulty: Medium to hard

Year: 2024

Implemented by: BHbean

The result: Code | Article

Clone this wiki locally