172 lines
3.4 KiB
Nix
172 lines
3.4 KiB
Nix
{ stdenv
|
|
, lib
|
|
, buildPythonPackage
|
|
, fetchFromGitHub
|
|
, pythonRelaxDepsHook
|
|
, ninja
|
|
, which
|
|
# build inputs
|
|
, pillow
|
|
, matplotlib
|
|
, pycocotools
|
|
, termcolor
|
|
, yacs
|
|
, tabulate
|
|
, cloudpickle
|
|
, tqdm
|
|
, tensorboard
|
|
, fvcore
|
|
, iopath
|
|
, omegaconf
|
|
, hydra-core
|
|
, packaging
|
|
, torch
|
|
, pydot
|
|
, black
|
|
# optional dependencies
|
|
, fairscale
|
|
, timm
|
|
, scipy
|
|
, shapely
|
|
, pygments
|
|
, psutil
|
|
# check inputs
|
|
, pytestCheckHook
|
|
, torchvision
|
|
, av
|
|
, opencv4
|
|
, pytest-mock
|
|
}:
|
|
|
|
let
|
|
pname = "detectron2";
|
|
version = "0.6";
|
|
optional-dependencies = {
|
|
all = [
|
|
fairscale
|
|
timm
|
|
scipy
|
|
shapely
|
|
pygments
|
|
psutil
|
|
];
|
|
};
|
|
in
|
|
buildPythonPackage {
|
|
inherit pname version;
|
|
format = "setuptools";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "facebookresearch";
|
|
repo = "detectron2";
|
|
rev = "v${version}";
|
|
sha256 = "1w6cgvc8r2lwr72yxicls650jr46nriv1csivp2va9k1km8jx2sf";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
pythonRelaxDepsHook
|
|
ninja
|
|
which
|
|
];
|
|
|
|
pythonRelaxDeps = [
|
|
"black"
|
|
];
|
|
|
|
propagatedBuildInputs = [
|
|
pillow
|
|
matplotlib
|
|
pycocotools
|
|
termcolor
|
|
yacs
|
|
tabulate
|
|
cloudpickle
|
|
tqdm
|
|
tensorboard
|
|
fvcore
|
|
iopath
|
|
omegaconf
|
|
hydra-core
|
|
packaging
|
|
black
|
|
torch # not explicitly declared in setup.py because they expect you to install it yourself
|
|
pydot # no idea why this is not in their setup.py
|
|
];
|
|
|
|
passthru.optional-dependencies = optional-dependencies;
|
|
|
|
nativeCheckInputs = [
|
|
av
|
|
opencv4
|
|
pytest-mock
|
|
pytestCheckHook
|
|
torchvision
|
|
];
|
|
|
|
preCheck = ''
|
|
# prevent import errors for C extension modules
|
|
rm -r detectron2
|
|
'';
|
|
|
|
pytestFlagsArray = [
|
|
# prevent include $sourceRoot/projects/*/tests
|
|
"tests"
|
|
];
|
|
|
|
disabledTestPaths = [
|
|
# try import caffe2
|
|
"tests/test_export_torchscript.py"
|
|
"tests/test_model_analysis.py"
|
|
"tests/modeling/test_backbone.py"
|
|
"tests/modeling/test_roi_heads.py"
|
|
"tests/modeling/test_rpn.py"
|
|
"tests/structures/test_instances.py"
|
|
# hangs for some reason
|
|
"tests/modeling/test_model_e2e.py"
|
|
];
|
|
|
|
disabledTests = [
|
|
# fails for some reason
|
|
"test_checkpoint_resume"
|
|
"test_map_style"
|
|
# requires shapely
|
|
"test_resize_and_crop"
|
|
# require caffe2
|
|
"test_predict_boxes_tracing"
|
|
"test_predict_probs_tracing"
|
|
"testMaskRCNN"
|
|
"testRetinaNet"
|
|
# require coco dataset
|
|
"test_default_trainer"
|
|
"test_unknown_category"
|
|
"test_build_dataloader_train"
|
|
"test_build_iterable_dataloader_train"
|
|
# require network access
|
|
"test_opencv_exif_orientation"
|
|
"test_read_exif_orientation"
|
|
# use deprecated api, numpy.bool
|
|
"test_BWmode_nomask"
|
|
"test_draw_binary_mask"
|
|
"test_draw_empty_mask_predictions"
|
|
"test_draw_instance_predictions"
|
|
"test_draw_no_metadata"
|
|
"test_overlay_instances"
|
|
"test_overlay_instances_no_boxes"
|
|
"test_get_bounding_box"
|
|
] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
|
|
"test_build_batch_dataloader_inference"
|
|
"test_build_dataloader_inference"
|
|
"test_build_iterable_dataloader_inference"
|
|
"test_to_iterable"
|
|
];
|
|
|
|
pythonImportsCheck = [ "detectron2" ];
|
|
|
|
meta = with lib; {
|
|
description = "Facebooks's next-generation platform for object detection, segmentation and other visual recognition tasks";
|
|
homepage = "https://github.com/facebookresearch/detectron2";
|
|
license = licenses.asl20;
|
|
maintainers = with maintainers; [ happysalada ];
|
|
};
|
|
}
|