Evizero / Augmentor.jl

A fast image augmentation library in Julia for machine learning.
https://evizero.github.io/Augmentor.jl/
Other
138 stars 47 forks source link

Proper Attribution #1

Closed Evizero closed 7 years ago

Evizero commented 7 years ago

Because this package makes heavy use of CoordinateTransformations.jl, ImageTransformations.jl, IdentityRanges.jl, and PermutedDimsArray, I thought it would be polite to make you aware of this package's existence (which I am to register soon).

I hope the way I attribute the packages at the end of the readme is to everyone's satisfaction. If not please let me know.

@timholy, @andyferris, @c42f

timholy commented 7 years ago

Cool package! Very nice work.

c42f commented 7 years ago

Looks great, and the attribution is nice, I'm not too fussy :-)

A very small comment on the docs (which also look nice btw) - the very first sentence would, I think, be better to describe the functionality in a self contained way, rather than refer to the python implementation. I only mention this because I was skimming the docs and was initially confused about what this package was for. So, perhaps "Augmentor is a fast library for increasing the number of images in a machine learning training set by translation,rotation and other transformations"?

CC @paulbellette - you might find this package quite useful :-)

Evizero commented 7 years ago

That is a good idea, thanks. And thanks for the comments

PaulBellette commented 7 years ago

Looks great! If it has thin plate spline style transformations would be cool for things like ultrasound and sonar... :smile:

andyferris commented 7 years ago

OK, this is very cool @Evizero. Thanks for the acknowledgements :) I really love the way Julia lets you put the pieces together like this to make a really useful package.

Evizero commented 7 years ago

If it has thin plate spline style transformations would be cool for things like ultrasound and sonar

I'll look into it (i.e. I'll spend more time googling what you are talking about). I do need to reimplement elastic distortions that I had in the initial prototype (see gif below). It isn't the same thing but looks related enough that maybe I'll find a way to implement the internals in order to support both.

mesh3

andyferris commented 7 years ago

Awesome :)

PaulBellette commented 7 years ago

That is the sort of thing I was talking about, elastic distortions modelled with a thin plate spline. I don't think the exact model for the elastic distortions is really going to be important, the example you show looks perfect (the models are heuristic anyway, just intended to approximately model the type of deformations you would hope the classifier to be insensitive to).

Evizero commented 7 years ago

pushed the additions. I went the easy way and implemented the distortions using smoothed random vector fields (i.e. it uses a grid and not arbitrarily placed distortion vectors). This should cover the ML use-case at least and it allows for lazy use using a new type DistortedView. Lots of settings to tweak, such as scale, sigma for the gaussian filter, smoothing iterations, gridsize, and pinning the border

I'll write up a whole tutorial about it in due time

mnist_interact

andyferris commented 7 years ago

Ok, super cool :)