summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/python-modules/grad-cam/default.nix65
-rw-r--r--pkgs/top-level/python-packages.nix2
2 files changed, 67 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/grad-cam/default.nix b/pkgs/development/python-modules/grad-cam/default.nix
new file mode 100644
index 00000000000..4e43915c86d
--- /dev/null
+++ b/pkgs/development/python-modules/grad-cam/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, matplotlib
+, numpy
+, opencv4
+, pillow
+, scikitlearn
+, torch
+, torchvision
+, ttach
+, tqdm
+}:
+
+buildPythonPackage rec {
+  pname = "grad-cam";
+  version = "1.4.6";
+  disabled = pythonOlder "3.6";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-sL4+UUfC60JWAgJPvXeVGUHAskuoceVYwYDrYlibUOE=";
+  };
+
+  postPatch = ''
+    substituteInPlace requirements.txt --replace "opencv-python" "opencv"
+  '';
+
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+    opencv4
+    pillow
+    scikitlearn
+    torchvision
+    ttach
+    tqdm
+  ];
+
+  # Let the user bring their own instance (as with torchmetrics)
+  buildInputs = [
+    torch
+  ];
+
+  doCheck = false;  # every nontrivial test tries to download a pretrained model
+
+  pythonImportsCheck = [
+    "pytorch_grad_cam"
+    "pytorch_grad_cam.metrics"
+    "pytorch_grad_cam.metrics.cam_mult_image"
+    "pytorch_grad_cam.metrics.road"
+    "pytorch_grad_cam.utils"
+    "pytorch_grad_cam.utils.image"
+    "pytorch_grad_cam.utils.model_targets"
+  ];
+
+  meta = with lib; {
+    description = "Advanced AI explainability for computer vision.";
+    homepage = "https://jacobgil.github.io/pytorch-gradcam-book";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 267ceb9b858..22f1620332f 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -4065,6 +4065,8 @@ self: super: with self; {
 
   gql = callPackage ../development/python-modules/gql { };
 
+  grad-cam = callPackage ../development/python-modules/grad-cam { };
+
   gradient = callPackage ../development/python-modules/gradient { };
 
   gradient-utils = callPackage ../development/python-modules/gradient-utils { };