Looking in the Mirror: A Faithful Counterfactual Explanation Method for Interpreting Deep Image Classification Models

Accepted at ICCV 2025Paper on arXiv

Townim Faisal Chowdhury1, Vu Minh Hieu Phan1, Kewen Liao2, Nanyu Dong1, Minh-Son To3, Anton van den Hengel1, Johan W. Verjans1, and Zhibin Liao1

1 Australian Institute for Machine Learning, University of Adelaide, Australia

2 Deakin University, Australia

3 Flinders University, Australia

About These Animations

The following videos (mentioned in supplementary) showcase Mirror-CFE counterfactual explanations generated across multiple datasets including Blood-MNIST (B-MNIST), CelebA-HQ, Fashion-MNIST (FMNIST), and MNIST.

Each animation visualizes how Mirror-CFE gradually transforms a source image into a counterfactual example that crosses the classifier's decision boundary while preserving identity. Click a dataset section below to expand and explore the animations.

BMNIST

Lymphocyte → Erythroblast (Figure. 3)

fig3_row7_lymphocyte(GT_lymphocyte)_to_erythroblast_correct.mp4

Lymphocyte ↔ Erythroblast (additional samples)

no12_lymphocyte(GT_lymphocyte)_to_erythroblast_correct.mp4

no189_erythroblast(GT_lymphocyte)_to_lymphocyte_error.mp4

no33_erythroblast(GT_erythroblast)_to_lymphocyte_correct.mp4

no5_erythroblast(GT_erythroblast)_to_lymphocyte_correct.mp4

no69_lymphocyte(GT_lymphocyte)_to_erythroblast_correct.mp4

CelebA-HQ

Slightly opened mouth → Closed mouth (Figure. 4)

fig4_bottomleft_slightly opened mouth(GT_slightly opened mouth)_to_closed mouth_correct.mp4

fig4_bottomright_slightly opened mouth(GT_slightly opened mouth)_to_closed mouth_correct.mp4

fig4_topleft_closed mouth(GT_closed mouth)_to_slightly opened mouth_correct.mp4

fig4_topright_closed mouth(GT_closed mouth)_to_slightly opened mouth_correct.mp4

Slightly opened mouth ↔ Closed mouth (additional sample)

no4262_closed mouth(GT_slightly opened mouth)_to_slightly opened mouth_error.mp4

FMNIST

T-shirt → Pullover (Figure. 3)

fig3_row4_T-shirt(GT_T-shirt)_to_Pullover_correct.mp4

T-shirt ↔ Pullover (additional samples)

no0_Pullover(GT_Pullover)_to_T-shirt_correct.mp4

no100_T-shirt(GT_Pullover)_to_Pullover_error.mp4

no10_Pullover(GT_Pullover)_to_T-shirt_correct.mp4

no27_T-shirt(GT_T-shirt)_to_Pullover_correct.mp4

no6_Pullover(GT_Pullover)_to_T-shirt_correct.mp4

Coat → Shirt (Figure. 3)

fig3_row5_Coat(GT_Coat)_to_Shirt_correct.mp4

Coat ↔ Shirt (additional samples)

no18_Shirt(GT_Shirt)_to_Coat_correct.mp4

no31_Coat(GT_Coat)_to_Shirt_correct.mp4

no4_Coat(GT_Coat)_to_Shirt_correct.mp4

no53_Shirt(GT_Shirt)_to_Coat_correct.mp4

no5_Shirt(GT_Coat)_to_Coat_error.mp4

Sneaker → Ankle boot (Figure. 3)

fig3_row6_Sneaker(GT_Sneaker)_to_Ankle boot_correct.mp4

Sneaker ↔ Ankle boot (additional samples)

no0_Ankle boot(GT_Ankle boot)_to_Sneaker_correct.mp4

no274_Sneaker(GT_Ankle boot)_to_Ankle boot_error.mp4

no36_Ankle boot(GT_Ankle boot)_to_Sneaker_correct.mp4

no38_Ankle boot(GT_Ankle boot)_to_Sneaker_correct.mp4

no6_Sneaker(GT_Sneaker)_to_Ankle boot_correct.mp4

MNIST

8 → 3 (Figure. 3)

fig3_row1_8(GT_8)_to_3_correct.mp4

8 ↔ 3 (additional samples)

no15_8(GT_8)_to_3_correct.mp4

no17_3(GT_3)_to_8_correct.mp4

no185_5(GT_3)_to_8_error.mp4

no22_8(GT_8)_to_3_correct.mp4

no8_3(GT_3)_to_8_correct.mp4

9 → 4 (Figure. 3)

fig3_row2_9(GT_9)_to_4_correct.mp4

4 ↔ 9 / additional_samples

no10_4(GT_4)_to_9_correct.mp4

no1_4(GT_4)_to_9_correct.mp4

no31_9(GT_4)_to_4_error.mp4

no7_9(GT_4)_to_4_correct.mp4

no9_4(GT_4)_to_9_correct.mp4

6 → 5 (Figure. 3)

fig3_row3_6(GT_6)_to_5_correct.mp4

6 ↔ 5 (additional samples)

no10_6(GT_6)_to_5_correct.mp4

no11_5(GT_5)_to_6_correct.mp4

no304_3(GT_5)_to_6_error.mp4

no5_5(GT_5)_to_6_correct.mp4

no6_5(GT_5)_to_6_correct.mp4