Skip to main content

A comprehensive OCR and computer vision model library with support for SVTRV2, YOLO, EfficientNet, PPLCNet, and more.

Project description

MemoLib

A computer vision model library built on PyTorch, providing a unified interface for object detection, image segmentation, image classification, text recognition, and anomaly detection.

Model Status

Category Model Status
Detection YOLOv5, YOLOv8, YOLO11, YOLO26 Stable
Detection RF-DETR ⚠ Not fully tested
Segmentation YOLO Segment (v8, 11, 26) Stable
Segmentation DINO UperNet ⚠ Not fully tested
Classification PPLCNet (x0.25 – x1.0) Stable
Classification YOLO Classification (v8, 11, 26) Stable
Classification EfficientNet (B0–B7, V2S/M/L/XL) ⚠ Not fully tested
Recognition SVTR2 🔧 Ongoing
Anomaly Detection Dinomaly2 🔧 Ongoing
Anomaly Detection INP Former 🔧 Ongoing

Unified Interface

All models share a consistent API:

model.LoadWeight(path)        # Load pretrained or custom weights
model.Train(callbacks)        # Start training
model.Predict(image)          # Single inference
model.BatchPredict(images)    # Batch inference
model.Export(path, format)    # Export to ONNX / OpenVINO / TensorRT
model.StopTraining()          # Stop training gracefully

Installation

pip install memolib

Optional dependencies

# For YOLO models
pip install memolib[yolo]

# For PPLCNet models
pip install memolib[pplcnet]

# For development
pip install memolib[dev]

Quick Start

Object Detection — YOLO

from MemoLib.Model.YOLO import Yolo
from MemoLib.Model.BaseModel.eDetectionModel import eYoloDetectionModel

model = Yolo()
model.cfg.Architecture = eYoloDetectionModel.Yolo11n
model.cfg.DatasetPath  = "path/to/dataset"
model.Train(callbacks=lambda level, msg: print(f"[{level}] {msg}"))

Classification — PPLCNet

from MemoLib.Model.PPLCNet import PPLCNet
from MemoLib.Model.BaseModel.eClassificationModel import ePPLCNetModel

model = PPLCNet()
model.cfg.Architecture = ePPLCNetModel.PPLCNetx50
model.cfg.DatasetPath  = "path/to/dataset"
model.Train()

Model Export

from MemoLib.Model.BaseModel.eModelBase import eModelExportType

model.Export("weights/best.pt", eModelExportType.ONNX)
model.Export("weights/best.pt", eModelExportType.OpenVINO)
model.Export("weights/best.pt", eModelExportType.TensorRT)

Project Structure

MemoLib/
└── Model/
    ├── BaseModel/       # Abstract interface (IModel), enums, export types
    ├── YOLO/            # YOLO detection, segmentation, classification
    ├── RFDETR/          # RF-DETR detection  [not fully tested]
    ├── DinoUperNet/     # DINO + UperNet semantic segmentation  [not fully tested]
    ├── Efficientnet/    # EfficientNet classification  [not fully tested]
    ├── PPLCNet/         # PPLCNet lightweight classification
    ├── SVTRV2/          # SVTR2 text recognition  [ongoing]
    └── Anomaly/         # Dinomaly2, INP Former  [ongoing]

Dataset Format

Classification — YOLO / EfficientNet / PPLCNet

ImageFolder structure (same as torchvision ImageFolder):

dataset/
├── train/
│   ├── cat/
│   │   ├── img001.jpg
│   │   └── img002.jpg
│   └── dog/
│       ├── img003.jpg
│       └── img004.jpg
└── val/
    ├── cat/
    └── dog/

Detection — YOLO (detect / segment)

YOLO label format. data.yaml is auto-generated if missing.

dataset/
├── train/
│   ├── images/
│   │   ├── img001.jpg
│   └── labels/
│       ├── img001.txt        # <class> <x_c> <y_c> <w> <h>  (normalized 0-1)
├── val/
│   ├── images/
│   └── labels/
└── data.yaml

data.yaml:

path: /path/to/dataset
nc: 2
names: [cat, dog]
train: train/images
val:   val/images

For segmentation, the label format uses polygon points:

# <class> <x1> <y1> <x2> <y2> ... <xn> <yn>  (normalized 0-1)
0 0.1 0.2 0.3 0.4 0.5 0.6

Detection — RF-DETR

Supports two formats. Auto-detected from directory structure.

COCO format (recommended — exported directly from Roboflow/CVAT):

dataset/
├── train/
│   ├── img001.jpg
│   └── _annotations.coco.json
└── val/
    ├── img002.jpg
    └── _annotations.coco.json

YOLO format (same structure as YOLO detection above):

dataset/
├── train/
│   ├── images/
│   └── labels/
├── val/
│   ├── images/
│   └── labels/
└── data.yaml

Semantic Segmentation — DinoUperNet

Mask images must be single-channel PNG where each pixel value = class index.

dataset/
├── train/
│   ├── images/
│   │   ├── img001.jpg
│   └── masks/
│       ├── img001.png        # pixel value = class index (0, 1, 2, ...)
├── val/
│   ├── images/
│   └── masks/

ReduceZeroLabel: if True, pixel value 0 is treated as background/unlabeled (ignored in loss), and class indices shift by -1. Use this for datasets like ADE20K where class 0 = unlabeled.


Requirements

  • Python 3.9+
  • PyTorch 2.x (CUDA 12.x recommended)
  • See requirements.txt for full dependency list

License

MIT License

Project details


Release history Release notifications | RSS feed

This version

1.3.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memolib-1.3.3.tar.gz (802.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memolib-1.3.3-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file memolib-1.3.3.tar.gz.

File metadata

  • Download URL: memolib-1.3.3.tar.gz
  • Upload date:
  • Size: 802.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for memolib-1.3.3.tar.gz
Algorithm Hash digest
SHA256 41eb69d2f7e93842778af664f40c9a6fab81f1c77fb55c4b0a7cdeef7f0f7286
MD5 266fa1361001f5c5c5c933d9d6daec18
BLAKE2b-256 2b7dfde67af570d8ce831c0f30e1354f262657e4aa35c08081de39f0c2a5f6cf

See more details on using hashes here.

File details

Details for the file memolib-1.3.3-py3-none-any.whl.

File metadata

  • Download URL: memolib-1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for memolib-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 394384221a1c1653fd12c556a73741978f2157c5e86ec7cf8bd7f12344b0c995
MD5 be9224c590534a59de1c4d658454b689
BLAKE2b-256 5f47cb23c3a1e45300128bff47f3cd5127cc13105b2035805db22968c3938385

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page