Décoder les décisions des réseaux neuronaux : Implémentation pas à pas de Grad-CAM avec PyTorch

Grad-CAM from Scratch with PyTorch Hooks

Décoder les décisions des réseaux neuronaux : Implémentation pas à pas de Grad-CAM avec PyTorch

Grad-CAM est une technique clé d'IA explicable (XAI) qui révèle les raisonnements des réseaux de neurones convolutifs (CNN) en générant des cartes thermiques. Ces visualisations identifient les zones d'une image ayant influencé une prédiction spécifique, comme l'arrêt soudain d'une voiture autonome. Cet article propose un guide pratique pour implémenter Grad-CAM en Python avec PyTorch, en exploitant les hooks pour extraire dynamiquement gradients et activations.

L'approche Grad-CAM repose sur l'analyse des cartes de caractéristiques de la dernière couche convolutive, qu'elle pondère par l'importance moyenne des gradients pour la classe cible. Après sommation et application d'une ReLU, on obtient une carte de 14×14 pixels qu'on redimensionne à l'échelle originale. Cette méthode rapide et fiable s'est imposée comme un standard en vision par ordinateur.

Notre démonstration utilise VGG16 pré-entraîné sur ImageNet. Après avoir chargé le modèle et une image de requin-baleine, nous enregistrons les activations via un forward hook sur la couche convolutive finale. Un backward hook capture ensuite les gradients par rapport à la classe 'requin-marteau', prédiction majoritaire.

L'analyse révèle que le modèle se focalise principalement sur la nageoire caudale, expliquant potentiellement des confusions entre espèces de requins. Ce type d'information est crucial pour diagnostiquer les failles des systèmes d'IA, surtout dans des applications critiques comme la conduite autonome.

L'implémentation complète est disponible sur GitHub. Pour approfondir, consultez notre cours gratuit sur les méthodes XAI en vision par ordinateur, qui couvre Grad-CAM et ses dérivés.

Giải mã quyết định của mạng nơ-ron: Triển khai Grad-CAM từ A-Z với PyTorch Hooks

Grad-CAM là kỹ thuật AI giải thích được (XAI) giúp làm sáng tỏ cơ chế ra quyết định của mạng nơ-ron tích chập (CNN) thông qua bản đồ nhiệt. Những hình ảnh trực quan này chỉ ra vùng ảnh ảnh hưởng đến dự đoán, ví dụ tại sao xe tự lái đột ngột dừng lại. Bài viết hướng dẫn từng bước triển khai Grad-CAM bằng Python và PyTorch, sử dụng hooks để trích xuất gradient và kích hoạt.

Phương pháp Grad-CAM phân tích bản đồ đặc trưng từ lớp tích chập cuối cùng, đánh trọng số dựa trên gradient trung bình của lớp mục tiêu. Sau khi tổng hợp và áp dụng ReLU, ta thu được bản đồ 14×14 pixel được phóng to về kích thước ảnh gốc. Kỹ thuật nhanh và đáng tin cậy này đã trở thành tiêu chuẩn trong thị giác máy tính.

Thực nghiệm sử dụng mô hình VGG16 tiền huấn luyện trên ImageNet. Sau khi tải mô hình và ảnh cá nhám voi, chúng tôi ghi lại kích hoạt qua forward hook ở lớp tích chập cuối. Backward hook thu thập gradient so với lớp 'cá nhám búa' - dự đoán có xác suất cao nhất.

Kết quả cho thấy mô hình tập trung chủ yếu vào vây đuôi, có thể dẫn đến nhầm lẫn giữa các loài cá mập. Thông tin này cực kỳ giá trị để chẩn đoán lỗi hệ thống AI, đặc biệt trong ứng dụng quan trọng như xe tự hành.

Dự án đầy đủ có trên GitHub. Để mở rộng kiến thức, tham khảo khóa học XAI cho thị giác máy tính miễn phí của chúng tôi, bao gồm Grad-CAM và các biến thể.