Object detection
An object-detection pipeline returns a bounding_box result per detection on each InferenceResult. See SimplifiedPipeline for the shared setup and Drawing results to draw the detections.
- 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.bounding_box:
bb = r.bounding_box
print(f"{bb.class_label.name}: {bb.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.BoundingBox is BoundingBox box)
{
Console.WriteLine(
$"{box.ClassLabel.Name}: {box.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->bounding_box != NULL) {
printf("%s: %f\n", r->bounding_box->class_label.name, r->bounding_box->confidence);
}
}
}
denkflow_inference_results_free(&results);
denkflow_simplified_pipeline_free(&simplified);
denkflow_free_object((void**)&license);