Kornia is a differentiable computer vision library that provides a rich set of differentiable image processing and geometric vision algorithms. Built on top of PyTorch, Kornia integrates seamlessly into existing AI workflows, allowing you to leverage powerful batch transformations, auto-differentiation and GPU acceleration. Whether you're working on image transformations, augmentations, or AI-driven image processing, Kornia equips you with the tools you need to bring your ideas to life.
📢 Direction: Kornia is becoming the reference implementation and executable specification for differentiable computer vision and geometry in the PyTorch ecosystem — explicit conventions, conformance tests, and honest benchmarks over API growth. Read the Roadmap.
Key Components
- Differentiable Image Processing
Kornia provides a comprehensive suite of image processing operators, all differentiable and ready to integrate into deep learning pipelines.- Filters: Gaussian, Sobel, Median, Box Blur, etc.
- Transformations: Affine, Homography, Perspective, etc.
- Enhancements: Histogram Equalization, CLAHE, Gamma Correction, etc.
- Edge Detection: Canny, Laplacian, Sobel, etc.
- ... check our docs for more.
- Advanced Augmentations
Perform powerful data augmentation with Kornia’s built-in functions, ideal for training AI models with complex augmentation pipelines.- Augmentation Pipeline: AugmentationSequential, PatchSequential, VideoSequential, etc.
- Automatic Augmentation: AutoAugment, RandAugment, TrivialAugment.
- AI Models
Leverage pre-trained AI models optimized for a variety of vision tasks, all within the Kornia ecosystem.- Face Detection: YuNet
- Feature Matching: LoFTR, LightGlue
- Feature Descriptor: DISK, DeDoDe, SOLD2
- Segmentation: SAM
- Classification: MobileViT, VisionTransformer.
See here for some of the methods that we support! (>500 ops in total !)
| Category | Methods/Models |
|---|---|
| Image Processing | - Color conversions (RGB, Grayscale, HSV, etc.) - Geometric transformations (Affine, Homography, Resizing, etc.) - Filtering (Gaussian blur, Median blur, etc.) - Edge detection (Sobel, Canny, etc.) - Morphological operations (Erosion, Dilation, etc.) |
| Augmentation | - Random cropping, Erasing - Random geometric transformations (Affine, flipping, Fish Eye, Perspecive, Thin plate spline, Elastic) - Random noises (Gaussian, Median, Motion, Box, Rain, Snow, Salt and Pepper) - Random color jittering (Contrast, Brightness, CLAHE, Equalize, Gamma, Hue, Invert, JPEG, Plasma, Posterize, Saturation, Sharpness, Solarize) - Random MixUp, CutMix, Mosaic, Transplantation, etc. |
| Feature Detection | - Detector (Harris, GFTT, Hessian, DoG, KeyNet, DISK and DeDoDe) - Descriptor (SIFT, HardNet, TFeat, HyNet, SOSNet, and LAFDescriptor) - Matching (nearest neighbor, mutual nearest neighbor, geometrically aware matching, AdaLAM LightGlue, and LoFTR) |
| Geometry | - Camera models and calibration - Stereo vision (epipolar geometry, disparity, etc.) - Homography estimation - Depth estimation from disparity - 3D transformations |
| Deep Learning Layers | - Custom convolution layers - Recurrent layers for vision tasks - Loss functions (e.g., SSIM, PSNR, etc.) - Vision-specific optimizers |
| Photometric Functions | - Photometric loss functions - Photometric augmentations |
| Filtering | - Bilateral filtering - DexiNed - Dissolving - Guided Blur - Laplacian - Gaussian - Non-local means - Sobel - Unsharp masking |
| Color | - Color space conversions - Brightness/contrast adjustment - Gamma correction |
| Stereo Vision | - Disparity estimation - Depth estimation - Rectification |
| Image Registration | - Affine and homography-based registration - Image alignment using feature matching |
| Pose Estimation | - Essential and Fundamental matrix estimation - PnP problem solvers - Pose refinement |
| Optical Flow | - Farneback optical flow - Dense optical flow - Sparse optical flow |
| 3D Vision | - Depth estimation - Point cloud operations |
| Image Denoising | - Gaussian noise removal - Poisson noise removal |
| Edge Detection | - Sobel operator - Canny edge detection |
| Transformations | - Rotation - Translation - Scaling - Shearing |
| Loss Functions | - SSIM (Structural Similarity Index Measure) - PSNR (Peak Signal-to-Noise Ratio) - Cauchy - Charbonnier - Depth Smooth - Dice - Hausdorff - Tversky - Welsch |
| Morphological Operations | - Dilation - Erosion - Opening - Closing |
Half-Precision Support
| Module | float16 | bfloat16 | Notes |
|---|---|---|---|
kornia.color |
⚠️ | ⚠️ | Most conversions work for both; FFT-based ops may fail |
kornia.filters |
⚠️ | ⚠️ | Basic filters work; FFT-based ops may fail on CUDA |
kornia.enhance |
⚠️ | ⚠️ | Histogram eq / gamma / ZCA work (linalg ops use cast helpers) |
kornia.morphology |
✅ | ✅ | Pure conv/pool ops; no dtype restrictions |
kornia.augmentation |
⚠️ | ⚠️ | Most ops work; precision-sensitive transforms may be inaccurate |
kornia.geometry.transform |
⚠️ | ⚠️ | Affine/warp/resize work via cast helpers; thin-plate spline may fail |
kornia.geometry.camera |
⚠️ | ⚠️ | Pinhole model and most camera ops work; StereoCamera accepts both |
kornia.geometry.calibration |
❌ | ❌ | Explicitly accepts float32/float64 only (PnP solver) |
kornia.geometry.epipolar |
⚠️ | ⚠️ | SVD/inverse use cast helpers; both dtypes work |
kornia.geometry.homography |
⚠️ | ⚠️ | Uses _torch_svd_cast — both dtypes work via casting |
kornia.geometry.liegroup |
⚠️ | ⚠️ | Most ops work via cast helpers; some linalg paths may fail |
kornia.geometry.solvers |
⚠️ | ⚠️ | Uses _torch_solve_cast — both dtypes work via casting |
kornia.geometry.subpix |
⚠️ | ⚠️ | Soft-argmax works; precision-sensitive ops may be inaccurate |
kornia.losses |
⚠️ | ⚠️ | Photometric losses work; linalg-based losses may not |
kornia.feature |
⚠️ | ⚠️ | Detectors/descriptors work; matching uses manual cdist fallback |
kornia.metrics |
⚠️ | ⚠️ | Pixel-level metrics work; linalg-based metrics may not |
kornia.models |
⚠️ | ⚠️ | Conv-based models work; attention-based models may have dtype mismatches |
✅ Supported ⚠️ Partial ❌ Not supported
Test results (commit 6131e98, 2026-03-21):
| Run | Passed | Failed | Skipped | Pass% |
|---|---|---|---|---|
| CPU float32 (baseline) | 7647 | 3 | 3269 | 99.9% |
| CUDA float32 (baseline) | 7634 | 3 | 3280 | 99.9% |
| CPU float16 | 6866 | 747 | 3306 | 90.1% |
| CPU bfloat16 | 6838 | 812 | 3269 | 89.3% |
| CUDA float16 (KORNIA_TEST_IN_SUBPROCESS=1) | 6727 | 643 | 3556 | 91.3% |
| CUDA bfloat16 (KORNIA_TEST_IN_SUBPROCESS=1) | 6695 | 713 | 3518 | 90.4% |
See the full precision guide for details.
Sponsorship
Kornia is an open-source project that is developed and maintained by volunteers. Whether you're using it for research or commercial purposes, consider sponsoring or collaborating with us. Your support will help ensure Kornia's growth and ongoing innovation. Reach out to us today and be a part of shaping the future of this exciting initiative!
Installation
From pip
pip install kornia
Other installation options
From source with editable mode
pip install -e .
For development with Pixi (Recommended)
For development, Kornia uses pixi for fast Python package management and environment management. The project includes a pixi.toml configuration file for reproducible dependency management.
# Install pixi (if not already installed)
curl -fsSL https://pixi.sh/install.sh | bash
# Install dependencies and set up the development environment
pixi install
# Run tests
pixi run test
# For CUDA development
pixi run -e cuda install
pixi run -e cuda test-cuda
This will set up a complete development environment with all dependencies. For more details on dependency management and available tasks, see CONTRIBUTING.md.
From Github url (latest version)
pip install git+https://github.com/kornia/kornia
Quick Start
Kornia is not just another computer vision library — it's your gateway to effortless Computer Vision and AI.
Get started with Kornia image transformation and augmentation!
import numpy as np
import kornia_rs as kr
from kornia.augmentation import AugmentationSequential, RandomAffine, RandomBrightness
from kornia.filters import StableDiffusionDissolving
# Load and prepare your image
img: np.ndarray = kr.read_image_any("img.jpeg")
img = kr.resize(img, (256, 256), interpolation="bilinear")
# alternatively, load image with PIL
# img = Image.open("img.jpeg").resize((256, 256))
# img = np.array(img)
img = np.stack([img] * 2) # batch images
# Define an augmentation pipeline
augmentation_pipeline = AugmentationSequential(RandomAffine((-45.0, 45.0), p=1.0), RandomBrightness((0.0, 1.0), p=1.0))
# Leveraging StableDiffusion models
dslv_op = StableDiffusionDissolving()
img = augmentation_pipeline(img)
dslv_op(img, step_number=500)
dslv_op.save("Kornia-enhanced.jpg")
Find out Kornia ONNX models with ONNXSequential!
import numpy as np
from kornia.onnx import ONNXSequential
# Chain ONNX models from HuggingFace repo and your own local model together
onnx_seq = ONNXSequential(
"hf://operators/kornia.geometry.transform.flips.Hflip",
"hf://models/kornia.models.detection.rtdetr_r18vd_640x640", # Or you may use "YOUR_OWN_MODEL.onnx"
)
# Prepare some input data
input_data = np.random.randn(1, 3, 384, 512).astype(np.float32)
# Perform inference
outputs = onnx_seq(input_data)
# Print the model outputs
print(outputs)
# Export a new ONNX model that chains up all three models together!
onnx_seq.export("chained_model.onnx")
Multi-framework support
You can now use Kornia with TensorFlow, JAX, and NumPy. See Multi-Framework Support for more details.
import kornia
tf_kornia = kornia.to_tensorflow()
Call For Contributors
Are you passionate about computer vision, AI, and open-source development? Join us in shaping the future of Kornia! We are actively seeking contributors to help strengthen the library — making it more correct, faster, and better specified. Whether you're an experienced developer or just starting, there's a place for you in our community.
Strengthen the Core (Priority)
Kornia's differentiated value is its geometry core: warping and sampling, homographies, cameras, epipolar geometry, rotations and Lie groups, and geometry-consistent augmentation. The highest-impact contributions make that core more trustworthy — see the Roadmap for the full picture. Great entry points:
- Benchmark results from your hardware (green lane — just send the PR): run the benchmark suite with
--contributeand send the JSON — CUDA numbers from diverse GPUs are especially wanted. - Convention pinning tests and conformance vectors for core geometry ops (green lane once curated into a
help wantedissue with acceptance criteria). - Corrective error messages (same curation rule): upgrade bare shape asserts into errors that state what was wrong, what was expected, and which convention applies.
- Classical vision in the core domain (discuss-first — open an issue): camera intrinsic calibration, fiducial markers (ArUco/ChArUco), classical tracking, dense stereo, Hough transforms.
See the Roadmap's contributor areas for how each of these routes through the contribution lanes.
AI Models
The model zoo is currently frozen for expansion while maintainer bandwidth concentrates on the core. Shipped models (LoFTR, LightGlue, DISK, DeDoDe, SAM, and friends) stay available and maintained, and model work approved before the freeze (Efficient LoFTR, SANDesc) will be completed under its existing scope. New integrations — including VLM/VLA models — require a named maintainer sponsor who accepts ongoing ownership of the integration; a contributor implementation alone cannot reopen the surface. See the Roadmap for the reasoning and the reopen condition.
Documentation And Tutorial Optimization
Kornia's foundation lies in its extensive collection of classic computer vision operators, providing robust tools for image processing, feature extraction, and geometric transformations. We continuously seek for contributors to help us improve our documentation and present nice tutorials to our users.
Cite
If you are using kornia in your research-related documents, it is recommended that you cite the paper. See more in CITATION.
@inproceedings{eriba2019kornia,
author = {E. Riba, D. Mishkin, D. Ponsa, E. Rublee and G. Bradski},
title = {Kornia: an Open Source Differentiable Computer Vision Library for PyTorch},
booktitle = {Winter Conference on Applications of Computer Vision},
year = {2020},
url = {https://arxiv.org/pdf/1910.02190.pdf}
}
Contributing
We appreciate all contributions, and we are honest about the world we operate in: AI makes code cheap to write, and volunteer review time is our scarcest resource. So our process gates on evidence, not permission:
- Small, evidence-bearing fixes go straight to a PR — a bug fix with a test that fails on
main, a docs fix with a verification snippet, or anyhelp wantedissue (pre-approved, no assignment needed — the best-supported PR wins). - Features and behavior changes need a conversation first — open an issue and get the scope confirmed before writing code. In a geometry library, changed defaults break users silently, so these get extra care.
- AI use is fine — including fully agent-written PRs. Our own maintainers work this way. What we require is that you verified everything (pasted test logs, evidence-backed tests), can answer questions about the code during review, and disclose AI use honestly. What closes PRs is unverified work or unresolved correctness concerns — regardless of how the code was made.
See CONTRIBUTING.md for the details and AI_POLICY.md for the full policy. Participation is subject to the Code of Conduct.
Community
- Discord: Join our workspace to keep in touch with our core contributors, get latest updates on the industry and be part of our community. JOIN HERE
- GitHub Issues: bug reports, feature requests, install issues, RFCs, thoughts, etc. OPEN
- Forums: discuss implementations, research, etc. GitHub Forums
Made with contrib.rocks.
License
Kornia is released under the Apache 2.0 license. See the LICENSE file for more information.
