Making it installabel package and switching to segmentation mode
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
|
||||
## Project Overview
|
||||
|
||||
A desktop application for detecting organelles and membrane branching structures in microscopy images using YOLOv8s, with comprehensive training, validation, and visualization capabilities.
|
||||
A desktop application for detecting and segmenting organelles and membrane branching structures in microscopy images using YOLOv8s-seg, with comprehensive training, validation, and visualization capabilities including pixel-accurate segmentation masks.
|
||||
|
||||
## Technology Stack
|
||||
|
||||
- **ML Framework**: Ultralytics YOLOv8 (YOLOv8s.pt model)
|
||||
- **ML Framework**: Ultralytics YOLOv8 (YOLOv8s-seg.pt segmentation model)
|
||||
- **GUI Framework**: PySide6 (Qt6 for Python)
|
||||
- **Visualization**: pyqtgraph
|
||||
- **Database**: SQLite3
|
||||
@@ -110,6 +110,7 @@ erDiagram
|
||||
float x_max
|
||||
float y_max
|
||||
float confidence
|
||||
text segmentation_mask
|
||||
datetime detected_at
|
||||
json metadata
|
||||
}
|
||||
@@ -122,6 +123,7 @@ erDiagram
|
||||
float y_min
|
||||
float x_max
|
||||
float y_max
|
||||
text segmentation_mask
|
||||
string annotator
|
||||
datetime created_at
|
||||
boolean verified
|
||||
@@ -139,7 +141,7 @@ Stores information about trained models and their versions.
|
||||
| model_name | TEXT | NOT NULL | User-friendly model name |
|
||||
| model_version | TEXT | NOT NULL | Version string (e.g., "v1.0") |
|
||||
| model_path | TEXT | NOT NULL | Path to model weights file |
|
||||
| base_model | TEXT | NOT NULL | Base model used (e.g., "yolov8s.pt") |
|
||||
| base_model | TEXT | NOT NULL | Base model used (e.g., "yolov8s-seg.pt") |
|
||||
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | Model creation timestamp |
|
||||
| training_params | JSON | | Training hyperparameters |
|
||||
| metrics | JSON | | Validation metrics (mAP, precision, recall) |
|
||||
@@ -159,7 +161,7 @@ Stores metadata about microscopy images.
|
||||
| checksum | TEXT | | MD5 hash for integrity verification |
|
||||
|
||||
#### **detections** table
|
||||
Stores object detection results.
|
||||
Stores object detection results with optional segmentation masks.
|
||||
|
||||
| Column | Type | Constraints | Description |
|
||||
|--------|------|-------------|-------------|
|
||||
@@ -172,11 +174,12 @@ Stores object detection results.
|
||||
| x_max | REAL | NOT NULL | Bounding box right coordinate (normalized 0-1) |
|
||||
| y_max | REAL | NOT NULL | Bounding box bottom coordinate (normalized 0-1) |
|
||||
| confidence | REAL | NOT NULL | Detection confidence score (0-1) |
|
||||
| segmentation_mask | TEXT | | JSON array of polygon coordinates [[x1,y1], [x2,y2], ...] (normalized 0-1) |
|
||||
| detected_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | When detection was performed |
|
||||
| metadata | JSON | | Additional metadata (processing time, etc.) |
|
||||
|
||||
#### **annotations** table
|
||||
Stores manual annotations for training data (future feature).
|
||||
Stores manual annotations for training data with optional segmentation masks (future feature).
|
||||
|
||||
| Column | Type | Constraints | Description |
|
||||
|--------|------|-------------|-------------|
|
||||
@@ -187,6 +190,7 @@ Stores manual annotations for training data (future feature).
|
||||
| y_min | REAL | NOT NULL | Bounding box top coordinate (normalized) |
|
||||
| x_max | REAL | NOT NULL | Bounding box right coordinate (normalized) |
|
||||
| y_max | REAL | NOT NULL | Bounding box bottom coordinate (normalized) |
|
||||
| segmentation_mask | TEXT | | JSON array of polygon coordinates [[x1,y1], [x2,y2], ...] (normalized 0-1) |
|
||||
| annotator | TEXT | | Name of person who created annotation |
|
||||
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | Annotation timestamp |
|
||||
| verified | BOOLEAN | DEFAULT 0 | Whether annotation is verified |
|
||||
@@ -245,8 +249,9 @@ graph TB
|
||||
### Key Components
|
||||
|
||||
#### 1. **YOLO Wrapper** ([`src/model/yolo_wrapper.py`](src/model/yolo_wrapper.py))
|
||||
Encapsulates YOLOv8 operations:
|
||||
- Load pre-trained YOLOv8s model
|
||||
Encapsulates YOLOv8-seg operations:
|
||||
- Load pre-trained YOLOv8s-seg segmentation model
|
||||
- Extract pixel-accurate segmentation masks
|
||||
- Fine-tune on custom microscopy dataset
|
||||
- Export trained models
|
||||
- Provide training progress callbacks
|
||||
@@ -255,10 +260,10 @@ Encapsulates YOLOv8 operations:
|
||||
**Key Methods:**
|
||||
```python
|
||||
class YOLOWrapper:
|
||||
def __init__(self, model_path: str = "yolov8s.pt")
|
||||
def __init__(self, model_path: str = "yolov8s-seg.pt")
|
||||
def train(self, data_yaml: str, epochs: int, callbacks: dict)
|
||||
def validate(self, data_yaml: str) -> dict
|
||||
def predict(self, image_path: str, conf: float) -> list
|
||||
def predict(self, image_path: str, conf: float) -> list # Returns detections with segmentation masks
|
||||
def export_model(self, format: str, output_path: str)
|
||||
```
|
||||
|
||||
@@ -435,7 +440,7 @@ image_repository:
|
||||
allowed_extensions: [".jpg", ".jpeg", ".png", ".tif", ".tiff"]
|
||||
|
||||
models:
|
||||
default_base_model: "yolov8s.pt"
|
||||
default_base_model: "yolov8s-seg.pt"
|
||||
models_directory: "data/models"
|
||||
|
||||
training:
|
||||
|
||||
Reference in New Issue
Block a user