OpenAI GPT4 Lookup

Perform a lookup with GPT4 on objects in an ROI, or on a ROI in the frame.

Overview

The OpenAI GPT4 Lookup node is designed to perform lookups using the powerful GPT4 model on objects within a Region of Interest (ROI), or on a ROI within the frame. This functionality is useful for applications requiring advanced recognition and understanding of objects or areas within a video feed.

Inputs & Outputs

  • Inputs: 1, Media Format: Raw Video
  • Outputs: 1, Media Format: Raw Video
  • Output Metadata: nodes.node_id, recognized_objs, recognized_obj_ids, recognized_obj_count, recognized_obj_delta, value_changed_delta, unrecognized_obj_count, unrecognized_obj_delta

Properties

PropertyDescriptionTypeDefaultRequired
roi_labelsRegions of interest labelshiddenYes
roisRegions of interest. Type: polygon. Default: null. Conditional on roi_labels.polygonnullYes
processing_modeProcessing mode. Options: ROIs, at Interval (rois_interval), ROIs, upon Trigger (rois_trigger), Objects in an ROI (objects).enumrois_intervalYes
intervalLookup interval. Collect objects or ROIs for lookup at least this many seconds apart.float1No
batch_sizeNumber of images to process in each GPT request. Set to more than 1 to use prompts that reference multiple images.number1No
triggerQueue ROI for lookup when this condition evaluates to true. Conditional on processing_mode being rois_trigger.trigger-conditionnullNo
enable_prebufferIf true, samples ROI at interval to fill batch, and performs lookup when trigger is met. Else performs lookup when batch is full. Conditional on processing_mode being rois_trigger.boolfalseNo
objects_to_processObject types to process. ex. car,person,car.red. Conditional on processing_mode being objects.model-labelnullNo
min_obj_size_pixelsMin. width and height of an object. Conditional on processing_mode being objects.number64No
obj_lookup_size_change_thresholdObject size ratio change threshold. Slider min: 0.1, max: 2.0, step: 0.2. Conditional on processing_mode being objects.slider0.1No
max_lookups_per_objMax. attempts per object. Conditional on processing_mode being objects.number5No
openai_api_keyOpenAI API KeystringnullYes
promptGPT PrompttextnullYes
attributesIf provided, model will look for these attributes and add resulting values as object/ROI attributes. Leave empty to output results as text. If present, description is a special attribute which will be added to scene description for search and summarization. See examples below.jsonnullNo
detail_levelGPT Detail Level. Options: Low, High.enumlowNo
max_tokensMaximum number of tokens to return for each request.number500No
display_roiDisplay ROI on video?booltrueNo
display_objinfoDisplay results on video? Options: Disabled, Bottom left, Bottom right, Top left, Top right.enumbottom_leftNo
debugLog debugging information?boolfalseNo

Prompt Examples

Generate scene description.

Analyze the scene and provide a concise description of any unique, interesting, or noteworthy elements that would be suitable for a push notification alert. Focus on key details that capture the essence of what's happening or what's important in the image.

Attribute Examples

Providing explicit attributes lets the model return structured output that will be added as ROI or object attributes.

Each attribute is a key-value pair. Key is the attribute name, and value is the instruction for the model to extract the attribute.
The model will return the extracted attribute value as a string, which will be added as an attribute to the object/ROI.

Describe the image
{"description": "Describe the image briefly."}

Describe the image and add attributes for vehicle type and numbers
{"description": "Describe the image briefly. Return null if no vehicle is present.", "vehicle_type": "Comma separated list of vehicle types: car\|bus\|van", "vehicle_numbers": "Comma separated list of vehicle numbers"}

Metadata

Metadata PropertyDescription
nodes.[node_id].rois.[roi_id].label_changed_deltaIndicates if there has been a change in the label of the ROI.
nodes.[node_id].rois.[roi_id].label_availableIndicates if a label is available for the ROI.
nodes.[node_id].rois.[roi_id].labelLabel contents for the ROI. When attributes property is not specified, this contains results from the model. If attributes property is specified, this will contain results from a description attribute.
nodes.[node_id].rois.[roi_id].attributes.[attribute_name]Attribute values for the ROI, if attributes property is specified. Will exclude description attribute.
nodes.[node_id].recognized_obj_countThe count of recognized objects.
nodes.[node_id].recognized_obj_deltaThe change in the count of recognized objects.
nodes.[node_id].label_changed_obj_deltaThe change in the count of objects with changed labels.
nodes.[node_id].unrecognized_obj_countThe count of unrecognized objects.
nodes.[node_id].unrecognized_obj_deltaThe change in the count of unrecognized objects.

Example JSON

{
    "nodes": {
        "gpt1": {
            "type": "gpt",
            "rois": {
                "roi2": {
                    "label_changed_delta": true,
                    "label_available": true,
                    "label": {
                        "door_status": "unblocked"
                    }
                }
            },
            "recognized_obj_ids": ["2775161862"],
            "recognized_obj_count": 1,
            "recognized_obj_delta": 1,
            "label_changed_obj_delta": 1,
            "unrecognized_obj_count": 0,
            "unrecognized_obj_delta": 0,
            "objects_of_interest_keys": ["recognized_obj_ids"]
        }
    },
    "objects": [{
        "id": 2775161862,
        "source_node_id": null,
        "model_id": null,
        "label": "roi2",
        "class_id": 10600,
        "rect": {
            "left": 128,
            "top": 72,
            "width": 512,
            "height": 575
        },
        "probability": 1.0,
        "attributes": [{
            "label": "unblocked",
            "class_id": 10602,
            "probability": 1.0
        }, {
            "label": "lvm_results",
            "class_id": 10601,
            "probability": 1.0
        }, {
            "label": "lvm_roi",
            "class_id": 10600,
            "probability": 1.0
        }],
        "corr_id": "75f5141e-020a-4f27-af26-cf17b32c2544"
    }]
}