Segmentation
A segmentation pipeline returns a segmentation result per detected region on each InferenceResult. Each carries class metadata, confidence, a bounding rectangle, and contour data. In C#, these are exposed as ClassLabel, Confidence, BoundingRect, and SubContours on SegmentationResult. See SimplifiedPipeline for the shared setup.
- Python
- C#
- C / C++
import denkflow
pipeline = denkflow.Pipeline.from_denkflow("path/to/model.denkflow", pat="YOUR-PAT")
simplified = denkflow.SimplifiedPipeline(pipeline)
results = simplified.run("path/to/image.jpg", confidence_threshold=0.5)
for image_result in results:
for r in image_result.results:
if r.segmentation:
seg = r.segmentation
print(f"{seg.class_label.name}: {seg.confidence:.2f}")
using DenkFlow;
using var license = HubLicenseSource.FromPat("YOUR-PAT");
using var pipeline = Pipeline.FromDenkflow("path/to/model.denkflow", license);
using var simplified = new SimplifiedPipeline(pipeline);
using ImageInferenceResults results =
simplified.Run("path/to/image.jpg", confidenceThreshold: 0.5f);
foreach (ImageInferenceResult imageResult in results)
{
foreach (InferenceResult result in imageResult.Results)
{
if (result.Segmentation is SegmentationResult segmentation)
{
Console.WriteLine(
$"{segmentation.ClassLabel.Name}: {segmentation.Confidence:F2}");
}
}
}
DenkflowPipeline* pipeline = NULL;
DenkflowSimplifiedPipeline* simplified = NULL;
DenkflowImageInferenceResults* results = NULL;
DenkflowHubLicenseSource* license = NULL;
handle_error(denkflow_hub_license_source_from_pat(&license, "YOUR-PAT", NULL, NULL),
"denkflow_hub_license_source_from_pat");
handle_error(denkflow_pipeline_from_denkflow(&pipeline, "path/to/model.denkflow", (void*)license),
"denkflow_pipeline_from_denkflow");
handle_error(denkflow_simplified_pipeline_new(&simplified, &pipeline),
"denkflow_simplified_pipeline_new");
handle_error(denkflow_simplified_pipeline_run_from_file(&results, simplified, "path/to/image.jpg", 0.5f),
"denkflow_simplified_pipeline_run_from_file");
for (size_t b = 0; b < results->image_results_length; ++b) {
DenkflowImageInferenceResult* image_result = &results->image_results[b];
for (size_t i = 0; i < image_result->results_length; ++i) {
DenkflowInferenceResult* r = &image_result->results[i];
if (r->segmentation != NULL) {
printf("%s: %f\n", r->segmentation->class_label.name, r->segmentation->confidence);
}
}
}
denkflow_inference_results_free(&results);
denkflow_simplified_pipeline_free(&simplified);
denkflow_free_object((void**)&license);