[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1201":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":15,"starSnapshotCount":15,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},1201,"alice","simoncirstoiu\u002Falice","simoncirstoiu","Analyse · Learn · Ingest · Curate · Export — AI-powered YOLO dataset management toolkit","",null,"JavaScript",333,31,11,0,9,4.52,"Other",false,"main",true,[23,24,25,26,27,28,29,30,31,32,33,34],"ai","ai-tools","annotation","computer-vision","dataset","frigate","nvidia-cuda","nvidia-smi","nvr","object-detection","training","yolo","2026-06-12 02:00:24","\u003Cp align=\"center\">\n  \u003Ch1 align=\"center\">ALICE\u003C\u002Fh1>\n  \u003Cp align=\"center\">\u003Cb>A\u003C\u002Fb>nalyse · \u003Cb>L\u003C\u002Fb>earn · \u003Cb>I\u003C\u002Fb>ngest · \u003Cb>C\u003C\u002Fb>urate · \u003Cb>E\u003C\u002Fb>xport\u003C\u002Fp>\n  \u003Cp align=\"center\">All-in-one AI-powered image annotation, training, and dataset management toolkit.\u003C\u002Fp>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8+-blue?logo=python&logoColor=white\" alt=\"Python\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FYOLO-v8%20%7C%2011-orange\" alt=\"YOLO\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFrigate-NVR-green\" alt=\"Frigate\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-PolyForm%20Noncommercial%201.0.0-lightgrey\" alt=\"License\">\n\u003C\u002Fp>\n\n---\n\n> **Works on both NVIDIA GPU and CPU.** \n\nALICE automatically detects your hardware — if no compatible GPU is found, it falls back to CPU mode. No manual configuration needed.\n\n![Viewer — AI Detection](screenshots\u002Fviewer.png)\n\n## Why?\n\nI needed a tool to train a YOLO model for my cameras, using my own images, with the specific angles and scenarios around my house.\nI couldn't find anything on the internet (or if it existed, I was probably too drunk to find it), so I built my own utility to fit my needs.\nIf you find it useful — enjoy. If not, well... cry me a river! :)\n\n## Quick Start\n\n```bash\n# Build and set up virtual environment\npython3 builder.py\n\n# Run\n.\u002Falice.py\n```\n\nThe builder assembles `alice.py` from source modules, creates a `.venv` with base dependencies, and patches the shebang so `.\u002Falice.py` uses the venv automatically. On Debian\u002FUbuntu, the builder will auto-install `python3-venv` if missing.\n\nOn first run, a welcome page guides you through initial setup — hardware detection, model download, and dependency installation. Open **http:\u002F\u002Flocalhost:8080** and follow the steps.\n\n```bash\n# Options\n.\u002Falice.py --port 9090                  # custom port\n.\u002Falice.py --conf \u002Fpath\u002Fto\u002Falice.conf   # custom config path\n```\n\n### Docker\n\n```bash\npython3 builder.py --no-venv\n```\n\nThe builder generates `docker-compose.yml` automatically, depending on your configured hardware (GPU or CPU). \nEdit the volume paths to match your Frigate setup, then:\n\n```bash\ndocker compose up --build -d\n```\n\nSee [Docker Setup](#docker-setup) below for details.\n\n## Features\n\n### Viewer — Dataset Mode\nBrowse and annotate YOLO bounding boxes with a full canvas editor — draw, resize, move, delete, undo. Filter by split (train \u002F val \u002F empty) or by class. Gallery grid view, keyboard shortcuts, right-click context menus.\n\n![Viewer — Edit Panel](screenshots\u002Fviewer-edit.png)\n\n### Gallery & Dataset Stats\nGallery grid view with thumbnail previews, split badges, and box counts. Dataset statistics panel shows total images, train\u002Fval distribution, annotation coverage, and class distribution.\n\n![Gallery — Stats](screenshots\u002Fgallery-stats.png)\n\n### Duplicate Detection\nPerceptual hashing (pHash) with DCT-based 64-bit hashes. Multiprocessing-accelerated computation. Side-by-side comparison. Box-similarity dedup per camera. NMS cleanup for overlapping same-class boxes.\n\n![Viewer — Duplicate Detection](screenshots\u002Fviewer-dupes.png)\n\n### Viewer — Live Mode\nBrowse Frigate NVR event snapshots in real-time. Filter by camera and time window. Transfer snapshots directly into your training dataset with automatic WebP → JPG conversion.\n\n### Viewer — Video Mode\nFrame-by-frame analysis of Frigate video exports. Seekbar, step controls, adjustable playback FPS. Automated frame scanner with AI detection for batch export.\n\n### AI Analysis\nRun YOLO inference on any image across all three modes. Merge detected boxes into annotations (dedup by IoU > 0.5). Preview mode shows detections without saving. Live detection auto-runs as you navigate.\n\n### Training Pipeline\n\nFive-step pipeline — each step toggleable, runnable individually or as a sequence:\n\n| Step | What it does |\n|------|-------------|\n| **1. Export** | Extract newest snapshots from Frigate DB with round-robin camera distribution → 90\u002F10 train\u002Fval split |\n| **2. Dedup** | Remove duplicates via pHash, box similarity, and NMS cleanup |\n| **3. Annotate** | Auto-label all images using a teacher model |\n| **4. Train** | Fine-tune student model with real-time metrics (loss, mAP50, mAP50-95) |\n| **5. Export ONNX** | Convert to ONNX for deployment (FP16 or FP32 on GPU, FP32 only on CPU) |\n\nAll steps log to the Logs tab with COMPLETED \u002F FAILED \u002F STOPPED status.\n\n![Training Pipeline](screenshots\u002Ftrainer.png)\n\n### Device Detection\n\nALICE automatically detects your hardware at startup and adapts accordingly:\n\n| | NVIDIA GPU | CPU |\n|---|---|---|\n| Training | GPU accelerated | CPU (slower) |\n| Inference | GPU | CPU |\n| ONNX Export | FP16 + FP32 | FP32 only |\n| PyTorch | CUDA build | CPU build |\n| onnxruntime | `onnxruntime-gpu` | `onnxruntime` |\n\nConfigure from **Settings → System → Device** (Auto \u002F NVIDIA GPU \u002F CPU). The sidebar and Device tab show live hardware stats.\n\n### Settings\n\nAll configuration in `alice.conf` — editable from the web UI or directly in the file. Built-in dependency checker with one-click install. Model downloader for YOLO11 and YOLOv8 variants.\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\">\u003Cb>Paths\u003C\u002Fb>\u003Cbr>\u003Cimg src=\"screenshots\u002Fsettings-paths.png\" alt=\"Settings — Paths\">\u003C\u002Ftd>\n\u003Ctd width=\"50%\">\u003Cb>AI Models\u003C\u002Fb>\u003Cbr>\u003Cimg src=\"screenshots\u002Fsettings-ai.png\" alt=\"Settings — AI\">\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd width=\"50%\">\u003Cb>Training\u003C\u002Fb>\u003Cbr>\u003Cimg src=\"screenshots\u002Fsettings-training.png\" alt=\"Settings — Training\">\u003C\u002Ftd>\n\u003Ctd width=\"50%\">\u003Cb>System & Dependencies\u003C\u002Fb>\u003Cbr>\u003Cimg src=\"screenshots\u002Fsettings-system.png\" alt=\"Settings — System\">\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Requirements\n\nPython 3.8+ required. The builder creates a `.venv` and installs the base dependency (Pillow) automatically. All other dependencies are managed by ALICE and can be installed from the welcome page or Settings → System with one click:\n\n| Package | Purpose |\n|---------|---------|\n| **Pillow** | Image processing, pHash, format conversion (auto-installed by builder) |\n| **NumPy** | Numerical operations for dedup |\n| **inotify** | Filesystem watching on Linux (falls back to polling) |\n| **opencv-python-headless** | Video frame extraction |\n| **ONNX** | ONNX model format for export |\n| **onnxslim** | ONNX model optimization |\n| **onnxruntime** | ONNX Runtime — GPU or CPU variant auto-selected |\n| **PyTorch** | Deep learning framework — CUDA or CPU variant auto-selected |\n| **ultralytics** | YOLO model training & inference |\n\nALICE installs the correct PyTorch variant (CUDA or CPU) based on detected hardware. No manual torch installation needed.\n\n> **Note:** ALICE does **not** install NVIDIA drivers or CUDA. If you want GPU-accelerated training, install the [NVIDIA drivers](https:\u002F\u002Fwww.nvidia.com\u002FDownload\u002Findex.aspx) and [CUDA toolkit](https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-toolkit) on your system before running ALICE.\n\n## Docker Setup\n\nThe builder generates `docker-compose.yml` with GPU support auto-detected from your host:\n\n```bash\npython3 builder.py --no-venv\n```\n\nThis creates `docker-compose.yml` with the NVIDIA GPU block included if a GPU is detected, or CPU-only otherwise.\n\nEdit the volume paths to match your setup:\n\n```yaml\nvolumes:\n  - .\u002Falice.conf:\u002Fapp\u002Falice.conf\n  - \u002Fpath\u002Fto\u002Fdatasets:\u002Fapp\u002Fdatasets\n  - \u002Fpath\u002Fto\u002Fmodels:\u002Fapp\u002Fmodels\n  - \u002Fpath\u002Fto\u002Ffrigate\u002Fclips:\u002Fapp\u002Fclips:ro\n  - \u002Fpath\u002Fto\u002Ffrigate\u002Fexports:\u002Fapp\u002Fexports:ro\n  - \u002Fpath\u002Fto\u002Ffrigate\u002Ffrigate.db:\u002Fapp\u002Ffrigate.db:ro\n```\n\n> **Important:** The `frigate.db` volume must point to the actual **file**, not a directory. If the file doesn't exist on the host at the time of container creation, Docker will create a directory instead and ALICE won't be able to open the database.\n\nThen start:\n\n```bash\ndocker compose up --build -d\n```\n\nOn first run, open ALICE in your browser and install dependencies from the welcome page or Settings → System. Dependencies are persisted in a Docker volume across container restarts.\n\n> **Note:** GPU support in Docker requires [NVIDIA Container Toolkit](https:\u002F\u002Fdocs.nvidia.com\u002Fdatacenter\u002Fcloud-native\u002Fcontainer-toolkit\u002Flatest\u002Finstall-guide.html) on the host. If running the builder on a machine without GPU, the generated compose file will be CPU-only.\n\n## Dataset Structure\n\nAlice expects standard YOLO format:\n\n```\ndataset\u002F\n├── images\u002F\n│   ├── train\u002F*.jpg\n│   └── val\u002F*.jpg\n├── labels\u002F\n│   ├── train\u002F*.txt\n│   └── val\u002F*.txt\n└── dataset.yaml          ← auto-generated by trainer\n```\n\n## Building from Source\n\nAlice is developed as modular source files assembled into a single `alice.py`:\n\n```bash\npython3 builder.py                     # → alice.py + .venv\u002F + docker-compose.yml\npython3 builder.py -o \u002Fpath\u002Fto\u002Fout.py  # custom output path\npython3 builder.py --no-venv           # skip venv creation (for Docker)\npython3 builder.py --check             # verify all modules and assets exist\npython3 builder.py --list              # show resolved dependency order\npython3 builder.py --strict            # abort on name conflicts\n```\n\nThe builder:\n1. Reads the import graph from `from .module import` statements in each `src\u002F*.py`\n2. Topologically sorts modules by dependency order\n3. Strips all relative imports (redundant in the flat monolith namespace)\n4. Injects CSS, JS, and HTML assets from `src\u002Fassets\u002F` into placeholder tokens\n5. Writes a single self-contained `alice.py`\n6. Creates a `.venv` with Pillow and patches the shebang (auto-installs `python3-venv` if missing)\n7. Generates `docker-compose.yml` with GPU support auto-detected\n\nRe-running `builder.py` rebuilds `alice.py` and regenerates `docker-compose.yml`, but skips venv creation if `.venv` already exists.\n\nSource modules live in `src\u002F` — see [CONTRIBUTING.md](CONTRIBUTING.md) for development workflow.\n\n## Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| `← →` | Navigate images |\n| `D` | Delete selected box |\n| `P` | Set to Person class |\n| `A` | AI Analyse (save) |\n| `M` | Copy\u002FMove dialog |\n| `E` | Toggle panel |\n| `G` | Gallery view |\n| `J` | Jump to image # |\n| `Ctrl+Z` | Undo |\n| `Ctrl+Scroll` | Zoom |\n| `Space` | Play\u002Fpause (video) |\n\n## Support\n\nIf you find ALICE useful, you can buy me a coffee:\n\n[![Donate](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDonate-PayPal-blue?logo=paypal)](https:\u002F\u002Fwww.paypal.com\u002Fdonate\u002F?hosted_button_id=988G9YXYX78RG)\n\nNeed help or want to chat? Join Alice Discord:\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FSnsDbNuhmW)\n\n## License\n\n[PolyForm Noncommercial 1.0.0](https:\u002F\u002Fpolyformproject.org\u002Flicenses\u002Fnoncommercial\u002F1.0.0\u002F) — free for personal, non-commercial use. For commercial licensing, contact alice@it-link.net.\n\n\n## Author\n\nSimon Cirstoiu\n","ALICE 是一款集成了图像标注、训练和数据集管理的一体化AI工具包。它支持YOLO模型，提供自动硬件检测（NVIDIA GPU或CPU），无需手动配置即可运行。核心功能包括全画布编辑器进行边界框标注、数据集浏览与过滤、重复图片检测等，同时具备详尽的数据集统计信息展示。适用于需要自定义YOLO模型训练的场景，如家庭安全摄像头监控中的对象检测任务。",2,"2026-06-11 02:42:15","CREATED_QUERY"]