Data Science Applications (Contracts)

As part of Cen­tre for Intel­li­gent Sys­tems, Depart­ment of Com­put­er Sci­ence, Tal­Tech, I am con­tin­u­ous­ly involved in projects involv­ing data sci­ence and machine intel­li­gence. Here are a few projects that I’ve been devel­op­ing soft­ware for.

Development of artificial intelligence methods based system for classification and risk groups determination of motor insurance clients (2016)

An R&D project done for a large insur­ance com­pa­ny. My role in it was twofold:

  1. Data (pre)processing. Most­ly tex­tu­al data and most­ly in MATLAB. Fur­ther analy­sis and arti­fi­cial neur­al net­work train­ing were done in Python environment.
  2. Putting togeth­er the final deliverable—a graph­i­cal appli­ca­tion for Python which includ­ed data pro­cess­ing and appli­ca­tion of pre­trained neur­al net­works to obtain the pre­dic­tions accord­ing to the project goals.

For me this was the first project where I would employ a MATLAB and Python co-devel­op­ment cycle.

A Methodology for computerised detection of pavement cracks and other road defects (2018)

In this project
nnap­ply—the UI of the appli­ca­tion for ana­lyz­ing pave­ment images
, my task was con­duct­ing a research of deep learn­ing meth­ods for image recog­ni­tion and the imple­men­ta­tion of cor­re­spond­ing algo­rithms to the prob­lem of detec­tion of pave­ment dis­tress from non­ide­al pho­to­graph­ic images of high­way roads. This was a so called smart spe­cial­iza­tion project and research and devel­op­ment was done for a com­pa­ny that deals with issues relat­ed to high­way road inspection.

This was a chal­leng­ing project not only because I had lit­tle pre­vi­ous expe­ri­ence with machine vision but also because of the essence of the prob­lem. The pho­tos of high­way roads were of vary­ing qual­i­ty fea­ture-wise often­times cor­rupt­ed by shad­ows and ran­dom road­side objects mak­ing it to the final com­pos­ite photograph.

Thus, sev­er­al issues had to be tack­led. In terms of com­pu­ta­tion­al intel­li­gence algo­rithms, con­vo­lu­tion­al neur­al net­works were final­ly con­sid­ered as the tool for image classification—the out­put of the com­plete net­work pre­dict­ed the pres­ence of a defect on a square-shaped seg­ment cut from the large pho­to based on a grid (pix­el res­o­lu­tion of the pho­tos was con­sid­er­ably high—another chal­lenge to overcome).

Exam­ple of the appli­ca­tion output—analysis of a pho­to­graph­ic image

Oth­er team mem­bers also tried var­i­ous machine learn­ing meth­ods, but con­vo­lu­tion­al net­works pro­duced the most coher­ent results in the scope of the project. In the end, precision/recall met­rics were still low, but the over­all sys­tem was already capa­ble of detect­ing defect-like objects on arbi­trary images.

The deliverable—a fron­tend com­plete­ly writ­ten in Python and PyQt5—was then hand­ed over to the com­pa­ny. Some back­end func­tion­al­i­ty (espe­cial­ly parts relat­ed to ini­tial image mask manip­u­la­tion and road extrac­tion) was co-devel­oped with Dr. Andri Riid.

Also, the project has grown into a big­ger one and is cur­rent­ly ongoing.


GPTIPS 2F Toolbox for MATLAB

GPTIPS 2F tool­box for MATLAB is a fork of the orig­i­nal GPTIPS2 tool­box devel­oped by Dominic Sear­son. The acronym stands for “Genet­ic Pro­gram­ming Tool­box for the Iden­ti­fi­ca­tion of Phys­i­cal Sys­tems” and “2F” refers to the fact that it is both a fork (of ver­sion 2 of the tool­box) and a func­tion­al update.

That said, the updat­ed tool­box deliv­ers the fol­low­ing functionality:

  1. Pre­set Ran­dom Con­stants (PRCs): a sub­set of Ephemer­al Ran­dom Con­stants (ERCs) the dif­fer­ence being that PRCs are ran­dom­ly cho­sen from a pre­de­fined set.
  2. Auto­mat­i­cal­ly Defined Func­tions (ADFs): basi­cal­ly tem­plates that are seed­ed into the ini­tial pop­u­la­tion and can also arise nat­u­ral­ly dur­ing mutation.
  3. Evo­lu­tion­ary rules: define rules for either out­right killing indi­vid­u­als with cer­tain unde­sir­able traits or sig­nif­i­cant­ly decrease their chances of sur­vival (alpha test­ing feature).

Addi­tion­al­ly, a num­ber of bugs were fixed and a seri­ous com­pat­i­bil­i­ty issue was resolved for Mat­lab R2018a/b+.

The fork is large­ly a work-in-progress (although it is already ful­ly usable) with con­tri­bu­tions from sev­er­al Ph.D. stu­dents grad­u­al­ly being inte­grat­ed into the toolbox.




FOMCON (“Frac­tion­al-Order Mod­el­ing and CON­trol”) tool­box for MATLAB is a result of my research of appli­ca­tions of frac­tion­al-order cal­cu­lus to auto­mat­ic control.

The tool­box con­tains sev­er­al mod­ules each pro­vid­ing par­tic­u­lar func­tion­al­i­ty. Apart from the core mod­ule that also con­tains some util­i­ties that could be use­ful even out­side the func­tion­al­i­ty of the tool­box the fol­low­ing mod­ules are available:

  1. The iden­ti­fi­ca­tion mod­ule allows to iden­ti­fy frac­tion­al-order trans­fer func­tion mod­els based on time series or fre­quen­cy domain data;
  2. The con­trol mod­ule that allows to tune frac­tion­al-order PID (pro­por­tion­al-inte­gral-deriv­a­tive) type controllers;
  3. The imple­men­ta­tion mod­ule which helps to deploy the result­ing mod­els and/or con­trollers into actu­al con­trol loops.

Graph­i­cal user inter­faces are imple­ment­ed to sup­port the most impor­tant func­tions of the tool­box. A Simulink block library is also available.

Offi­cial web­site:

Math­Works File Exchange link to the tool­box: