108 lines
3.0 KiB
Markdown
108 lines
3.0 KiB
Markdown
# Python Backend for COCO Tool
|
|
|
|
This is the converted Python backend using Flask and SQLAlchemy.
|
|
|
|
## Setup
|
|
|
|
1. Create a virtual environment (recommended):
|
|
```bash
|
|
python -m venv venv
|
|
```
|
|
|
|
2. Activate the virtual environment:
|
|
- Windows: `venv\Scripts\activate`
|
|
- Linux/Mac: `source venv/bin/activate`
|
|
|
|
3. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Running the Server
|
|
|
|
### Option 1: Using start.py
|
|
```bash
|
|
python start.py
|
|
```
|
|
|
|
### Option 2: Using Flask directly
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
### Option 3: Using Flask CLI
|
|
```bash
|
|
flask --app app run --host=0.0.0.0 --port=3000
|
|
```
|
|
|
|
The server will start on `http://0.0.0.0:3000`
|
|
|
|
## Database Configuration
|
|
|
|
The database configuration is in `database/database.py`. Default settings:
|
|
- Host: localhost
|
|
- Database: myapp
|
|
- User: root
|
|
- Password: root
|
|
|
|
Modify `app.py` to change these settings.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
backend/
|
|
├── app.py # Main Flask application
|
|
├── start.py # Startup script
|
|
├── requirements.txt # Python dependencies
|
|
├── database/
|
|
│ └── database.py # Database configuration
|
|
├── models/ # SQLAlchemy models
|
|
│ ├── __init__.py
|
|
│ ├── Annotation.py
|
|
│ ├── Images.py
|
|
│ ├── LabelStudioProject.py
|
|
│ ├── training.py
|
|
│ ├── TrainingProject.py
|
|
│ └── TrainingProjectDetails.py
|
|
├── routes/
|
|
│ └── api.py # API endpoints
|
|
└── services/ # Business logic
|
|
├── fetch_labelstudio.py
|
|
├── generate_json_yolox.py
|
|
├── generate_yolox_exp.py
|
|
├── push_yolox_exp.py
|
|
└── seed_label_studio.py
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
All endpoints are prefixed with `/api`:
|
|
|
|
- `GET /api/seed` - Seed database from Label Studio
|
|
- `POST /api/generate-yolox-json` - Generate YOLOX training files
|
|
- `POST /api/start-yolox-training` - Start YOLOX training
|
|
- `GET /api/training-log` - Get training logs
|
|
- `GET/POST /api/training-projects` - Manage training projects
|
|
- `GET /api/label-studio-projects` - Get Label Studio projects
|
|
- `GET/POST/PUT /api/training-project-details` - Manage project details
|
|
- `POST /api/yolox-settings` - Save YOLOX settings
|
|
- `GET/DELETE /api/trainings` - Manage trainings
|
|
- `DELETE /api/training-projects/:id` - Delete training project
|
|
|
|
## Migration Notes
|
|
|
|
This is a direct conversion from Node.js/Express to Python/Flask:
|
|
- Express → Flask
|
|
- Sequelize ORM → SQLAlchemy ORM
|
|
- node-fetch → requests library
|
|
- Async routes maintained where needed
|
|
- All file paths and logic preserved from original
|
|
|
|
## Differences from Node.js Version
|
|
|
|
1. Python uses async/await differently - some routes may need adjustments
|
|
2. File handling uses Python's built-in open() instead of fs module
|
|
3. Subprocess calls use Python's subprocess module
|
|
4. JSON handling uses Python's json module
|
|
5. Path operations use os.path instead of Node's path module
|