Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
OmniShotCut is a sensitive and more informative SoTA on Shot Boundary Detection task.
| Date | Stars |
|---|---|
| 2026-07-31 | 263 |
| 2026-08-06 | 266 |
| 2026-08-14 | 280 |
| 2026-08-18 | 283 |
| 2026-08-19 | 284 |
| 2026-08-20 | 287 |
| 2026-08-21 | 289 |
| 2026-08-23 | 290 |
| 2026-08-24 | 291 |
| 2026-08-25 | 292 |
| 2026-08-27 | 293 |
| 2026-08-28 | 294 |
| 2026-08-31 | 295 |
| 2026-09-03 | 296 |
| 2026-09-05 | 297 |
| 2026-09-07 | 298 |
| 2026-09-10 | 299 |
| 2026-09-11 | 300 |
| 2026-09-12 | 301 |
| 2026-09-14 | 302 |
| 2026-09-15 | 303 |
| 2026-09-16 | 305 |
| 2026-09-17 | 306 |
| 2026-09-18 | 307 |
| 2026-09-19 | 309 |
| 2026-09-20 | 309 |
Today
— stars today
This week
+8 stars this week
This month
+20 stars this month
Momentum
8.0
growth rate 2.66%/day
<p align="center">
<img src="__assets__/logo.png" height="100">
</p>
## OmniShotCut: Holistic Relational Shot Boundary Detection with Shot-Query Transformer
OmniShotCut is a sensitive and more informative SoTA for Shot Boundary Detection. \
OmniShotCut can detect shot changes of the video in diverse sources (anime, vlog, game, shorts, sports, screen recording, etc.), and recognize Sudden Jump and Transitions (dissolve, fade, wipe, etc.) by proposing a Shot-Query-based Video Transformer.
[](https://arxiv.org/abs/2604.24762)
[](https://uva-computer-vision-lab.github.io/OmniShotCut_website/)
<a href="https://huggingface.co/spaces/uva-cv-lab/OmniShotCut"><img src="https://img.shields.io/static/v1?label=%F0%9F%A4%97%20HF%20Space&message=Online+Demo&color=orange"></a>
<a href="https://huggingface.co/uva-cv-lab/OmniShotCut_v1.5"><img src="https://img.shields.io/static/v1?label=%F0%9F%A4%97%20HuggingFace&message=Model+Weight&color=orange"></a>
🔥 [Update](#Update) **|** 🐍 [Quick Start](#quick_start) **|** 🔧 [Installation](#Installation) **|** ⚡ [Inference](#fast_inference) **|** 🤗 [Model Zoo](#model_zoo)
## <a name="Update"></a>Update 🔥🔥🔥
- [x] Release ArXiv paper
- [x] Release the inference weights
- [x] Release Gradio demo (with online)
- [x] Release 'pip install omnishotcut' version
- [x] **Released the v1.5 weight** — a larger model with fewer false cuts on continuous camera motion / lighting changes and better dense fast-cut recall.
- [ ] Release the benchmark
- [ ] Release the training code and curation
:star: **If you like OmniShotCut, please help ⭐⭐star⭐⭐ this repo. Thanks!** :hugs:
<p align="center">
<img src="__assets__/teaser.png" style="border-radius: 15px">
</p>
<p align="center">
<img src="__assets__/model_architecture.png" style="border-radius: 15px">
</p>
## <a name="quick_start"></a> Quick Start 🐍
First install PyTorch with CUDA support, and make sure a working `ffmpeg` binary is
on your `PATH` (used for video decoding; e.g. `conda install -c conda-forge ffmpeg`).
Then install OmniShotCut:
```shell
pip install git+https://github.com/UVA-Computer-Vision-Lab/OmniShotCut.git
```
Once installed, running shot boundary detection is just a few lines:
```python
import omnishotcut
# Load model — accepts a local checkpoint path or HuggingFace repo
cut_model = omnishotcut.load("uva-cv-lab/OmniShotCut_v1.5", filename = "OmniShotCut_ckpt.pth")
# Run on a video file
ranges = cut_model.inference("video.mp4", mode="clean_shot")
```
`ranges` is a list of `[start_frame, end_frame]` pairs for each detected shot.
By default `mode="clean_shot"` returns only clean cuts (no transitions).
Use `mode="default"` to also get dissolves, wipes, and fades with their labels:
```python
ranges, intra_labels, inter_labels = cut_model.inference("video.mp4", mode="default")
```
Besides video file paths, `inference()` also accepts **numpy** arrays and **torch** tensors directly — both `(T, H, W, 3)` RGB (either `uint8`, or float in `[0, 1]`). The input H/W can be arbitrary; frames are resized to the model's process resolution automatically, so results match the video-file path:
```python
ranges = cut_model.inference(frames_thwc, mode="clean_shot") # frames_thwc: (T, H, W, 3)
```
## <a name="Installation"></a> Full Local Installation 🔧
```shell
conda create -n OmniShotCut python=3.10
conda activate OmniShotCut
conda install -c conda-forge ffmpeg # required: frame-accurate video decoding backend
pip install -r requirements.txt
pip install -e .
```
> **Note:** video decoding uses `ffmpeg` (via `ffmpeg-python`), so a working `ffmpeg`
> binary must be on your `PATH`. Installing it from `conda-forge` as above is the
> most reliable way to get one with all shared libraries present.
## <a name="fast_inference"></a> GraExcerpt of 7,256 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:fa7d98ac12b904e0, llm:Repository description: 'OmniShotCut is a sensitive and more informative SoTA on Shot Boundary Detection task.' Topics: scene-detection, video-processing, python.
matched fp:fa7d98ac12b904e0, llm:Repository description: 'OmniShotCut is a sensitive and more informative SoTA on Shot Boundary Detection task.' Topics: scene-detection, video-processing, python.
matched fp:fa7d98ac12b904e0, llm:Repository description: 'OmniShotCut is a sensitive and more informative SoTA on Shot Boundary Detection task.' Topics: scene-detection, video-processing, python.