Christofy is a lightweight, modular PyTorch-based AI toolkit that unifies essential deep learning capabilities. It supports Image Classification, Segmentation, and advanced Vision Analysis with clean, easy-to-use APIs. With built-in Retrieval-Augmented Generation (RAG) powered by ChromaDB and Ollama, it seamlessly blends vision and language intelligence. Designed for flexibility and speed, Christofy is your all-in-one arsenal for building modern AI solutions.
Project description
Christofy 🧠📦
Christofy is a lightweight and modular PyTorch-based image classification package designed for both training and prediction. Built on top of ResNet18, it supports both binary and multi-class classification with clean abstractions and an easy-to-use API. Now featuring a powerful RAG (Retrieval-Augmented Generation) system and Vision Analysis capabilities with Ollama integration!
🚀 Features
- ✅ Train image classifiers using CNN (ResNet18)
- ✅ Binary and multi-class classification support
- ✅ Predict the class of a single image using saved model
- ✅ Modular structure: clean separation between training and prediction
- ✅ RAG pipeline with Ollama integration for text analysis
- ✅ Support for multiple file formats (PDF, DOCX, CSV, Excel, TXT, JSON)
- ✅ Vision Analysis with multimodal AI models
- ✅ Conversation mode for interactive image analysis
- ✅ Batch processing for multiple images
- ✅ Graph-based image segmentation
- ✅ Ready to be installed as a Python package
📚 Usage
Image Classification
import christofy
# Train a model
christofy.train_model(
data_dir="path/to/dataset",
learning_rate=0.001,
epochs=10,
batch_size=32,
output_dir="output"
)
# Make predictions
predicted_class = christofy.predict_image(
model_path="output/model.pth",
image_path="path/to/image.jpg"
)
RAG Pipeline
from christofy import run_rag_pipeline
# Example usage
response = run_rag_pipeline(
data="path/to/documents", # Can be file, directory, or text
query="Your question here?",
model="llama2", # Your local Ollama model
embedding_model="nomic-embed-text", # For embeddings
temperature=0.7
)
print(response)
Supported File Formats for RAG
- PDF files (requires PyPDF2 or pdfplumber)
- Word documents (DOCX) (requires python-docx)
- CSV and Excel files (requires pandas)
- Text files (TXT)
- JSON files
Vision Analysis
from christofy import vision_spell
# Basic usage
vision_spell("image.jpg", "What do you see?")
# With model selection
vision_spell("image.jpg", "What do you see?", model="llava:13b")
# Full parameters
vision_spell(
image_path="image.jpg",
question="What do you see?",
model="llava",
temperature=0.7,
max_tokens=None,
system_prompt=None,
conversation_mode=False
)
# Conversation mode
chat = vision_spell("image.jpg", "What do you see?", conversation_mode=True)
chat.ask("What colors are present?")
chat.ask("Is this indoors or outdoors?")
# Export conversation
chat.export_conversation("json")
chat.export_conversation("txt")
# Batch processing
from christofy import batch_vision_analysis
batch_vision_analysis(
image_paths=["img1.jpg", "img2.png"],
questions="What do you see?",
model="llava"
)
# Utility functions
from christofy import list_vision_models, get_system_info, show_module_info
# Alternative function name
from christofy import vision
vision("image.jpg", "What do you see?")
Image Segmentation
from christofy import segmenter
# Basic usage with default parameters
segmenter("image.jpg")
# With custom parameters
segmenter(
image_path="image.jpg",
sigma=0.5, # Standard deviation for Gaussian smoothing
merge_threshold=500, # Threshold for merging segments
min_size=50 # Minimum segment size
)
Requirements
- Python 3.9+
- PyTorch
- Ollama (for RAG and Vision functionality)
- Pillow (for Vision functionality)
- scikit-image (for Segmentation functionality)
- matplotlib (for Segmentation visualization)
- Additional dependencies based on file formats
Installation
pip install christofy
For PDF support:
pip install PyPDF2 # or pdfplumber
For DOCX support:
pip install python-docx
For CSV/Excel support:
pip install pandas openpyxl
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file christofy-1.0.1.tar.gz.
File metadata
- Download URL: christofy-1.0.1.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47c3c94801e5e34f513f1000b0dfddfa809e66ae74a8f3007160e3c9e4dfd220
|
|
| MD5 |
d0f81d8c3e69dde4c21caafa2547fa41
|
|
| BLAKE2b-256 |
7cfae14da902645f59f1e31c58898893b67338e3445efae85ccf13760f7f002b
|
File details
Details for the file christofy-1.0.1-py3-none-any.whl.
File metadata
- Download URL: christofy-1.0.1-py3-none-any.whl
- Upload date:
- Size: 20.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
382ac68554177d151ebb0f7bd899a92c86ae32840b9a01557589bd498d7f4db9
|
|
| MD5 |
a85de7771ec13e486838f50d1f2d1bb5
|
|
| BLAKE2b-256 |
127e8ffcd7a12a663eac699c663e7659a64c7e3da22d45b450eff798bda8a6b4
|