Hey all, today we're releasing BloodshotNet, the world's first open-source blood detection model. We built it primarily for Trust & Safety and content moderation use cases, the idea of acting as a front-line filter so users and human reviewers aren't exposed to graphic imagery.
What we're open sourcing today:
- 🤗 Dataset: 23k+ annotated images (forensic scenes, UFC footage, horror/gore movies, surgical content) with a large hard-negative slice to keep false positives in check. It quietly crossed 7k downloads before we even officially announced
- 🤗 Model weights: YOLO26 small and nano variants (AGPL-3.0)
- 🐙 CLI: analyze an image, folder, or video in one command, 2 lines of setup via uv
Performance on the small model:
- ~0.8 precision
- ~0.6 recall,
- 40+ FPS even on CPU
A few things we found interesting while building this:
The recall number looks modest, but in practice works well for video. Blood in high-contrast action/gore scenes gets caught reliably. For borderline cases, a sliding window over 5–10 second clips is the right approach; you don't need per-frame perfection, but rather a scene-level signal.
We tried open-vocabulary/text-prompt models like YOLO-E, and they genuinely struggled. Both recall and precision were bad. Our guess is a combination of filtered training data and the fact that blood has irregular enough patterns that a text description doesn't give the model much to work with. YOLO26 with ProgLoss + STAL was noticeably better, specifically for small objects like tiny droplets, and the training/augmentation tooling is just really solid.
We did consider transformer architectures as they'd theoretically handle the fluid dynamics and frame-to-frame context much better. The blocker is data: annotated video datasets for this basically don't exist and are hard to produce. YOLO26 also wins on latency and training stability, so it was the right call for now.
What's next:
- Expanding the dataset, specifically, more annotated cinematic content
- Training a YOLO26m (medium) variant
- OpenVINO INT8 exports for faster edge inference
If you want the full technical breakdown, we wrote it up here: article
Would love to know what you end up using it for. Contributions are welcome!
[link] [comments]
