At the moment, I'm making a comparative analysis between two different neural networks for a class. The problem they are both trying to solve is detecting tables on documents. Below is an example of one:

Example Image

One of the algorithms I am analyzing is a fully convolutional network. The way the algorithm works is that it goes pixel by pixel and assigns each pixel a label of which class it could be in (in my case, table or not a table).

However, my issue is how should you pre-process/label your data if you're training one of these networks? Because tables themselves have words on them, looking at such a fine resolution to detect tables is not optimal. It would be preferable if I could have the FCN look for structural elements that help us identify tables (big gaps, columns, header, etc).

I'm not sure how to train a network that goes pixel by pixel to search for the bigger structural elements. Any thoughts on this?

  • $\begingroup$ Just a tip: your post is probably too long for people to read and answer. You might have more luck trying to summarize the core question succinctly. $\endgroup$
    – 6005
    May 2 '20 at 2:24

There are many papers on document structure analysis. I suggest you read them, rather than trying to reinvent the wheel. As they say, a week in the lab can save a day in the library.

I think there may be some misconceptions. The way we evaluate neural networks is by trying them on a representative workload to see how well they perform. There are effectively no useful methods for performing a "comparative analysis". When you ask "how should you..", the answer with neural networks is typically "whatever works". There are no rules. Often helpful advice is to look for papers that have addressed this problem before and see what they do.

A plausible approach is to just feed in the entire image as input to the network, with no pre-processing (other than the standard pre-processing for images, i.e., to normalize pixels to mean 0 and variance 0).

Labels are more challenging, and that depends on what task exactly that you want to solve. Presumably, you need to manually label the images and then use those as your labels.

How would you train such a network? The same way you train any other network: you construct a training set, choose a loss function, and then use an optimizer to minimize the loss on that training set.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.