diff --git a/model_server/base/pipelines/roiset_obmap.py b/model_server/base/pipelines/roiset_obmap.py
index 2b533f44be3c16104e23e6fa3c0658fae01426ec..24f88601afeb3a9a969452a402da762870f7db1d 100644
--- a/model_server/base/pipelines/roiset_obmap.py
+++ b/model_server/base/pipelines/roiset_obmap.py
@@ -118,7 +118,6 @@ def roiset_object_map_pipeline(
         **k['segmentation'],
     ).last
 
-    # d['mask'] = models['pixel_classifier_segmentation_model'].label_pixel_class(d.last)
     d['labeled'] = get_label_ids(d.last)
     rois = RoiSet.from_object_ids(d['input'], d['labeled'], RoiSetMetaParams(**k['roi_params']))
 
@@ -132,5 +131,6 @@ def roiset_object_map_pipeline(
             obmod,
         )
         d[obmod_name] = rois.get_object_class_map(obmod_name)
-
+    else:
+        d['objects_unclassified'] = d.last.apply(lambda x: ((x > 0) * 1).astype('uint16'))
     return d, rois
diff --git a/model_server/extensions/ilastik/pipelines/px_then_ob.py b/model_server/extensions/ilastik/pipelines/px_then_ob.py
index 2c314f8d6e177fd6797852ca49018b9afbd612bb..1aa64615479cad29f01b7d7e416d1fec2f3c9568 100644
--- a/model_server/extensions/ilastik/pipelines/px_then_ob.py
+++ b/model_server/extensions/ilastik/pipelines/px_then_ob.py
@@ -3,12 +3,11 @@ from typing import Dict
 from fastapi import APIRouter, HTTPException
 from pydantic import Field
 
-from model_server.base.accessors import GenericImageDataAccessor
-from model_server.base.models import Model
-from model_server.base.pipelines.shared import call_pipeline
-from base.pipelines.shared import PipelineTrace, PipelineParams, PipelineRecord
+from ....base.accessors import GenericImageDataAccessor
+from ....base.models import Model
+from ....base.pipelines.shared import call_pipeline, PipelineTrace, PipelineParams, PipelineRecord
 
-from model_server.extensions.ilastik.models import IlastikPixelClassifierModel, IlastikObjectClassifierFromPixelPredictionsModel
+from ..models import IlastikPixelClassifierModel, IlastikObjectClassifierFromPixelPredictionsModel
 
 router = APIRouter(
     prefix='/pipelines',
diff --git a/tests/test_ilastik/test_roiset_workflow.py b/tests/test_ilastik/test_roiset_workflow.py
index 31b0c0d6e4a3b590c23f629120c0b981020e478b..dc76ffcedeb1420245d555fd7f62079e0c9b39f5 100644
--- a/tests/test_ilastik/test_roiset_workflow.py
+++ b/tests/test_ilastik/test_roiset_workflow.py
@@ -9,7 +9,7 @@ from tests.base.test_model import DummyInstanceSegmentationModel
 
 import model_server.conf.testing as conf
 from model_server.base.pipelines.roiset_obmap import RoiSetObjectMapParams, roiset_object_map_pipeline
-from model_server.extensions.ilastik.models import IlastikPixelClassifierModel, IlastikPixelClassifierParams
+import model_server.extensions.ilastik.models as ilm
 
 data = conf.meta['image_files']
 output_path = conf.meta['output_path']
@@ -23,9 +23,9 @@ class BaseTestRoiSetMonoProducts(object):
     def fpi(self):
         return data['multichannel_zstack_raw']['path'].__str__()
 
-    @property
-    def fppx(self):
-        return classifiers['px']['path'].__str__()
+    # @property
+    # def fppx(self):
+    #     return classifiers['px']['path'].__str__()
 
     @property
     def stack(self):
@@ -70,21 +70,27 @@ class BaseTestRoiSetMonoProducts(object):
             'expand_box_by': [128, 2]
         }
 
-    def _get_models(self):
+    def _get_models(self): # tests can either use model objects directly, or load in API via project file string
+        fp_px = classifiers['px']['path'].__str__()
+        fp_ob = classifiers['seg_to_obj']['path'].__str__()
         return {
             'pixel_classifier_segmentation': {
                 'name': 'ilastik_px_mod',
-                'project_file': self.fppx,
-                'model': IlastikPixelClassifierModel(
-                    IlastikPixelClassifierParams(
-                        project_file=self.fppx
+                'project_file': fp_px,
+                'model': ilm.IlastikPixelClassifierModel(
+                    ilm.IlastikPixelClassifierParams(
+                        project_file=fp_px,
                     )
                 )
             },
             'object_classifier': {
-                'name': 'dummy_ob_mod',
-                'project_file': classifiers['seg_to_obj']['path'].__str__(),
-                'model': DummyInstanceSegmentationModel()
+                'name': 'ilastik_ob_mod',
+                'project_file': fp_ob,
+                'model': ilm.IlastikObjectClassifierFromSegmentationModel(
+                    ilm.IlastikParams(
+                        project_file=fp_ob
+                    )
+                )
             },
         }
 
@@ -189,7 +195,7 @@ class TestRoiSetWorkflowOverApi(conf.TestServerBaseClass, BaseTestRoiSetMonoProd
                 'accessor_id': self.test_load_input_accessor(),
                 'pixel_classifier_segmentation_model_id': self.test_load_pixel_classifier(),
                 'object_classifier_model_id': ob_classifer_id,
-                'segmentation_channel': 0,
+                'segmentation': {'channel': 0},
                 'patches_channel': 1,
                 'roi_params': self._get_roi_params(),
                 'export_params': self._get_export_params(),
@@ -205,11 +211,11 @@ class TestRoiSetWorkflowOverApi(conf.TestServerBaseClass, BaseTestRoiSetMonoProd
 
     def test_workflow_with_object_classifier(self):
         acc = self._object_map_workflow(self.test_load_object_classifier())
-        self.assertTrue(np.all(acc._unique()[0] == [0, 1]))
+        self.assertTrue(np.all(acc._unique()[0] == [0, 1, 2]))
 
     def test_workflow_without_object_classifier(self):
         acc = self._object_map_workflow(None)
-        self.assertTrue(np.all(acc._unique()[0] == [0, 255]))
+        self.assertTrue(np.all(acc._unique()[0] == [0, 1]))
 
     # TODO: test boundary pipeline in separate module
     # def test_object_map_workflow_boundary_channel(self):