Some words about the possibility of having neural network-based methods in G’MIC.
I’ve started studying these kind of methods and from what I’ve read so far, what I can say is:
- There is everything in G’MIC to create artificial neurons networks, including convolutional layers, pooling, and so on…
- Methods relying on neural networks have two main aspects : 1. learning, and 2. evaluating.
Concerning the evaluation aspect: I’m still not sure how fast G’MIC can perform to evaluate a feature using a neural network, particularly if the network is deep. Basically, the evaluation consists in a lot of image convolutions and matrix operations (mostly multiplications). These two are implemented in G’MIC, and are even parallelized, so it may happen that neural network evaluation could be fast enough in G’MIC, when evaluated on a machine with several cores.
Concerning the learning phase: it is definitely slow. People writing scientific papers about NN tell it requires sometimes several weeks of training, with GPU-based convolutions and matrix multiplications. So, even when GPUs are used, it is slow as hell. I don’t expect then to have fast learning methods in G’MIC. No way.
So, only if the neural network evaluation phase can be fast enough in G’MIC (and I still cannot tell because G’MIC does not rely on GPUs for this kind of tasks), then maybe I’ll be able to implement some of the interesting image processing methods using NN. At this stage, I can only hope that this is possible.
In any case, this will require a lot of work and testing, so I would say you shouldn’t expect to see such things coming in G’MIC at least before 2018. All the code for those NN-based algorithms proposed on github are relying on external machine learning libraries (often used in Python), which are definitely not easily integrated in G’MIC. This means that probably the best way to go is to recode those machine learning abilities directly as G’MIC code. This seems to be possible, what I don’t know is if that will be fast enough.
Anyway, that is something I’d like to explore in the next year. But that is not as easy as ‘take a code from github and integrate it as a G’MIC command’.