182 lines
3.8 KiB
Nix
182 lines
3.8 KiB
Nix
|
{
|
||
|
stdenv,
|
||
|
lib,
|
||
|
buildPythonPackage,
|
||
|
fetchFromGitHub,
|
||
|
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,
|
||
|
pybind11,
|
||
|
}:
|
||
|
|
||
|
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 = "refs/tags/v${version}";
|
||
|
sha256 = "1w6cgvc8r2lwr72yxicls650jr46nriv1csivp2va9k1km8jx2sf";
|
||
|
};
|
||
|
|
||
|
postPatch = ''
|
||
|
# https://github.com/facebookresearch/detectron2/issues/5010
|
||
|
substituteInPlace detectron2/data/transforms/transform.py \
|
||
|
--replace "interp=Image.LINEAR" "interp=Image.BILINEAR"
|
||
|
'';
|
||
|
|
||
|
nativeBuildInputs = [
|
||
|
ninja
|
||
|
which
|
||
|
];
|
||
|
|
||
|
buildInputs = [ pybind11 ];
|
||
|
|
||
|
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
|
||
|
];
|
||
|
|
||
|
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"
|
||
|
# KeyError: 'precision'
|
||
|
"tests/data/test_coco_evaluation.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.hostPlatform.isLinux && stdenv.hostPlatform.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 ];
|
||
|
};
|
||
|
}
|