  Even as deep neural networks have become very effective for tasks in vision
and perception, it remains difficult to explain and debug their behavior. In
this paper, we present a programmatic and semantic approach to explaining,
understanding, and debugging the correct and incorrect behaviors of a neural
network-based perception system. Our approach is semantic in that it employs a
high-level representation of the distribution of environment scenarios that the
detector is intended to work on. It is programmatic in that scenario
representation is a program in a domain-specific probabilistic programming
language which can be used to generate synthetic data to test a given
perception module. Our framework assesses the performance of a perception
module to identify correct and incorrect detections, extracts rules from those
results that semantically characterizes the correct and incorrect scenarios,
and then specializes the probabilistic program with those rules in order to
more precisely characterize the scenarios in which the perception module
operates correctly or not. We demonstrate our results using the SCENIC
probabilistic programming language and a neural network-based object detector.
Our experiments show that it is possible to automatically generate compact
rules that significantly increase the correct detection rate (or conversely the
incorrect detection rate) of the network and can thus help with understanding
and debugging its behavior.
