e-mail: dvkazakov @ gmail.com
(remove spaces on both sides of @)

Phone/WhatsApp: +7-916-909-7864

Telegram: @denis_v_kazakov


Skype: denis.v.kazakov



Reconstructing functions from scanned plots

Skills: convolutional neural networks.

Notebook: click this link to download the Jupyter notebook of this project.

Many industrial standards and building codes specify caculation procedures to design various structures. Some older (but still valid) documents provide plots (nomograms) for manual determination of various parameters. While formulas can be easily converted into code, manual determination of parameters is inaccurate and time consuming, especially in case of iterative processes. An example of such nomogram is shown on the right.

The project purpose was to train a neural network to reconstruct a function from a scanned plot.

I prepared a dataset with 12,000 different curves (10,000 in the train set and 2,000 in the test set) with different grids (different number of vertical and horizontal lines). In this version, I used the standard curve and grid line thicknesses of Matplotlib, which made training easier. In the future, the curve and grid line thicknesses can be the same or can be selected randombly.

A couple of examples of plots used for training is shown below.

The plots were used to train a convolutional neural network (CNN), which performed very well on the test set. A few examples are shown below. The curves predicted by the CNN are shown in red.

Fore detailed discussion of the method and its results please see the Jupyter noteebook.

Top of page