Comments (4)
This gets to the heart of how we formulate our philosophical approach to composing augmentation functionality. I believe @kwcckw had some comments that similarly touch on how we compose some fundamental augmentations.
For example, issue #11 aims to combine two fundamental augmentations into a single augmentation that has an identifiable purpose and effect. The aim of #11 is to make augmentations more user friendly to the casual user.
But, what if we want to re-use that "dusty ink" effect in some other way on another augmentation?
I propose that composition occurs in (at least) 3 different levels:
- library of utility python functions that can be re-used between various augmentations
- augmentations
- pipelines
The casual Augraphy user will leverage the default pipeline. A slightly more advanced user will compose their own pipeline from available augmentations. The most advanced user will create custom augmentations in their own code that is added to a custom pipeline.
I believe there is an additional level of composability that I don't think we have approached, which is to compose pipelines using other pipelines. So, for example, perhaps there is a "Letterpress" pipeline (instead of a "Letterpress" augmentation). That pipeline might leverage dusty ink and ink blobs augmentations. Then, a pipeline might pull in the "Letterpress" pipeline as a OneOf sequence that is invoked from their own custom pipeline.
Anyhow, before we get too much further, we need to formulate a consensus opinion on how we can balance having a set of user-friendly and easily-identifiable purpose-driven augmentations vs micro augmentations that must be mixed and matched to compose a particular effect.
from augraphy.
I propose that composition occurs in (at least) 3 different levels:
1. library of utility python functions that can be re-used between various augmentations 2. augmentations 3. pipelines
Yes, i think this is important since some augmentations may redundant to each other. Additionally, is there a better way to avoid those same redundant augmentation?
For example, in #11 , we are merging dusty ink and ink blob in ink phase, so there shouldn't be anymore dusty ink and ink blob augmentation in ink phase.
from augraphy.
I wrote some thoughts on future directions in #22 - in short, I think we should end up with a small set of useful augmentations to show the utility of the package (things like paper fold, ink bleed, scanner lines, etc.), but also provide easier ways to combine and extend existing features (at the different levels mentioned above), and to add new features where desired.
from augraphy.
I'm closing this issue since #25 covers at least half of the concern raised here. Topics of composition are being adequately discussed elsewhere. The mechanical deformations proposed are good ones that should be independently proposed on a per-transform basis along with examples of the expected output.
from augraphy.
Related Issues (20)
- Create Baseline Performance Benchmark; Apply Initial Optimizations Using Numba HOT 2
- Create Example Using Dataloader for PyTorch and TensorFlow HOT 1
- Add Python 3.11 Support, Drop Python 3.7 HOT 2
- Images Broken in PyPI Listing HOT 2
- Reflected Light from Camera Flash or other Bright Sources HOT 1
- Add Color Shifting / 3D Blur Effect HOT 4
- Improve PageBorder effect HOT 1
- Add support for bounding box, keypoints and mask. HOT 1
- Add `InkColorSwap` to Replace the Color Used for Lettering in a Document HOT 1
- Add `InkMottling` Augmentation to Ensure Ink is Non-Uniform HOT 1
- Add support for image with alpha layer. HOT 1
- Color range in InkBleed is not working HOT 1
- Update to Paper Factory HOT 1
- Confusion on `Geometric` Augmentation HOT 2
- Memory leak in AugmentationSequence HOT 4
- Training becomes very slow with these transforms. HOT 10
- ColorPaper cant generate different color in the cycle running HOT 2
- DirtyScreen doesnt work and crashes jupyterlabs HOT 2
- stucked when I process image in the cycle HOT 5
- Default pipeline generates many "unreadable" documents HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from augraphy.