Releases: worldcoin/open-iris
Release list
v1.9.1
Hotfix: Preserve sequence types in __safe_serialize, add tests
Summary
- Preserve original sequence types (list vs tuple) during safe serialization.
- Add focused unit tests for
__safe_serialize. - Strengthen multiframe E2E checks.
- Fix documentation module reference.
Changes
- src/iris/orchestration/output_builders.py
_nested_safe_serialize: returntype(obj)(...)for lists/tuples instead of alwayslist[...].__safe_serialize: returntype(object)(...)for lists/tuples instead of alwayslist[...].
- tests/unit_tests/orchestration/test_output_builders.py
- Add
TestSafeSerializetest suite (None, ImmutableModel, numpy array to list, list/tuple recursion with type preservation, primitive passthrough, unsupported type raises). - Access private serializer via
getattrto avoid dunder name-mangling.
- Add
- tests/e2e_tests/pipelines/test_e2e_multiframe_iris_pipeline.py
- Assert
individual_frames[0]["metadata"]["image_size"]is a tuple.
- Assert
Rationale
- Avoid unintended type coercion (tuple → list) during serialization, ensuring API consistency (e.g.,
image_sizeremains a tuple). - Add regression coverage around serialization behavior.
Testing
- Unit:
tests/unit_tests/orchestration/test_output_builders.pypasses. - E2E: strengthened assertion for multiframe pipeline metadata type.
Risk/Impact
- Low. Behavior change is limited to preserving container type during serialization; otherwise non-breaking.
What's Changed
- release 1.9.1 by @ShevchenkoRostyslav in #140
Full Changelog: v1.9.0...v1.9.1
v1.9.0
Open IRIS v1.9.0 Release Notes
🚀 New Features
✨ Multiframe Iris Pipeline
- New
MultiframeIrisPipelineclass: A comprehensive pipeline that combines individual iris processing with template aggregation - Unified configuration system: Single YAML configuration file that manages both iris processing and template aggregation phases
- Multi-image processing: Process multiple iris images and aggregate the resulting templates into a single high-quality template
- Enhanced output builders: New output builders specifically designed for multiframe pipeline results
🔧 Pipeline Architecture Improvements
- Renamed
MultiframeAggregationPipelinetoTemplatesAggregationPipeline: More descriptive naming for better clarity - Enhanced output builders: Extended
output_builders.pywith new functions for multiframe pipeline outputs - Improved error classes: Added new error types for better exception handling in template aggregation scenarios
🛠️ Infrastructure & DevOps
📚 Documentation Deployment
- Automated documentation deployment: New GitHub Actions workflow for automatic docs deployment on releases
- Enhanced build process: Improved documentation building with better handling of hidden files and build artifacts
- GitHub Pages integration: Streamlined deployment to GitHub Pages with proper
.nojekyllfile handling
📦 PyPI Publishing
- Automated PyPI publishing: New workflow for automatic wheel and source distribution publishing
- TestPyPI support: Support for publishing to TestPyPI for testing purposes
- Release-triggered publishing: Automatic publishing on GitHub releases and main branch pushes
🔍 Technical Details
Testing Improvements
- Comprehensive test coverage: Added extensive unit tests for the new multiframe pipeline (783+ lines of test code)
- End-to-end testing: New e2e tests for multiframe iris pipeline functionality
- Test refactoring: Improved existing tests to work with the new pipeline architecture
⚠️ Important Notes
Template Quality Requirements
The new multiframe pipeline includes important warnings about template quality and validation requirements. Users must ensure:
- Templates are from the same user and same eye
- Templates meet quality thresholds (no off-gaze, occlusion, poor focus)
- Appropriate validation criteria are established before production use
🔗 Migration Guide
For users upgrading from v1.8.x:
- The
MultiframeAggregationPipelinehas been renamed toTemplatesAggregationPipeline - New
MultiframeIrisPipelineclass is available for combined processing - Enhanced error handling provides better debugging capabilities
- Automated deployment workflows reduce manual intervention
What's Changed
- release v1.9.0 by @ShevchenkoRostyslav in #136
Full Changelog: v1.8.2...v1.9.0
v1.8.2
open-iris v1.8.2
Changed
- Add option to load weights from a given path
- Bug fix on hamming distance with
separate_half_matchingenabled, the maskbit count should be doubled when applying HD normalization.
v1.8.1
Bugfix
Removed the weights from the output_builders for the Multi-frame pipeline due to potential privacy concerns
What's Changed
- Iris multiview/aic 5848 by @ShevchenkoRostyslav in #116
Full Changelog: v1.8.0...v1.8.1
v1.8.0
Release Notes - IRIS v1.8.0
Overview
IRIS v1.8.0 introduces significant enhancements to multi-frame iris template processing with new alignment and identity validation capabilities. This release focuses on improving the robustness and accuracy of template aggregation by ensuring proper alignment and identity validation before processing.
🚀 New Features
Template Alignment System
- Hamming Distance-Based Alignment: New algorithm that aligns iris templates by finding optimal rotation offsets that minimize hamming distance between templates and a reference
- Configurable Reference Selection: Multiple methods for selecting reference templates (linear, mean squared, root mean squared)
- Rotation Optimization: Configurable maximum rotation shift with normalization options
- Preserved Distance Information: Maintains original pairwise distances while providing aligned templates
Identity Validation & Filtering
- Template Identity Filter: New algorithm that validates and filters templates to ensure they belong to the same identity
- Outlier Detection: Greedy purification algorithm to remove outlier templates based on pairwise distances
- Identity Clustering: Identifies potential identity clusters using graph-based connected component analysis
- Configurable Actions: Multiple validation failure actions (remove, raise error, log warning)
Enhanced Data Structures
- WeightedIrisTemplate: New dataclass extending IrisTemplate with per-bit reliability weights
- Improved Base64 Encoding: Enhanced encoding utilities for float arrays
- Enhanced Validation: Improved input validation and error handling
🔧 Pipeline Improvements
Updated Multi-Frame Aggregation Pipeline
- New Pipeline Flow: Templates now go through alignment → identity validation → aggregation
- Improved Mask Threshold: Adjusted mask threshold in majority vote from 0.5 to 0.01 for better performance
- Enhanced Error Handling: New error types for identity validation failures
What's Changed
- Iris multiview/aic 5764 by @ShevchenkoRostyslav in #110
- Iris multiview/aic 5811 by @ShevchenkoRostyslav in #112
- release 1.8.0 by @ShevchenkoRostyslav in #113
Full Changelog: v1.7.1...v1.8.0
v1.7.1
Add Pipeline Configuration Update Functionality
What's Changed
- Add Pipeline Configuration Update Functionality by @ShevchenkoRostyslav in #108
- Release the bugfix: add update_config by @ShevchenkoRostyslav in #109
Full Changelog: v1.7.0...v1.7.1
v1.7.0
open-iris v1.7.0
Major
- 🎯 Multiframe Aggregation Pipeline: New pipeline for processing multiple iris captures with template aggregation capabilities
- 🏗️ Base Pipeline Abstraction: Refactored pipeline architecture with new
BasePipelineclass for better code organization and extensibility - 📊 Majority Vote Template Aggregation: Added sophisticated template combination algorithm for improved iris recognition accuracy
Bug Fixes & Improvements
- 🔧 Pipeline Metadata Validation: Enhanced version checking and validation mechanisms
- 📝 Configuration Management: Improved YAML configuration loading and default location handling
- 🧪 Testing Coverage: Extensive new test suites for multiframe aggregation and template combination
- 🛠️ Code Refactoring: Cleaned up pipeline implementations and improved code maintainability
Technical Changes
- Enhanced output builders with improved debugging capabilities
- Streamlined iris pipeline implementation by moving common functionality to base class
- Updated pipeline configurations and parameter handling
v1.6.0
open-iris v1.6.0
Major
Changed
- add flag
maskisduplicatedto allow mask to be either different or duplicated in the imaginary and real parts (for more compact template size). - only masking out noisy fragile bits when
maskisduplicatedis enabled.
v1.5.0
open-iris v1.5.0
Major
Changed
- calculate mask response by convolving with imaginary part of filters
- change mask_threshold accordingly
v1.4.0
open-iris v1.4.0
Major
Changed
- Improved filter convolution on the normalized image boundaries. This change should slightly reduce maskcode occlusion.
Changelog
Full Changelog: v1.3.0...v1.4.0