All Projects → cj-mills → Barracuda-PoseNet-Tutorial

cj-mills / Barracuda-PoseNet-Tutorial

Licence: MIT license
This tutorial series provides step-by-step instructions for how to perform human pose estimation in Unity with the Barracuda inference library.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to Barracuda-PoseNet-Tutorial

ims
📚 Introduction to Modern Statistics - A college-level open-source textbook with a modern approach highlighting multivariable relationships and simulation-based inference.
Stars: ✭ 509 (+860.38%)
Mutual labels:  inference
RECCON
This repository contains the dataset and the PyTorch implementations of the models from the paper Recognizing Emotion Cause in Conversations.
Stars: ✭ 126 (+137.74%)
Mutual labels:  inference
motor-defect-detector-python
Predict performance issues with manufacturing equipment motors. Perform local or cloud analytics of the issues found, and then display the data on a user interface to determine when failures might arise.
Stars: ✭ 24 (-54.72%)
Mutual labels:  inference
IGoR
IGoR is a C++ software designed to infer V(D)J recombination related processes from sequencing data. Find full documentation at:
Stars: ✭ 42 (-20.75%)
Mutual labels:  inference
barracuda-style-transfer
Companion code for the Unity Style Transfer blog post, showcasing realtime style transfer using Barracuda.
Stars: ✭ 126 (+137.74%)
Mutual labels:  inference
infer
🔮 Use TensorFlow models in Go to evaluate Images (and more soon!)
Stars: ✭ 65 (+22.64%)
Mutual labels:  inference
chainer-fcis
[This project has moved to ChainerCV] Chainer Implementation of Fully Convolutional Instance-aware Semantic Segmentation
Stars: ✭ 45 (-15.09%)
Mutual labels:  inference
fast-fomm-mobile
Сompresssing First Order Motion Model for Image Animation to enable its real-time inference on mobile devices
Stars: ✭ 25 (-52.83%)
Mutual labels:  inference
object-size-detector-python
Monitor mechanical bolts as they move down a conveyor belt. When a bolt of an irregular size is detected, this solution emits an alert.
Stars: ✭ 26 (-50.94%)
Mutual labels:  inference
modelbox
A high performance, high expansion, easy to use framework for AI application. 为AI应用的开发者提供一套统一的高性能、易用的编程框架,快速基于AI全栈服务、开发跨端边云的AI行业应用。
Stars: ✭ 48 (-9.43%)
Mutual labels:  inference
mediapipe plus
The purpose of this project is to apply mediapipe to more AI chips.
Stars: ✭ 38 (-28.3%)
Mutual labels:  inference
intruder-detector-python
Build an application that alerts you when someone enters a restricted area. Learn how to use models for multiclass object detection.
Stars: ✭ 16 (-69.81%)
Mutual labels:  inference
ai-serving
Serving AI/ML models in the open standard formats PMML and ONNX with both HTTP (REST API) and gRPC endpoints
Stars: ✭ 122 (+130.19%)
Mutual labels:  inference
Molecules Dataset Collection
Collection of data sets of molecules for a validation of properties inference
Stars: ✭ 69 (+30.19%)
Mutual labels:  inference
nn-Meter
A DNN inference latency prediction toolkit for accurately modeling and predicting the latency on diverse edge devices.
Stars: ✭ 211 (+298.11%)
Mutual labels:  inference
mlss-2016
MLSS 2016 material.
Stars: ✭ 22 (-58.49%)
Mutual labels:  inference
go-topics
Latent Dirichlet Allocation
Stars: ✭ 23 (-56.6%)
Mutual labels:  inference
ReactiveMP.jl
Julia package for automatic Bayesian inference on a factor graph with reactive message passing
Stars: ✭ 58 (+9.43%)
Mutual labels:  inference
onnxruntime-rs
Rust wrapper for Microsoft's ONNX Runtime (version 1.8)
Stars: ✭ 149 (+181.13%)
Mutual labels:  inference
pia
📚 🔬 PIA - Protein Inference Algorithms
Stars: ✭ 19 (-64.15%)
Mutual labels:  inference

Barracuda PoseNet Tutorial 2nd Edition

Update - 3/10/22

Added a new branch and tutorial for adapting the project to run in a browser using WebGL.

You can try out a live demo at the link below.


Update - 12/7/21

Added a new branch that uses Barracuda version 2.3.1. Version 2.3.1 contains some improvements over version 2.1.0 used in the main branch that may be especially relevant when building for non-Windows platforms.

It has support for creating a tensor from a RenderTexture even when compute shaders or GPUs are not available.

It also now has a Pixel Shader worker. This allows models to run on GPU without requiring support for compute shaders. It has limited support at the moment, but seems to fully support the PoseNet models used in this project. My testing shows that it is much more performant than using the CSharpBurst worker type for both the MobileNet and ResNet50 versions of the model. Although, it is still not as performant as using compute shaders when those are available.


Introduction

This tutorial series provides step-by-step instructions for how to perform human pose estimation in Unity with the Barracuda inference library. We will be using a pretrained PoseNet model to estimate the 2D locations of key points on the bodies of one or more individuals in a video frame. We will then use the output from the model to control the locations of GameObjects in a scene.

Note: I have only tested this project on Windows 10 with an Nvidia GPU. I do not have a Mac, but some readers have reported problems with using a webcam in Unity on Mac. There might also be some issues with GPU inference with the Metal Graphics API.

Single Pose Estimation

Multi-Pose Estimation

Demo Videos

Tutorial Links

Part 1: This post covers the process for installing the Barracuda package as well as importing the required video files and PoseNet models into the project.

Part 2: This post covers how to set up a video player and webcam in Unity. We'll be using the video player to check the accuracy of the PoseNet model.

Part 3: This post covers how to implement the preprocessing steps for the PoseNet models.

Part 4: This post covers how to load, modify, and execute the PoseNet models.

Part 5: This post covers how to implement the post processing steps for single pose estimation.

Part 6: This post covers how to implement the post processing steps for multi-pose estimation.

Part 7: This post covers how to create pose skeletons and manipulate them using output from the model.

WebGL: This post covers how to modify the Barracuda PoseNet project to run in the browser using WebGL.

Version 1

GitHub Repository

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].