seika 0.1.0
seika: ^0.1.0 copied to clipboard
Smart inpainting for Flutter. Routes automatically between PatchMatch and LaMa neural based on mask complexity analysis.
0.1.0 #
- iOS support — seika now runs on iOS 16.0+. The C/FFI PatchMatch engine
is bundled as
seika.frameworkvia Flutter native assets and loaded correctly on both simulator and physical devices. - Fixed
DynamicLibraryloading on iOS: native assets createsseika.framework/seika, not a flatlibseika.dylib. Updated_openLib()accordingly. - Fixed
_openLib()and_libinPatchMatchEngine— both are nowstatic, making them accessible from static isolate methods. Previously caused a compile-time error.
0.0.1 #
- PatchMatch engine — C/FFI implementation with zero additional download. Multi-scale pyramid, bidirectional NNF, EM voting, and seam blending. Works offline with no model files required.
- LaMa neural engine — Large Mask inpainting via ONNX Runtime. High-quality results for object removal, watermarks, and text. Model downloaded on demand (~209 MB).
- MI-GAN neural engine — Mobile-native inpainting (ICCV 2023). 7× smaller than LaMa (~80 MB), faster CPU inference, optimized for on-device use.
- Model catalog —
SeikaModelInfo.allstatic registry. Each model is independently downloadable, verifiable via SHA-256, and deletable to reclaim storage. SeikaModelManager— Stream-based download with progress events, SHA-256 integrity verification, and atomic file rename on completion.- Auto routing —
SeikaEngine.autoanalyzes mask complexity (texture variance + edge coherence) and picks the best engine automatically. Falls back to PatchMatch when no model is downloaded. - Mask dilation — Neural path automatically expands the mask by 8 px before inference, giving the model more context at boundaries and reducing edge artifacts.
- Soft boundary blending — BFS distance field applied after inference for a smooth, seam-free transition between the filled region and the original image.
- Isolate-safe — PatchMatch runs in a background isolate via
compute. Neural inference runs viaOrtSession.runAsync. Both are safe to call from the UI thread.