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.

Files changed (109) hide show
  1. flashstudio-0.0.1/PKG-INFO +107 -0
  2. flashstudio-0.0.1/README.md +330 -0
  3. flashstudio-0.0.1/README_PYPI.md +72 -0
  4. flashstudio-0.0.1/flashstudio/__init__.py +5 -0
  5. flashstudio-0.0.1/flashstudio/app.py +194 -0
  6. flashstudio-0.0.1/flashstudio/cli.py +18 -0
  7. flashstudio-0.0.1/flashstudio/components/__init__.py +0 -0
  8. flashstudio-0.0.1/flashstudio/components/project_manager.py +490 -0
  9. flashstudio-0.0.1/flashstudio/components/sidebar.py +87 -0
  10. flashstudio-0.0.1/flashstudio/components/styles.py +346 -0
  11. flashstudio-0.0.1/flashstudio/components/wizard.py +45 -0
  12. flashstudio-0.0.1/flashstudio/components/zone_drawer/__init__.py +177 -0
  13. flashstudio-0.0.1/flashstudio/constants.py +245 -0
  14. flashstudio-0.0.1/flashstudio/core/__init__.py +3 -0
  15. flashstudio-0.0.1/flashstudio/core/constants.py +3 -0
  16. flashstudio-0.0.1/flashstudio/launcher.py +288 -0
  17. flashstudio-0.0.1/flashstudio/pages/__init__.py +8 -0
  18. flashstudio-0.0.1/flashstudio/pages/dashboard/__init__.py +3 -0
  19. flashstudio-0.0.1/flashstudio/pages/dashboard/_common.py +10 -0
  20. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/__init__.py +3 -0
  21. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/metrics.py +33 -0
  22. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/pipeline_status.py +35 -0
  23. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/project_banner.py +23 -0
  24. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/quick_actions.py +28 -0
  25. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/recent_runs.py +99 -0
  26. flashstudio-0.0.1/flashstudio/pages/dashboard/overview/tab.py +35 -0
  27. flashstudio-0.0.1/flashstudio/pages/dashboard/page.py +17 -0
  28. flashstudio-0.0.1/flashstudio/pages/data/__init__.py +3 -0
  29. flashstudio-0.0.1/flashstudio/pages/data/_common.py +107 -0
  30. flashstudio-0.0.1/flashstudio/pages/data/download/__init__.py +3 -0
  31. flashstudio-0.0.1/flashstudio/pages/data/download/tab.py +75 -0
  32. flashstudio-0.0.1/flashstudio/pages/data/helpers.py +338 -0
  33. flashstudio-0.0.1/flashstudio/pages/data/page.py +50 -0
  34. flashstudio-0.0.1/flashstudio/pages/data/preview/__init__.py +3 -0
  35. flashstudio-0.0.1/flashstudio/pages/data/preview/tab.py +139 -0
  36. flashstudio-0.0.1/flashstudio/pages/data/upload/__init__.py +3 -0
  37. flashstudio-0.0.1/flashstudio/pages/data/upload/tab.py +156 -0
  38. flashstudio-0.0.1/flashstudio/pages/data/verify/__init__.py +3 -0
  39. flashstudio-0.0.1/flashstudio/pages/data/verify/tab.py +108 -0
  40. flashstudio-0.0.1/flashstudio/pages/export/__init__.py +3 -0
  41. flashstudio-0.0.1/flashstudio/pages/export/page.py +54 -0
  42. flashstudio-0.0.1/flashstudio/pages/export/weights/__init__.py +4 -0
  43. flashstudio-0.0.1/flashstudio/pages/export/weights/exporter.py +60 -0
  44. flashstudio-0.0.1/flashstudio/pages/export/weights/settings.py +86 -0
  45. flashstudio-0.0.1/flashstudio/pages/inference/__init__.py +3 -0
  46. flashstudio-0.0.1/flashstudio/pages/inference/_common.py +76 -0
  47. flashstudio-0.0.1/flashstudio/pages/inference/data/__init__.py +3 -0
  48. flashstudio-0.0.1/flashstudio/pages/inference/data/tab.py +121 -0
  49. flashstudio-0.0.1/flashstudio/pages/inference/model/__init__.py +3 -0
  50. flashstudio-0.0.1/flashstudio/pages/inference/model/tab.py +62 -0
  51. flashstudio-0.0.1/flashstudio/pages/inference/page.py +42 -0
  52. flashstudio-0.0.1/flashstudio/pages/inference/run/__init__.py +3 -0
  53. flashstudio-0.0.1/flashstudio/pages/inference/run/detection.py +133 -0
  54. flashstudio-0.0.1/flashstudio/pages/inference/run/tab.py +161 -0
  55. flashstudio-0.0.1/flashstudio/pages/inference/run/video.py +195 -0
  56. flashstudio-0.0.1/flashstudio/pages/inference/solution/__init__.py +3 -0
  57. flashstudio-0.0.1/flashstudio/pages/inference/solution/tab.py +121 -0
  58. flashstudio-0.0.1/flashstudio/pages/model/__init__.py +3 -0
  59. flashstudio-0.0.1/flashstudio/pages/model/_common.py +3 -0
  60. flashstudio-0.0.1/flashstudio/pages/model/advanced/__init__.py +3 -0
  61. flashstudio-0.0.1/flashstudio/pages/model/advanced/tab.py +54 -0
  62. flashstudio-0.0.1/flashstudio/pages/model/architecture/__init__.py +3 -0
  63. flashstudio-0.0.1/flashstudio/pages/model/architecture/tab.py +90 -0
  64. flashstudio-0.0.1/flashstudio/pages/model/augment/__init__.py +3 -0
  65. flashstudio-0.0.1/flashstudio/pages/model/augment/tab.py +18 -0
  66. flashstudio-0.0.1/flashstudio/pages/model/hyperparams/__init__.py +4 -0
  67. flashstudio-0.0.1/flashstudio/pages/model/hyperparams/tab.py +89 -0
  68. flashstudio-0.0.1/flashstudio/pages/model/page.py +30 -0
  69. flashstudio-0.0.1/flashstudio/pages/model/utils/__init__.py +3 -0
  70. flashstudio-0.0.1/flashstudio/pages/model/utils/config.py +27 -0
  71. flashstudio-0.0.1/flashstudio/pages/training/__init__.py +3 -0
  72. flashstudio-0.0.1/flashstudio/pages/training/_common.py +24 -0
  73. flashstudio-0.0.1/flashstudio/pages/training/launch/__init__.py +3 -0
  74. flashstudio-0.0.1/flashstudio/pages/training/launch/controls.py +84 -0
  75. flashstudio-0.0.1/flashstudio/pages/training/launch/dialogs.py +247 -0
  76. flashstudio-0.0.1/flashstudio/pages/training/launch/preflight.py +77 -0
  77. flashstudio-0.0.1/flashstudio/pages/training/launch/runner.py +440 -0
  78. flashstudio-0.0.1/flashstudio/pages/training/launch/tab.py +134 -0
  79. flashstudio-0.0.1/flashstudio/pages/training/monitor/__init__.py +3 -0
  80. flashstudio-0.0.1/flashstudio/pages/training/monitor/checkpoints.py +96 -0
  81. flashstudio-0.0.1/flashstudio/pages/training/monitor/curves.py +113 -0
  82. flashstudio-0.0.1/flashstudio/pages/training/monitor/dashboard.py +129 -0
  83. flashstudio-0.0.1/flashstudio/pages/training/monitor/gt_verification.py +122 -0
  84. flashstudio-0.0.1/flashstudio/pages/training/monitor/log_viewer.py +43 -0
  85. flashstudio-0.0.1/flashstudio/pages/training/monitor/parsers.py +253 -0
  86. flashstudio-0.0.1/flashstudio/pages/training/monitor/run_meta.py +165 -0
  87. flashstudio-0.0.1/flashstudio/pages/training/monitor/tab.py +142 -0
  88. flashstudio-0.0.1/flashstudio/pages/training/monitor/visualizations.py +52 -0
  89. flashstudio-0.0.1/flashstudio/pages/training/page.py +134 -0
  90. flashstudio-0.0.1/flashstudio/utils/__init__.py +152 -0
  91. flashstudio-0.0.1/flashstudio/utils/config.py +104 -0
  92. flashstudio-0.0.1/flashstudio/utils/device.py +67 -0
  93. flashstudio-0.0.1/flashstudio/utils/filesystem.py +67 -0
  94. flashstudio-0.0.1/flashstudio/utils/jobs.py +95 -0
  95. flashstudio-0.0.1/flashstudio/utils/training_hooks.py +266 -0
  96. flashstudio-0.0.1/flashstudio.egg-info/PKG-INFO +107 -0
  97. flashstudio-0.0.1/flashstudio.egg-info/SOURCES.txt +107 -0
  98. flashstudio-0.0.1/flashstudio.egg-info/dependency_links.txt +1 -0
  99. flashstudio-0.0.1/flashstudio.egg-info/entry_points.txt +2 -0
  100. flashstudio-0.0.1/flashstudio.egg-info/requires.txt +21 -0
  101. flashstudio-0.0.1/flashstudio.egg-info/top_level.txt +2 -0
  102. flashstudio-0.0.1/pyproject.toml +69 -0
  103. flashstudio-0.0.1/setup.cfg +4 -0
  104. flashstudio-0.0.1/tests/test_app.py +120 -0
  105. flashstudio-0.0.1/tests/test_cli.py +37 -0
  106. flashstudio-0.0.1/tests/test_constants.py +172 -0
  107. flashstudio-0.0.1/tests/test_launcher.py +60 -0
  108. flashstudio-0.0.1/tests/test_pipeline_flow.py +771 -0
  109. 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 | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/FlashVision/FlashStudio/blob/main/notebooks/FlashStudio_Train.ipynb) |
171
+ | Inference | Run detection on images/video | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](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
@@ -0,0 +1,5 @@
1
+ """FlashStudio — Interactive Training & Inference UI for FlashDet."""
2
+
3
+ __version__ = "0.1.2"
4
+
5
+ from flashstudio.launcher import launch # noqa: F401