Industrial computer vision

Ten years of applied computer vision, first in research and then in industry: component inspection, tracking people and vehicles across multiple cameras, video anonymization for privacy, human motion analysis. I know industrial cameras (FLIR, Basler, Allied Vision), hardware triggers and synchronization, and I deploy models on GPU or on embedded hardware.

Typical problems

  • Rare, unpredictable defects: few labeled examples, an unsupervised approach is needed.
  • Counting and tracking people or vehicles across multiple cameras with floor plans and zones.
  • Video with faces and bodies that must be anonymized before archiving or analysis.
  • A model that runs in the lab but not on a 60 fps camera or on an embedded device.
  • Multi-camera acquisition that must be synchronized to the millisecond.

What I deliver

  • Acquisition setup: camera and lens selection, triggers, PTP synchronization, calibration.
  • Detection, segmentation, tracking and pose models trained on your data, with annotation tooling when needed.
  • Anomaly detection with autoencoders and perceptual losses for visual inspection.
  • Real-time pipelines from RTSP or files, with anonymization and re-encoding.
  • Edge optimization: INT8 quantization, TFLite, ONNX, microcontrollers.
  • Integration with MES, IoT brokers (FIWARE) and dashboards.

How I approach it

I start from the data: acquisition, image quality, annotation. A simple baseline before a large model. I measure on your videos, not on benchmarks, and I deliver a pipeline that runs where it needs to, not just in a notebook.

Work in this area

Manufacturing · EU H2020 project · 2022-2023

Shop-floor safety with computer vision

Problem
Detect falls, entries into restricted areas and distances between workers from the existing cameras, without exposing people's identity.
What I did
On the edge: segmentation, pose estimation, tracking, a fall classifier, in-frame anonymization and homography onto the floor plan. In the cloud: an event-driven FastAPI microservice that turns FIWARE events into three safety rules, a Streamlit dashboard for the safety manager, GitOps deployment on the project cluster with ArgoCD and Istio.
  • PyTorch
  • YOLACT
  • FIWARE / NGSI-LD
  • FastAPI
  • Streamlit
  • ArgoCD / Istio

Fitness equipment · R&D · 2022-2024

Automatic video anonymization for privacy

Problem
Hours of footage of people using gym equipment, to be reliably anonymized before archiving it or using it to train models.
What I did
A service in production for sixteen months that watches a folder and processes every new video with an ensemble of four models (two face and head detectors, one of them custom-trained, two pose estimators), fuses the results and blurs the regions, re-encodes with ffmpeg preserving audio, with a monitoring dashboard. A second real-time pipeline from RTSP with hourly file rotation and multi-GPU Docker deployment.
  • PyTorch
  • YOLOv7
  • Keypoint R-CNN
  • OpenCV
  • ffmpeg
  • RTSP
  • Docker

Retail and workplace spaces · 2018-2024

Multi-camera people tracking mapped onto a floor plan

Problem
Following people across multiple cameras in shops and workplaces, merging the tracks into a single trajectory on the floor plan and estimating aggregate data, without dedicated infrastructure.
What I did
A per-camera RTSP pipeline with a detector and DeepSORT, calibrated homographies onto the 2D plane, cross-camera track fusion by coordinates and appearance, re-identification with learned embeddings. Multiprocess architecture (acquisition, detection, tracking). A four-camera Basler acquisition rig PTP-synchronized under 15 ms with UWB positioning; integration of FLIR and Allied Vision cameras with hardware triggers.
  • DeepSORT
  • YOLOv3 / CenterNet
  • OpenCV
  • RTSP
  • Basler / FLIR / Allied
  • PTP
  • UWB

Fitness · digital coaching · 2023

Exercise recognition and rep counting from 3D poses

Problem
From a 3D pose sequence captured during an exercise, identify which exercise it is and count the repetitions, exposing joint angles for form analysis.
What I did
A transformer over 32-frame windows with multi-task heads: exercise classification, a heatmap for rep peaks with counting via peak detection, regression of twelve joint angles (elbow, shoulder, hip, knee) from a 23-joint skeleton. Five architectures compared, a separate geometry library, an annotation tool for repetitions.
  • PyTorch
  • Transformer
  • Fit3D
  • SciPy
  • Biomechanics

Railway infrastructure · research · 2019-2020

Railway inspection with unsupervised anomaly detection

Problem
Finding defects on wheels and components from thermal and RGB images when defect examples are rare and unpredictable.
What I did
A convolutional autoencoder trained only on normal images, a composite SSIM, perceptual and gradient loss, full-image and crop variants, threshold sweeps and clustering of reconstruction errors, optimization for embedded hardware. A twelve-class annotation tool and dataset pipeline. Published at ICPR 2020 and AI4RAILS 2020.
  • PyTorch
  • Autoencoder
  • SSIM
  • Thermal
  • PyQt5
  • ICPR 2020

Industrial components · edge · 2021-2022

Anomaly detection on components and edge models

Problem
Inspecting mass-produced components and running the models on small hardware, from an industrial CPU down to a microcontroller.
What I did
An autoencoder with a selectable backbone and SSIM loss for visual inspection, with post-training INT8 quantization. A lightweight detector exported to TFLite with parity checks between the float and quantized model. A benchmark of 33 quantized models on an ultra-low-power RISC-V microcontroller, with cycles and MACs per cycle measured.
  • PyTorch
  • TFLite
  • Quantization
  • MobileNet
  • GAP8
  • Edge

Large-scale retail and urban mobility · 2021-2023

Counting and flows from video: retail checkouts and traffic

Problem
Counting items on a checkout belt in real time and estimating vehicle and pedestrian flows from GoPro footage, without cloud infrastructure.
What I did
For checkouts: an RTSP pipeline with classical vision (background subtraction, morphology), events with temporal voting, homography calibration and a precision, recall and F1 evaluation harness across many videos, targeting 60 fps. For traffic: a desktop application with YOLOX and SORT, line-crossing counting, vehicle reclassification with k-means, an installer for the end user.
  • OpenCV
  • YOLOX
  • SORT
  • RTSP
  • DearPyGui
  • k-means

Research roots

Manufacturing and cultural heritage · research · 2016-2018

2D-3D matching for augmented reality

Problem
Recognizing an industrial component or an architectural detail from a photo and overlaying information, without markers.
What I did
For an AR industrial catalog: a server that segments the component with GrabCut and dense-CRF and registers it to the template via feature-based, ArUco, or manual-point homography. For the master's thesis: real-time registration of a photo against a 3D structure-from-motion model, comparing nearest-neighbor search backends down to a CUDA kernel, and a native Android app with video streaming. Published at AVR 2016.
  • OpenCV
  • SIFT
  • Structure-from-Motion
  • GrabCut
  • CUDA
  • Android

Frequently asked questions

What sectors have you worked in?

Manufacturing and components, precision agriculture, retail, fitness and digital coaching, diagnostics and medtech, railways, institutional catering, university research. The method is the same: data, metric, prototype, production.

Do you work remotely or on site?

Both. I am based in Modena and work remotely with clients across Italy; for data acquisition, camera installations and sessions with the team I come on site, mostly in Emilia-Romagna and northern Italy.

How long does a prototype take?

A measurable PoC generally takes two to six weeks, depending on the available data. Production depends on the integration: one to three months for a service with APIs, tests and deployment.