Results and Examples
On this page you will see a summary of results you can expect when using RustSEG. After extensive testing I have identified several categories of images containing rust in which my method does well. I have also identified times where my system performs poorly. These bad results are split up into different categories.
Good Results
Here a collection of good results. You can see from these images RustSEG can find the approximate location of the rust and the post-processing can then mask it quite accurately.
Good Results (Painted Surface)
This seems to be the examples where my method excels the most. My method can locate the approximate location and the the post processing can perfectly mask out the rusty areas. This is not that impressive as non-deep learning methods can also do this.
Post-processing Failures
A somewhat common occurrence is when RustSEG generates what looks like a pretty decent localisation of rust and then the post-processing fails to operate correctly. If this happens try RustSEG Advanced you may get better results as it has a more complex post-processing implementation.
CRF Fail
The core part of the post-processing step is a conditionally random field (CRF). However the current tuning is still a work in progress. So images cause the CRF to fail completely. This is considered a bug and is being worked on.
Shadow Failure
This is probably the most critical failure of the system. It appears that some shadowy images confuse the GradCAM step and interfere with the heatmap it generate. This then make the post-processing fail as the post processing works on a "Junk-in Junk-out" system.
All Rust Fail
Another disappointing failure mechanic is images that are all rust. These fail in one of two ways, but rarely succeed. The first way is RustSEG correctly identifies that all the image contains rust and the post processing fails. And the second way is it fails to detect the whole image contains rust. For my method to work consistently some of input image needs to contain non-rusted material. I believe this to be a fair assumption as what is the point of a segmenter on an image totally consisting of one class.
Special Cases
One thing of note is when RustSEG generates the heatmap it uses the final layer of the CNN. This means it is limited to a resolution of 28x28. For small particle of rust, or rust far away in the image my method will almost always fail.
Random Failures
Like most things in life my method is not perfect. Sometimes RustSEG just completely fails even after correctly determining that there is rust in the image.