Hacker News new | ask | show | jobs
by GistNoesis 566 days ago
The whole thing is kind of a trolling exercise towards data-science people.

One of the usual dataset tutorial in data-science is something called the swiss-roll [1]. Here the exercise look the same but it's totally different because of the quantity of data available.

In the typical swiss-roll dataset the goal is to make the structure emerge from data, whereas in the Vesuvius challenge, we presumably know the structure : the papyrus has been rolled and we want to extract the data.

All the fancy techniques like manifold learning are therefore irrelevant for this problem. So it's back to the basics : statistical modelling.

You build a probabilistic model with some unknown parameters and you maximize the likelihood of the observed data with strong regularization and handcrafted priors.

So your observation data is 3d voxel volume [2], and your desired output is a 2d image of the unrolled scroll.

So intuitively you may want to define your model as a parametrized by theta unroll function : unrolltheta(x,y,z) -> u,v which map a voxel to a pixel position in the unrolled scroll.

Which you then apply to the voxels, obtain mapped pixels and group-by sum to obtain a 2d image which you pass through a neural network to evaluate whether the thing look like what you want (a prior built on other papyrus from what you expect to see).

Instead what you want to do is the reverse : You want to define you model as a parametrized by theta roll function : rolltheta( u,v ) -> x,y,z which map a pixel position in the unrolled scroll to a voxel in space : From 2d to 3d (aka from lower dimensional space to higher dimensional space).

In the 3d space the data will lie on a 2d manifold, this allows you to discriminate your function by how well they align with the slices : from your rolltheta function you can generate a 3d voxel volume of air or papyrus which you can align with your scan. Then you can unroll your scan by "gathering" the corresponding voxel for each pixel of your unrolled scroll. And then eventually apply the same neural network prior which evaluates scrolliness (if you don't have enough data to build it, now it's not absolutely necessary because we have other regularization terms (the alignment).

What remains to be used is the geometrical properties of a rolled scroll : presumably the paper didn't cross over-itself, so this constrain the rolltheta function with a prior like in repulsive surfaces [3] [4]. And prior based on stretchiness of papyrus (or tearing points of the papyrus).

Once you have your likelihood loss function, it's brute-force time, grab your global optimizer and sample the solution, unroll the papyrus, read the treasure map, find the gold and recoup your investment ; (what!!! are you really saying there is no gold ? how are we gonna pay for the work ? let's make it an open data challenge).

[1] https://scikit-learn.org/dev/auto_examples/manifold/plot_swi... [2] https://colab.research.google.com/github/ScrollPrize/vesuviu... [3] https://www.cs.cmu.edu/~kmcrane/Projects/RepulsiveSurfaces/i... [4] https://www.cs.cmu.edu/~kmcrane/Projects/RepulsiveCurves/ind...