Barlow

Barlow is a tool for identifying the failure modes for a given neural network. To achieve this, Barlow first creates a group of images such that all images in the given group have the same predicted class or the label. Then, it uses a (possibly separate) robust model to extract the embedding for all images in the group. The embedding encodes the human-interpretable visual attributes present in the image. It then learns a decision tree using this embedding that predicts failure on the neural network being inspected for failure.

Prerequisites

  • Python 3.7+
  • Pytorch 1.6+
  • scikit-learn 0.23+
  • scipy 1.5+
  • matplotlib 3.2+

How to run?

  • The robust model is taken from the robustness library and can be downloaded from this link in models/
  • Run failure_explanation_sample.ipynb to identify example failure modes for the given set of images (in sample_data/) using the robust model located in models/.

Example failure mode

For the images with label water jug, when feature[1378] (visually identified as 'water jug handle') is less than 0.089335, error rate increases to 100.0% from 50.0%, i.e an increase of 50.0% in the failure rate.

Citation

@inproceedings{singlaCVPR2021,
    title={Understanding Failures of Deep Networks via Robust Feature Extraction},
    author={Sahil Singla and Besmira Nushi and Shital Shah and Ece Kamar and Eric Horvitz},
    booktitle={The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
    year={2021}
}

GitHub

https://github.com/singlasahil14/barlow