flashstudio 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flashstudio might be problematic. Click here for more details.
- flashstudio-0.0.1/PKG-INFO +107 -0
- flashstudio-0.0.1/README.md +330 -0
- flashstudio-0.0.1/README_PYPI.md +72 -0
- flashstudio-0.0.1/flashstudio/__init__.py +5 -0
- flashstudio-0.0.1/flashstudio/app.py +194 -0
- flashstudio-0.0.1/flashstudio/cli.py +18 -0
- flashstudio-0.0.1/flashstudio/components/__init__.py +0 -0
- flashstudio-0.0.1/flashstudio/components/project_manager.py +490 -0
- flashstudio-0.0.1/flashstudio/components/sidebar.py +87 -0
- flashstudio-0.0.1/flashstudio/components/styles.py +346 -0
- flashstudio-0.0.1/flashstudio/components/wizard.py +45 -0
- flashstudio-0.0.1/flashstudio/components/zone_drawer/__init__.py +177 -0
- flashstudio-0.0.1/flashstudio/constants.py +245 -0
- flashstudio-0.0.1/flashstudio/core/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/core/constants.py +3 -0
- flashstudio-0.0.1/flashstudio/launcher.py +288 -0
- flashstudio-0.0.1/flashstudio/pages/__init__.py +8 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/_common.py +10 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/metrics.py +33 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/pipeline_status.py +35 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/project_banner.py +23 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/quick_actions.py +28 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/recent_runs.py +99 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/overview/tab.py +35 -0
- flashstudio-0.0.1/flashstudio/pages/dashboard/page.py +17 -0
- flashstudio-0.0.1/flashstudio/pages/data/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/data/_common.py +107 -0
- flashstudio-0.0.1/flashstudio/pages/data/download/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/data/download/tab.py +75 -0
- flashstudio-0.0.1/flashstudio/pages/data/helpers.py +338 -0
- flashstudio-0.0.1/flashstudio/pages/data/page.py +50 -0
- flashstudio-0.0.1/flashstudio/pages/data/preview/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/data/preview/tab.py +139 -0
- flashstudio-0.0.1/flashstudio/pages/data/upload/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/data/upload/tab.py +156 -0
- flashstudio-0.0.1/flashstudio/pages/data/verify/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/data/verify/tab.py +108 -0
- flashstudio-0.0.1/flashstudio/pages/export/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/export/page.py +54 -0
- flashstudio-0.0.1/flashstudio/pages/export/weights/__init__.py +4 -0
- flashstudio-0.0.1/flashstudio/pages/export/weights/exporter.py +60 -0
- flashstudio-0.0.1/flashstudio/pages/export/weights/settings.py +86 -0
- flashstudio-0.0.1/flashstudio/pages/inference/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/inference/_common.py +76 -0
- flashstudio-0.0.1/flashstudio/pages/inference/data/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/inference/data/tab.py +121 -0
- flashstudio-0.0.1/flashstudio/pages/inference/model/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/inference/model/tab.py +62 -0
- flashstudio-0.0.1/flashstudio/pages/inference/page.py +42 -0
- flashstudio-0.0.1/flashstudio/pages/inference/run/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/inference/run/detection.py +133 -0
- flashstudio-0.0.1/flashstudio/pages/inference/run/tab.py +161 -0
- flashstudio-0.0.1/flashstudio/pages/inference/run/video.py +195 -0
- flashstudio-0.0.1/flashstudio/pages/inference/solution/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/inference/solution/tab.py +121 -0
- flashstudio-0.0.1/flashstudio/pages/model/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/model/_common.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/model/advanced/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/model/advanced/tab.py +54 -0
- flashstudio-0.0.1/flashstudio/pages/model/architecture/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/model/architecture/tab.py +90 -0
- flashstudio-0.0.1/flashstudio/pages/model/augment/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/model/augment/tab.py +18 -0
- flashstudio-0.0.1/flashstudio/pages/model/hyperparams/__init__.py +4 -0
- flashstudio-0.0.1/flashstudio/pages/model/hyperparams/tab.py +89 -0
- flashstudio-0.0.1/flashstudio/pages/model/page.py +30 -0
- flashstudio-0.0.1/flashstudio/pages/model/utils/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/model/utils/config.py +27 -0
- flashstudio-0.0.1/flashstudio/pages/training/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/training/_common.py +24 -0
- flashstudio-0.0.1/flashstudio/pages/training/launch/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/training/launch/controls.py +84 -0
- flashstudio-0.0.1/flashstudio/pages/training/launch/dialogs.py +247 -0
- flashstudio-0.0.1/flashstudio/pages/training/launch/preflight.py +77 -0
- flashstudio-0.0.1/flashstudio/pages/training/launch/runner.py +440 -0
- flashstudio-0.0.1/flashstudio/pages/training/launch/tab.py +134 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/__init__.py +3 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/checkpoints.py +96 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/curves.py +113 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/dashboard.py +129 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/gt_verification.py +122 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/log_viewer.py +43 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/parsers.py +253 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/run_meta.py +165 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/tab.py +142 -0
- flashstudio-0.0.1/flashstudio/pages/training/monitor/visualizations.py +52 -0
- flashstudio-0.0.1/flashstudio/pages/training/page.py +134 -0
- flashstudio-0.0.1/flashstudio/utils/__init__.py +152 -0
- flashstudio-0.0.1/flashstudio/utils/config.py +104 -0
- flashstudio-0.0.1/flashstudio/utils/device.py +67 -0
- flashstudio-0.0.1/flashstudio/utils/filesystem.py +67 -0
- flashstudio-0.0.1/flashstudio/utils/jobs.py +95 -0
- flashstudio-0.0.1/flashstudio/utils/training_hooks.py +266 -0
- flashstudio-0.0.1/flashstudio.egg-info/PKG-INFO +107 -0
- flashstudio-0.0.1/flashstudio.egg-info/SOURCES.txt +107 -0
- flashstudio-0.0.1/flashstudio.egg-info/dependency_links.txt +1 -0
- flashstudio-0.0.1/flashstudio.egg-info/entry_points.txt +2 -0
- flashstudio-0.0.1/flashstudio.egg-info/requires.txt +21 -0
- flashstudio-0.0.1/flashstudio.egg-info/top_level.txt +2 -0
- flashstudio-0.0.1/pyproject.toml +69 -0
- flashstudio-0.0.1/setup.cfg +4 -0
- flashstudio-0.0.1/tests/test_app.py +120 -0
- flashstudio-0.0.1/tests/test_cli.py +37 -0
- flashstudio-0.0.1/tests/test_constants.py +172 -0
- flashstudio-0.0.1/tests/test_launcher.py +60 -0
- flashstudio-0.0.1/tests/test_pipeline_flow.py +771 -0
- flashstudio-0.0.1/tests/test_save_dir_compat.py +685 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: flashstudio
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Interactive Training & Inference UI for FlashDet — runs on Google Colab
|
|
5
|
+
Author: FlashVision
|
|
6
|
+
License: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/FlashVision/FlashStudio
|
|
8
|
+
Project-URL: Repository, https://github.com/FlashVision/FlashStudio
|
|
9
|
+
Keywords: object-detection,flashdet,training,inference,ui,colab
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: streamlit>=1.28.0
|
|
18
|
+
Requires-Dist: plotly>=5.0
|
|
19
|
+
Requires-Dist: pandas>=1.5
|
|
20
|
+
Requires-Dist: pillow>=9.0
|
|
21
|
+
Requires-Dist: numpy>=1.21
|
|
22
|
+
Requires-Dist: opencv-python>=4.5
|
|
23
|
+
Requires-Dist: pyyaml>=6.0
|
|
24
|
+
Requires-Dist: flashdet
|
|
25
|
+
Provides-Extra: full
|
|
26
|
+
Requires-Dist: torch>=2.0; extra == "full"
|
|
27
|
+
Requires-Dist: flashdet[export]; extra == "full"
|
|
28
|
+
Requires-Dist: pyngrok>=6.0; extra == "full"
|
|
29
|
+
Provides-Extra: ngrok
|
|
30
|
+
Requires-Dist: pyngrok>=6.0; extra == "ngrok"
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: ruff; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
35
|
+
|
|
36
|
+
# FlashStudio
|
|
37
|
+
|
|
38
|
+
**Interactive Training & Inference UI for FlashDet**
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Install
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install flashstudio
|
|
46
|
+
pip install git+https://github.com/FlashVision/FlashDet.git
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Launch locally
|
|
53
|
+
flashstudio
|
|
54
|
+
|
|
55
|
+
# Or with Python
|
|
56
|
+
from flashstudio import launch
|
|
57
|
+
launch()
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Google Colab
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
!pip install flashstudio
|
|
64
|
+
!pip install git+https://github.com/FlashVision/FlashDet.git
|
|
65
|
+
|
|
66
|
+
from flashstudio import launch
|
|
67
|
+
launch(ngrok_token="YOUR_TOKEN")
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Get a free ngrok token at: https://dashboard.ngrok.com/get-started/your-authtoken
|
|
71
|
+
|
|
72
|
+
## Features
|
|
73
|
+
|
|
74
|
+
- **Training** — Launch and monitor FlashDet training with live loss curves
|
|
75
|
+
- **Inference** — Run detection on images/video with 17 built-in solutions
|
|
76
|
+
- **Model Config** — FlashDet (Pico → X) + YOLOv8/v9/v10/v11/YOLOX
|
|
77
|
+
- **Data** — Upload datasets or download from FlashDet registry
|
|
78
|
+
- **Export** — ONNX export with FP16 support
|
|
79
|
+
- **Dashboard** — Project overview with recent runs and metrics
|
|
80
|
+
|
|
81
|
+
## Supported Models
|
|
82
|
+
|
|
83
|
+
| Model | Params | Use Case |
|
|
84
|
+
|-------|--------|----------|
|
|
85
|
+
| FlashDet-Pico | ~298K | Edge / MCU |
|
|
86
|
+
| FlashDet-Nano | ~790K | Embedded / IoT |
|
|
87
|
+
| FlashDet-Small | ~1.8M | General purpose |
|
|
88
|
+
| FlashDet-Medium | ~3.6M | High accuracy |
|
|
89
|
+
| FlashDet-Large | ~5.8M | High accuracy |
|
|
90
|
+
| FlashDet-X | ~9.0M | Server / Max accuracy |
|
|
91
|
+
|
|
92
|
+
## Requirements
|
|
93
|
+
|
|
94
|
+
- Python >= 3.10
|
|
95
|
+
- FlashDet (for training/inference)
|
|
96
|
+
- ngrok account (free, for Colab)
|
|
97
|
+
- GPU recommended for training
|
|
98
|
+
|
|
99
|
+
## Links
|
|
100
|
+
|
|
101
|
+
- GitHub: https://github.com/FlashVision/FlashStudio
|
|
102
|
+
- FlashDet: https://github.com/FlashVision/FlashDet
|
|
103
|
+
- Organization: https://flashvision.github.io
|
|
104
|
+
|
|
105
|
+
## License
|
|
106
|
+
|
|
107
|
+
Apache-2.0
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/FlashVision/FlashStudio/main/assets/logo.png" width="200" alt="FlashStudio Logo">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">FlashStudio</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://pypi.org/project/flashstudio/"><img src="https://badge.fury.io/py/flashstudio.svg" alt="PyPI version"></a>
|
|
9
|
+
<img src="https://img.shields.io/badge/python-3.9+-blue.svg?logo=python&logoColor=white" alt="Python 3.9+">
|
|
10
|
+
<img src="https://img.shields.io/badge/Streamlit-UI-FF4B4B?logo=streamlit&logoColor=white" alt="Streamlit">
|
|
11
|
+
<img src="https://img.shields.io/badge/FlashDet-Powered-00CCFF?logo=lightning&logoColor=white" alt="FlashDet">
|
|
12
|
+
<img src="https://img.shields.io/badge/License-Apache%202.0-green.svg" alt="License">
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<b>Interactive Training & Inference UI for FlashDet — runs locally or on Google Colab with a Streamlit interface.</b>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<img src="docs/mockups/flashstudio_streamlit_mockup.png" width="800" alt="FlashStudio UI"/>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
- 🏋️ **Training Dashboard** — Real-time monitoring with live loss curves, per-epoch visualizations, GT verification
|
|
26
|
+
- 🧠 **Model Config** — All 6 FlashDet sizes + YOLOv8/v9/v10/v11/YOLOX with accurate params
|
|
27
|
+
- 🔍 **Inference Pipeline** — 4-step wizard: Model → Data → Zone → Run (17 solutions, 6 trackers)
|
|
28
|
+
- 📤 **Export** — ONNX export with FP16 auto-generated weights
|
|
29
|
+
- 📦 **Data** — Native `flashdet download` datasets + custom upload (COCO/VOC/YOLO formats)
|
|
30
|
+
- 📊 **Dashboard** — Overview with recent training runs from workspace
|
|
31
|
+
- 🚀 **Colab Support** — Works out-of-the-box, no token or signup needed
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## UI Tour
|
|
36
|
+
|
|
37
|
+
### Dashboard
|
|
38
|
+
Project overview with key metrics (GPU, Dataset, Model, mAP), pipeline status, quick actions, and recent training runs.
|
|
39
|
+
|
|
40
|
+
<p align="center">
|
|
41
|
+
<img src="demos/01_dashboard.gif" width="800" alt="Dashboard"/>
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
### Data Management
|
|
45
|
+
Upload datasets (ZIP/TAR), download from `flashdet` registry, preview images with navigation, and verify annotations.
|
|
46
|
+
|
|
47
|
+
<p align="center">
|
|
48
|
+
<img src="demos/02_data.gif" width="800" alt="Data Management"/>
|
|
49
|
+
</p>
|
|
50
|
+
|
|
51
|
+
### Model Configuration
|
|
52
|
+
Choose from 6 FlashDet sizes + YOLO variants. Configure hyperparameters, augmentations, and advanced settings (memory optimization, distributed training).
|
|
53
|
+
|
|
54
|
+
<p align="center">
|
|
55
|
+
<img src="demos/03_model.gif" width="800" alt="Model Configuration"/>
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
### Training
|
|
59
|
+
Create experiments, launch training with preflight checks, and monitor runs with real-time curves, visualizations, ground truth, logs, and file browser.
|
|
60
|
+
|
|
61
|
+
<p align="center">
|
|
62
|
+
<img src="demos/04_training.gif" width="800" alt="Training"/>
|
|
63
|
+
</p>
|
|
64
|
+
|
|
65
|
+
### Export
|
|
66
|
+
Export trained models to ONNX format with configurable opset, image size, and dynamic batching. Auto-detects saved weights from training.
|
|
67
|
+
|
|
68
|
+
<p align="center">
|
|
69
|
+
<img src="demos/05_export.gif" width="800" alt="Export"/>
|
|
70
|
+
</p>
|
|
71
|
+
|
|
72
|
+
### Inference
|
|
73
|
+
Full inference pipeline with 17 built-in solutions (object counting, speed estimation, heatmaps, security alarms, etc.). Interactive zone drawing with Polygon, Rectangle, and Line tools.
|
|
74
|
+
|
|
75
|
+
<p align="center">
|
|
76
|
+
<img src="demos/06_inference.gif" width="800" alt="Inference"/>
|
|
77
|
+
</p>
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Installation
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install flashstudio
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
This automatically installs FlashDet and all other dependencies.
|
|
88
|
+
|
|
89
|
+
<details>
|
|
90
|
+
<summary><b>Development install (from source)</b></summary>
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
git clone https://github.com/FlashVision/FlashStudio.git
|
|
94
|
+
cd FlashStudio
|
|
95
|
+
pip install -e .
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
</details>
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Usage — Local Machine
|
|
103
|
+
|
|
104
|
+
### Option 1: CLI
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
flashstudio --port 8501
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Option 2: Streamlit directly
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
cd FlashStudio
|
|
114
|
+
streamlit run flashstudio/app.py
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Then open **http://localhost:8501** in your browser.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Usage — Google Colab
|
|
122
|
+
|
|
123
|
+
No signup or token needed. Just 2 steps:
|
|
124
|
+
|
|
125
|
+
### Step 1: Install
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
!pip install -q flashstudio
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Step 2: Launch
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
from flashstudio import launch
|
|
135
|
+
launch()
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
A clickable **"Open FlashStudio"** button appears in the cell output. Click it to open the UI.
|
|
139
|
+
|
|
140
|
+
FlashStudio auto-detects Colab and uses the built-in proxy to create a working URL — no `localhost`, no ngrok, no token.
|
|
141
|
+
|
|
142
|
+
<details>
|
|
143
|
+
<summary><b>Optional: ngrok for a stable public URL</b></summary>
|
|
144
|
+
|
|
145
|
+
If the built-in proxy doesn't work for your setup, you can use ngrok as a fallback:
|
|
146
|
+
|
|
147
|
+
1. Get a free token at https://dashboard.ngrok.com/get-started/your-authtoken
|
|
148
|
+
2. Pass it when launching:
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
launch(ngrok_token="YOUR_TOKEN")
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Or set it as an environment variable:
|
|
155
|
+
|
|
156
|
+
```python
|
|
157
|
+
import os
|
|
158
|
+
os.environ["NGROK_TOKEN"] = "YOUR_TOKEN"
|
|
159
|
+
launch()
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
</details>
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Google Colab Notebooks (Ready to Use)
|
|
167
|
+
|
|
168
|
+
| Notebook | Description | Link |
|
|
169
|
+
|----------|-------------|------|
|
|
170
|
+
| Training | Train FlashDet models | [](https://colab.research.google.com/github/FlashVision/FlashStudio/blob/main/notebooks/FlashStudio_Train.ipynb) |
|
|
171
|
+
| Inference | Run detection on images/video | [](https://colab.research.google.com/github/FlashVision/FlashStudio/blob/main/notebooks/FlashStudio_Inference.ipynb) |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Supported Models
|
|
176
|
+
|
|
177
|
+
| Model | Params | Best For |
|
|
178
|
+
|-------|--------|----------|
|
|
179
|
+
| FlashDet-Pico | ~298K | Edge / MCU |
|
|
180
|
+
| FlashDet-Nano | ~790K | Embedded / IoT |
|
|
181
|
+
| FlashDet-Small | ~1.8M | General purpose |
|
|
182
|
+
| FlashDet-Medium | ~3.6M | High accuracy |
|
|
183
|
+
| FlashDet-Large | ~5.8M | High accuracy |
|
|
184
|
+
| FlashDet-X | ~9.0M | Max accuracy / Server |
|
|
185
|
+
| YOLOv8/v9/v10/v11/YOLOX | Varies | General YOLO |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Architecture
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
FlashStudio/
|
|
193
|
+
├── flashstudio/
|
|
194
|
+
│ ├── __init__.py # Package init + launch() export
|
|
195
|
+
│ ├── app.py # Main Streamlit app (wizard flow)
|
|
196
|
+
│ ├── launcher.py # Colab/local launcher (auto-tunnel)
|
|
197
|
+
│ ├── cli.py # CLI entrypoint
|
|
198
|
+
│ ├── constants.py # Centralized constants (paths, defaults, models)
|
|
199
|
+
│ │
|
|
200
|
+
│ ├── pages/ # Each page is a sub-package
|
|
201
|
+
│ │ ├── dashboard/
|
|
202
|
+
│ │ │ ├── page.py # Main dashboard render
|
|
203
|
+
│ │ │ ├── pipeline_status.py # Pipeline status cards
|
|
204
|
+
│ │ │ └── recent_runs.py # Recent training runs table
|
|
205
|
+
│ │ ├── data/
|
|
206
|
+
│ │ │ ├── page.py # Main data page render
|
|
207
|
+
│ │ │ ├── upload.py # Upload tab (ZIP/TAR + class config)
|
|
208
|
+
│ │ │ ├── download.py # Download tab (quick start + registries)
|
|
209
|
+
│ │ │ ├── preview.py # Preview tab (image grid + annotations)
|
|
210
|
+
│ │ │ ├── verify.py # Verify tab (dataset validation)
|
|
211
|
+
│ │ │ └── helpers.py # Shared helpers (extract, detect, convert)
|
|
212
|
+
│ │ ├── model/
|
|
213
|
+
│ │ │ ├── page.py # Main model page render
|
|
214
|
+
│ │ │ ├── architecture.py # Architecture tab (FlashDet/YOLO selection)
|
|
215
|
+
│ │ │ ├── hyperparams.py # Hyperparameters tab
|
|
216
|
+
│ │ │ ├── augmentation.py # Augmentation tab
|
|
217
|
+
│ │ │ ├── advanced.py # Advanced tab (memory, distributed)
|
|
218
|
+
│ │ │ └── summary.py # Config summary bar + YAML save/load
|
|
219
|
+
│ │ ├── training/
|
|
220
|
+
│ │ │ ├── page.py # Main training page render
|
|
221
|
+
│ │ │ ├── _common.py # Shared utilities (_get_save_dir)
|
|
222
|
+
│ │ │ ├── launch/ # Launch sub-package
|
|
223
|
+
│ │ │ │ ├── tab.py # Launch tab entry point
|
|
224
|
+
│ │ │ │ ├── preflight.py # Pre-flight checks
|
|
225
|
+
│ │ │ │ ├── runner.py # FlashDet Trainer subprocess
|
|
226
|
+
│ │ │ │ ├── controls.py # Start/stop/pause/resume buttons
|
|
227
|
+
│ │ │ │ └── dialogs.py # Clean/resume/config dialogs
|
|
228
|
+
│ │ │ └── monitor/ # Monitor sub-package
|
|
229
|
+
│ │ │ ├── tab.py # Monitor tab entry point
|
|
230
|
+
│ │ │ ├── run_meta.py # Run metadata extraction
|
|
231
|
+
│ │ │ ├── parsers.py # CSV/log parsing
|
|
232
|
+
│ │ │ ├── dashboard.py # Run dashboard + metrics
|
|
233
|
+
│ │ │ ├── curves.py # Plotly training curves
|
|
234
|
+
│ │ │ ├── visualizations.py # Epoch visualizations
|
|
235
|
+
│ │ │ ├── gt_verification.py # Ground truth verification
|
|
236
|
+
│ │ │ ├── log_viewer.py # Full log viewer
|
|
237
|
+
│ │ │ └── checkpoints.py # File browser + checkpoints
|
|
238
|
+
│ │ ├── export/
|
|
239
|
+
│ │ │ └── page.py # Export page (ONNX/TorchScript)
|
|
240
|
+
│ │ └── inference/
|
|
241
|
+
│ │ ├── page.py # Main inference page render
|
|
242
|
+
│ │ ├── model_tab.py # Model selection tab
|
|
243
|
+
│ │ ├── data_tab.py # Data input tab (images/video/RTSP)
|
|
244
|
+
│ │ ├── solution_tab.py # Solution selection + zone drawing
|
|
245
|
+
│ │ ├── run_tab.py # Run tab + results display
|
|
246
|
+
│ │ ├── detection.py # Detection utilities (real + demo)
|
|
247
|
+
│ │ └── video.py # Video/image inference runners
|
|
248
|
+
│ │
|
|
249
|
+
│ ├── components/
|
|
250
|
+
│ │ ├── sidebar.py # Navigation sidebar
|
|
251
|
+
│ │ ├── styles.py # Custom CSS + UI helpers
|
|
252
|
+
│ │ ├── wizard.py # Step indicator + navigation
|
|
253
|
+
│ │ ├── project_manager.py # Project CRUD + state persistence
|
|
254
|
+
│ │ └── zone_drawer/ # Interactive canvas zone drawing
|
|
255
|
+
│ │
|
|
256
|
+
│ └── utils/
|
|
257
|
+
│ ├── __init__.py # Shared helpers (defaults, state, flash)
|
|
258
|
+
│ ├── device.py # GPU/environment detection
|
|
259
|
+
│ ├── jobs.py # Background process tracking
|
|
260
|
+
│ ├── filesystem.py # Directory size/listing utilities
|
|
261
|
+
│ ├── config.py # Training config build/save/load
|
|
262
|
+
│ └── training_hooks.py # FlashDet training callbacks
|
|
263
|
+
│
|
|
264
|
+
├── tests/ # Pytest test suite
|
|
265
|
+
│ ├── conftest.py # Shared fixtures
|
|
266
|
+
│ ├── test_constants.py # Constants validation
|
|
267
|
+
│ ├── test_cli.py # CLI tests
|
|
268
|
+
│ ├── test_utils/ # Utils sub-package tests
|
|
269
|
+
│ │ ├── test_init.py
|
|
270
|
+
│ │ ├── test_device.py
|
|
271
|
+
│ │ ├── test_filesystem.py
|
|
272
|
+
│ │ ├── test_config.py
|
|
273
|
+
│ │ └── test_jobs.py
|
|
274
|
+
│ ├── test_pages/ # Page logic tests
|
|
275
|
+
│ │ └── test_training_parsers.py
|
|
276
|
+
│ └── test_components/
|
|
277
|
+
│ └── test_project_manager.py
|
|
278
|
+
│
|
|
279
|
+
├── .github/workflows/ci.yml # GitHub Actions CI
|
|
280
|
+
├── notebooks/
|
|
281
|
+
├── .streamlit/config.toml
|
|
282
|
+
├── pyproject.toml
|
|
283
|
+
└── README.md
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Troubleshooting
|
|
289
|
+
|
|
290
|
+
### Colab: "localhost can't be reached" or ngrok error
|
|
291
|
+
|
|
292
|
+
`launch()` uses Colab's built-in proxy automatically. If it doesn't work, run this in a **new cell**:
|
|
293
|
+
|
|
294
|
+
```python
|
|
295
|
+
import subprocess, sys, time
|
|
296
|
+
|
|
297
|
+
proc = subprocess.Popen(
|
|
298
|
+
[sys.executable, "-m", "streamlit", "run",
|
|
299
|
+
__import__('flashstudio.launcher', fromlist=['_get_app_path'])._get_app_path(),
|
|
300
|
+
"--server.port", "8501", "--server.headless", "true",
|
|
301
|
+
"--server.enableCORS", "false", "--server.enableXsrfProtection", "false"],
|
|
302
|
+
stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
|
303
|
+
)
|
|
304
|
+
time.sleep(5)
|
|
305
|
+
|
|
306
|
+
from google.colab.output import eval_js
|
|
307
|
+
print(eval_js("google.colab.kernel.proxyPort(8501)"))
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Open the printed URL in a new tab. No token or signup needed.
|
|
311
|
+
|
|
312
|
+
### Streamlit port already in use
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
pkill -f "streamlit run"
|
|
316
|
+
flashstudio --port 8501
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Requirements
|
|
322
|
+
|
|
323
|
+
- Python >= 3.10
|
|
324
|
+
- GPU recommended for training (T4 or better)
|
|
325
|
+
- Google Colab works out-of-the-box (no extra accounts needed)
|
|
326
|
+
- FlashDet installs automatically with `pip install flashstudio`
|
|
327
|
+
|
|
328
|
+
## License
|
|
329
|
+
|
|
330
|
+
Apache-2.0
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# FlashStudio
|
|
2
|
+
|
|
3
|
+
**Interactive Training & Inference UI for FlashDet**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install flashstudio
|
|
11
|
+
pip install git+https://github.com/FlashVision/FlashDet.git
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Launch locally
|
|
18
|
+
flashstudio
|
|
19
|
+
|
|
20
|
+
# Or with Python
|
|
21
|
+
from flashstudio import launch
|
|
22
|
+
launch()
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Google Colab
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
!pip install flashstudio
|
|
29
|
+
!pip install git+https://github.com/FlashVision/FlashDet.git
|
|
30
|
+
|
|
31
|
+
from flashstudio import launch
|
|
32
|
+
launch(ngrok_token="YOUR_TOKEN")
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Get a free ngrok token at: https://dashboard.ngrok.com/get-started/your-authtoken
|
|
36
|
+
|
|
37
|
+
## Features
|
|
38
|
+
|
|
39
|
+
- **Training** — Launch and monitor FlashDet training with live loss curves
|
|
40
|
+
- **Inference** — Run detection on images/video with 17 built-in solutions
|
|
41
|
+
- **Model Config** — FlashDet (Pico → X) + YOLOv8/v9/v10/v11/YOLOX
|
|
42
|
+
- **Data** — Upload datasets or download from FlashDet registry
|
|
43
|
+
- **Export** — ONNX export with FP16 support
|
|
44
|
+
- **Dashboard** — Project overview with recent runs and metrics
|
|
45
|
+
|
|
46
|
+
## Supported Models
|
|
47
|
+
|
|
48
|
+
| Model | Params | Use Case |
|
|
49
|
+
|-------|--------|----------|
|
|
50
|
+
| FlashDet-Pico | ~298K | Edge / MCU |
|
|
51
|
+
| FlashDet-Nano | ~790K | Embedded / IoT |
|
|
52
|
+
| FlashDet-Small | ~1.8M | General purpose |
|
|
53
|
+
| FlashDet-Medium | ~3.6M | High accuracy |
|
|
54
|
+
| FlashDet-Large | ~5.8M | High accuracy |
|
|
55
|
+
| FlashDet-X | ~9.0M | Server / Max accuracy |
|
|
56
|
+
|
|
57
|
+
## Requirements
|
|
58
|
+
|
|
59
|
+
- Python >= 3.10
|
|
60
|
+
- FlashDet (for training/inference)
|
|
61
|
+
- ngrok account (free, for Colab)
|
|
62
|
+
- GPU recommended for training
|
|
63
|
+
|
|
64
|
+
## Links
|
|
65
|
+
|
|
66
|
+
- GitHub: https://github.com/FlashVision/FlashStudio
|
|
67
|
+
- FlashDet: https://github.com/FlashVision/FlashDet
|
|
68
|
+
- Organization: https://flashvision.github.io
|
|
69
|
+
|
|
70
|
+
## License
|
|
71
|
+
|
|
72
|
+
Apache-2.0
|