@@ -40,20 +40,41 @@ void init_instance_segmentation(nb::module_& m) {
4040 [](MaskRCNNModel& self, const nb::ndarray<>& input) {
4141 return self.infer (pyutils::wrap_np_mat (input));
4242 })
43- .def (" infer_batch" , [](MaskRCNNModel& self, const std::vector<nb::ndarray<>> inputs) {
44- std::vector<ImageInputData> input_mats;
45- input_mats.reserve (inputs.size ());
46-
47- for (const auto & input : inputs) {
48- input_mats.push_back (pyutils::wrap_np_mat (input));
49- }
50-
51- return self.inferBatch (input_mats);
52- })
53- .def (" postprocess" , [](MaskRCNNModel& self, InferenceResult& infResult) {
54- return self.postprocess (infResult);
55- })
43+ .def (" infer_batch" ,
44+ [](MaskRCNNModel& self, const std::vector<nb::ndarray<>> inputs) {
45+ std::vector<ImageInputData> input_mats;
46+ input_mats.reserve (inputs.size ());
47+
48+ for (const auto & input : inputs) {
49+ input_mats.push_back (pyutils::wrap_np_mat (input));
50+ }
51+
52+ return self.inferBatch (input_mats);
53+ })
54+ .def (" postprocess" ,
55+ [](MaskRCNNModel& self, InferenceResult& infResult) {
56+ return self.postprocess (infResult);
57+ })
5658 .def_prop_ro_static (" __model__" , [](nb::object) {
5759 return MaskRCNNModel::ModelType;
5860 });
61+
62+
63+ nb::class_<InstanceSegmentationResult, ResultBase>(m, " InstanceSegmentationResult" )
64+ .def (nb::init<int64_t , std::shared_ptr<MetaData>>(),
65+ nb::arg (" frameId" ) = -1 ,
66+ nb::arg (" metaData" ) = nullptr )
67+ .def_ro (" segmentedObjects" , &InstanceSegmentationResult::segmentedObjects)
68+ .def_prop_ro (
69+ " feature_vector" ,
70+ [](InstanceSegmentationResult& r) {
71+ if (!r.feature_vector ) {
72+ return nb::ndarray<float , nb::numpy, nb::c_contig>();
73+ }
74+
75+ return nb::ndarray<float , nb::numpy, nb::c_contig>(r.feature_vector .data (),
76+ r.feature_vector .get_shape ().size (),
77+ r.feature_vector .get_shape ().data ());
78+ },
79+ nb::rv_policy::reference_internal);
5980}
0 commit comments