An intelligent desktop application for pose evaluation and visualization. The UI is built on the refined PyQt5 component library QFluentWidgets, delivering a modern Fluent design experience. Local LLM assistance (via Ollama) transforms numeric scores into actionable guidance.
Pose-Evaluation System provides an end-to-end workflow for ingesting videos, analyzing movements, visualizing per-limb metrics, and generating tailored improvement suggestions with the help of a local LLM. It is engineered with PyQt5 and QFluentWidgets to achieve a clean, responsive, and consistent desktop UX. This is a project extended from College Students' innovation and Entrepreneurship Competition of China, with the help of H. Huang, under the supervision of H. Wang.
- Load both standard reference videos and user videos for analysis
- Built-in demo assets for quick exploration
- Overall and per-limb scoring (e.g., standardness/accuracy and amplitude)
- Visualization pages to inspect results at a glance
- Play aligned/processed comparison videos for qualitative inspection
- Local LLM (Ollama) turns computed metrics into human-friendly recommendations
- Default model:
qwen2.5:3b(configurable)
- Theme, language, and download directory management
- Help and support links surfaced within the app
- Python 3.11+
- Windows 10/11 recommended (cross-platform PyQt is supported)
git clone <your-repo-url>
cd Pose-Estimation System
pip install -r requirements.txt# Install and start Ollama (see official docs)
ollama pull qwen2.5:3b
# If running remotely, set OLLAMA_HOST accordinglypython main.pyOn first launch, the application reads app/common/config.py and app/config/config.json for theme, language, and folder settings.
- Home: read quick guidance; Help: access support links
- Demo/Upload: import a standard reference video and a user video
- Vis: review overall and per-limb scores with visualizations
- VID: play the aligned result video
- AI: ask domain questions and receive tailored improvement suggestions
- PyQt5 + PyQtWebEngine: core UI and embedded web content
- QFluentWidgets: modern Fluent design components and UX patterns
MainWindoworganizes pages: Home, Upload, Vis, VID, AI, Help, Settings- Reusable components located under
app/components/*
app/common/*for config, styling, signals, i18n, resource loadingapp/resource/*for images, icons, QSS themes, and translations managed byresource.qrc
app/view/llm_worker.pyintegrates Ollama for on-device inferenceqwen2.5-7b/*shows a Transformers/LangChain-based local LLM class for experimentation
- Runtime configuration is stored in
app/config/config.jsonand described inapp/common/config.py - Key options: theme mode, DPI scaling, language, download folder
- Update URLs for Help/Home in
app/common/config.pyas needed
root
│ main.py # Application entry point
│ run_server.py # Placeholder for server-side extensions
│ requirements.txt # Python dependencies (replaces PESUI_ENV.yml)
│
├─app
│ ├─common # Config, style, signals, i18n, resources
│ ├─components # Reusable UI components
│ ├─resource # Images / QSS themes / translations / qrc
│ ├─UI # QtDesigner generated and adjusted UI
│ └─view # Page views and navigation
│
└─qwen2.5-7b # Optional: local LLM examples (Qwen)
llm.py
api-chat.py
download_model.py
- Fork the repository
- Create a feature branch:
git checkout -b feature/AmazingFeature - Commit your changes:
git commit -m "Add AmazingFeature" - Push to the branch:
git push origin feature/AmazingFeature - Open a Pull Request
Specify the license that applies to this project and add a LICENSE file. Third-party dependencies are subject to their respective licenses.