Inspired by "Growing Neural Cellular Automata", as showcased by Two Minute Papers, I thought of a pathway to implement these image regeneration capabilities in generic scenarios.
This will be achieved by using a CNN ("Convolutional Neural Networks") trained to as how "Diffusion models" are. It will be run iteratively, where:
- For each iteration:
- For each pixel:
- If the pixel is already there, skip
- If at least
$\alpha %$ of the neighbouring pixels are there,- run the network with these pixels as input
- sets the newly generated pixel
- For each pixel:
The training will be done as follows:
- An input image (
$# I = \left< \mathrm{width}, \mathrm{height}, \mathrm{channels} \right>$ ) is selected from [a whole image of a] sample set - An input boolean mask (
$# M = \left< \mathrm{width}, \mathrm{height} \right>$ ) is generated, representing the lack of pixels - The net is trained to, for given local
$I$ and$M$ (the size of the CNNs input kernel), reproduce every pixel$p$ where the mask$m$ isfalse
. The network won't have access to any pixel where$m$ isfalse
. - Remove pixels from the mask
$M$ (by setting them tofalse
) before resuming training
Depending on the capabilities of abstraction (relative to the model) and on the variety of the training, this network could be used to (in the context of images):
- Remove noise, given a explicit pixel-wise definition of the noise.
- Remove elements with complete regeneration
- Extend edges
- Connect multiple images, or even image streams (videos): In the subcontext of webcam chat, instead of having borders or removing the background and "placing" the people in "chairs" (as is done by Skype), fully extend their backgrounds and create one full room, where "everyone" "is present"
And with the concepts of "Transfer Learning", a pre-trained network could be specialized into an specific builder or reconstructor.
The initial image is true
value is the presence of a pixel, while a false
value is the absence of it.
The subsequent images and masks follow the iterative rule
Unknown
-
$\vec k\in\mathrm N^n$ : the kernel shape minus$\vec 1$ over$2$ $\alpha\in[0; 1]$
While