This one of my assignments for Deep Learning. In this project, we are tasked with implementing our own version based on the Neural Style Transfer tutorial from TensorFlow. tutorial

My primary objective is to generate mosaic windows featuring unique motifs that influenced by modern elements,

Kirchenfenster
Inverted SVG of BraveHeart

The Future is then to convert these generated images into SVG files. These SVGs can later be used in applications like Fusion 360 (or similar software) to extrude the designs, thereby creating files that can be 3D printed, laser cut, or manufactured by other means.

Online Converter

Note: A Fusion 360 student account is provided free of charge.

Neural Style Transfer

This upcoming version is still a work in progress and currently meets the basic requirement of the assignment by focusing on the implementation aspect. git project.

Colors are not really necessary for my model. However, if you aim to create this mosaic window, a colorful vision might be appreciated. The next step will involve combining black-and-white mosaic images with colored content images to focus on the essentials. For later, with 1(B&W) instead of 3 dimensions(RGB)

Neural Style Mosaic

How to Use

The Jupyter Notebook can be downloaded and, once all required libraries are installed, executed without issues.

To update the images, simply specify a different path in the configuration. The comments serve as both documentation and explanation of the code. You can also modify other configuration settings as needed.

Please note that if you plan to push this further, it is recommended to use a GPU. If you're using Nvidia hardware, refer to this link for more details: Nvidia CUDA Toolkit.

Examples

Best Result
Chobi 10 Steps
Composition 7 with Red
Great Wave at Kanagawa
Creation of Adam with Mosaic
Mona Lisa with Mosaic
Starry Night
Tubingen with Starry Night

Conclusion for my Goal

To create mosaic windows, I first tried a direct approach with my Configurator. However, I believe it would be more effective to apply filters or algorithms that adjust the edges to form intuitive shapes. This method will separately detect outlines and use them as a grid to build the mosaic.

Jupyter Notebook Implementation

Jupyter Notebook: Complete Version (Click to Show/Hide)

Code on Github