v0.5.0 ====== Updates / New Features ---------------------- CI * Updated notebooks CI workflow to include notebook data caching. Documentation * Added text discussing black box methods to ``introduction.rst``. * Added a section to ``introduction.rst`` that describes the links between saliency algorithms and implementations. * Edited all text. * Update top-level ``README.md`` file to have more useful content. * Update misc. doc on local SonarQube scanning. Examples * Add example notebook for saliency on Atari deep RL agent, including updates on top of the original work to normalize saliency maps and conform to our API standards. * Add example demonstrating saliency map generation for COCO formatted serialized detections. * Updated examples to all use a common data sub-directory when downloading or saving generated data. Implementations * Add ``SquaredDifferenceScoring`` implementation of the ``GenerateClassifierConfidenceSaliency`` interface that uses squared difference. * Add ``RandomGrid`` implementation of ``PerturbImage``. This generates masks of randomly occluded cells with a given size in pixels. Utilities * Add ``gen_coco_sal`` function to compute saliency maps for detections in a ``kwcoco`` dataset, with accompanying cli script ``sal-on-coco-dets`` which does this on a COCO formatted json file and writes saliency maps to disk. * Add multi-threaded functionality to ``occlude_image_batch`` utility. Containerization * Added Dockerfile and compose file that create base xaitk_saliency image. Fixes ----- Build * Fix incorrect specification of actually-optional ``papermill`` in relation to its intended inclusion in the ``example_deps`` extra. * Update patch version of Pillow transitive dependency locked in the ``poetry.lock`` file to address CVE-2021-23437. * Update the developer dependency and locked version of ipython to address a security vulnerability. Implementations * Fix incorrect cosine similarity computation and mask inversion in implementation of ``DRISEScoring`` detector saliency. Examples * Updated example Jupyter notebooks with more consistent dependency checks and also fixed minor header formatting issues. Tests * Fix deprecation warnings around the use of ``numpy.random.random_integers``. Utilities * Fix ``xaitk_saliency.utils.detection.format_detection`` to not upcast the data type output when ``objectness is None``. * Fix ``xaitk_saliency.utils.masking.weight_regions_by_scalar`` to not upcast the data type output when ``inv_masks is True``. * Update ``xaitk_saliency.utils.masking.weight_regions_by_scalar`` to not use fully vectorized operation which significantly improves efficiency.