Come funziona il modello

I dati “raw”

I dati sono situati in una cartella. Ad ogni ambiente corrispondono una serie di immagini che ne catturano diverse porzioni.

Qui sotto l’esempio dell’ambiente 3486

Per ogni sono catturate multiple immagini da diverse posizioni:

Per ognuna delle posizioni vengono catturate una serie di immagini da diversi angoli:

Due degli angoli catturati con la telecamera in “posizione 0”.

Ognuno di questi ambienti contiene un file json che contiene informazioni riguardanti l’ambiente e, in particolare le informazioni riguardanti gli oggetti presenti nell’ambiente e i loro relativi bounding box per ogni immagine.

Gli oggetti possono essere contenuti nel campo “objects” o essere dei “figli” di un “Object” e quindi essere situati nel campo “children”.

              "image": "images/LivingRoom/bounding_box/position_2/3486_LivingRoom_bounding_box_pos_2_180.jpg",
              "resolution": {
                "width": 600,
                "height": 600,
                "origin": "upper left"
              },
              "bounding_box": {
                "x1": 0,
                "y1": 293,
                "x2": 78,
                "y2": 333
              }
            }
          ]
        },

Qui c’è un esempio delle coordinate di un bounding box specificato nel file json

Otput.csv

Adesso è il momento di estrarre il file “output.csv” Questo file contiene una entry per ogni oggetto che compare in ogni immagine. Questo significa che contiene le informazioni di ogni oggetto che compare in ogni immagine. Se un oggetto compare in più di un immagine, ad esempio in tre immagini, comparirà tre volte in questo file (ogni volta con un bounding box diverso, e riferito ad un’altra immagine).

Qui c’è un esempio delle prime righe del file “output.csv”. Per ogni entry c’è:

  1. L’ambiente in cui compare l’entità
  2. il tipo di entità che compare nell’ambiente
  3. le lexical references di quell’entità
  4. il path (relativo) all’immagine che contiene quell’oggetto (una con bounding box disegnato e una senza)
  5. Il bounding box dell’entità sull’immagine

Questo file viene estratto usando lo script “output_data_generator.py”

Output_data_generator.py

Questo script prende in input il file “output.csv” ed itera su ogni file json all’interno della cartella che contiene i dati. Per ogni cartella ambiente prende il file json corrispondente ed estrae:

  1. gli objects
  2. i children di ogni objects
import os
import json
import pandas as pd
import re
 
# Function to calculate normalized bounding box coordinates based on image resolution
def calculate_normalized_bbox(resolution, bbox):
    width, height = resolution['width'], resolution['height']
    x1 = bbox['x1'] / width
    y1 = bbox['y1'] / height
    x2 = bbox['x2'] / width
    y2 = bbox['y2'] / height
    return x1, y1, x2, y2
 
# Function to split camel case or compound words into separate words
def split_entity_type(entity_type):
    return ' '.join(filter(None, re.split(r'([A-Z][a-z]+)', entity_type)))
 
# Function to process a JSON file and extract relevant information
def process_json_file(directory, file, root_directory):
    with open(os.path.join(directory, file)) as f:
        data = json.load(f)
    
    objects = data.get("objects", [])
    environment = directory.split("/")[-1]
    
    rows = []
    for obj in objects:
        entity_type = obj.get("assetType", "")
        lexical_references = obj.get("lexical_reference", [])
        
        for image_info in obj.get("images", []):
            bounding_box_path = image_info.get("image", "")
            resolution = image_info.get("resolution", {})
            bounding_box = image_info.get("bounding_box", {})
            
            x1, y1, x2, y2 = calculate_normalized_bbox(resolution, bounding_box)
            
            # Modify bounding box image path
            bounding_box_dir, image_name = os.path.split(bounding_box_path)
            relative_image_path_bbox = os.path.relpath(os.path.join(directory, bounding_box_path), root_directory)
            
            # Get normal image path by replacing "bounding_box" with "normal" in the directory
            normal_dir = bounding_box_dir.replace("bounding_box", "normal")
            relative_image_path_normal = os.path.join(
                os.path.relpath(directory, root_directory),
                normal_dir,
                image_name.replace("bounding_box_", "")
            )
            
            rows.append({
                "environment": environment,
                "entity_type": split_entity_type(entity_type),
                "lexical_references": lexical_references,
                "image_bbox": relative_image_path_bbox,
                "image_normal": relative_image_path_normal,
                "bounding_box": (x1, y1, x2, y2)
            })
            
        # Process information from the "children" field
        children = obj.get("children", [])
        for child in children:
            child_entity_type = child.get("assetType", "")
            child_lexical_references = child.get("lexical_reference", [])
            
            for image_info in child.get("images", []):
                bounding_box_path = image_info.get("image", "")
                resolution = image_info.get("resolution", {})
                bounding_box = image_info.get("bounding_box", {})
                
                x1, y1, x2, y2 = calculate_normalized_bbox(resolution, bounding_box)
                
                # Modify bounding box image path
                bounding_box_dir, image_name = os.path.split(bounding_box_path)
                relative_image_path_bbox = os.path.relpath(os.path.join(directory, bounding_box_path), root_directory)
                
                # Get normal image path by replacing "bounding_box" with "normal" in the directory
                normal_dir = bounding_box_dir.replace("bounding_box", "normal")
                relative_image_path_normal = os.path.join(
                    os.path.relpath(directory, root_directory),
                    normal_dir,
                    image_name.replace("bounding_box_", "")
                )
                
                rows.append({
                    "environment": environment,
                    "entity_type": split_entity_type(child_entity_type),
                    "lexical_references": child_lexical_references,
                    "image_bbox": relative_image_path_bbox,
                    "image_normal": relative_image_path_normal,
                    "bounding_box": (x1, y1, x2, y2)
                })
 
    return rows
 
# Main function to process all JSON files in the specified directories recursively
def process_directories_recursively(root_directory):
    data_rows = []
 
    for root, dirs, files in os.walk(root_directory):
        json_files = [f for f in files if f.endswith(".json")]
 
        for json_file in json_files:
            data_rows.extend(process_json_file(root, json_file, root_directory))
 
    return data_rows
 
# Define the root directory
root_directory = "../huric/en"
 
# Process directories recursively and create DataFrame
data = process_directories_recursively(root_directory)
df = pd.DataFrame(data)
 
# Export DataFrame to CSV
csv_filename = "output_data.csv"
df.to_csv(csv_filename, index=False)
 
print(f"DataFrame exported to {csv_filename}")
 
 

Questo porta ad un file esageratamente numeroso per lo scopo di questo progetto

Shuffling e selection

Per questo motivo è opportuno rimpicciolire il file rendendolo maneggiabile: utilizziamo uno script che prima esegue lo shuffle delle righe del file, e poi taglia il file alle prime 10k righe.

import pandas as pd
 
# Read the CSV file into a DataFrame
df = pd.read_csv("output_data.csv")
 
# Shuffle the DataFrame
df_shuffled = df.sample(frac=1, random_state=42)
 
# Select the first 10000 rows
df_selected = df_shuffled.head(10000)
 
# Save the selected DataFrame to a new CSV file
selected_csv_filename = "shuffled_output_data.csv"
df_selected.to_csv(selected_csv_filename, index=False)
 
print(f"Selected DataFrame exported to {selected_csv_filename}")
 
 

Quindi adesso il file è di questo tipo:

Evaluation

Il file “shuffled_output_data.csv” è il file necessario alla fase di evaluation. La fase di evaluation prende come input questo file, verrà iterativamente utilizzato il modello di linguaggio Kosmos2, dato il nome di un’entità e l’immagine in cui essa appare, per individuare il bounding box dell’immagine.

L’output di questa fase è un file chiamato “zero_shot.csv”. È un file che contiene tante entry quante il file originale. Le informazioni riportate sono le stesse del primo file, ma con l’aggiunta del bounding box generato da kosmos, e l’overlapping index, che indica l’indice di sovrapposizione tra il bounding box “target” (quello estratto dal file json) e quello generato da kosmos. Viene valutato che c’è un match tra i due bounding box se l’overlapping index è maggiore di 0.5 (se c’è almeno il 50% di sovrapposizione).

Qui è riportato il codice di come ho calcolato l’overlapping index:

 
def overlap_area(box1, box2):
    """
    Calculate the overlapping area between two bounding boxes.
    The input boxes should be in the format (xmin, ymin, xmax, ymax).
    """
    x_min = max(box1[0], box2[0])
    y_min = max(box1[1], box2[1])
    x_max = min(box1[2], box2[2])
    y_max = min(box1[3], box2[3])
 
    width = max(0, x_max - x_min)
    height = max(0, y_max - y_min)
 
    return width * height
 
def overlapping_index(box1, box2):
    """
    Calculate the overlapping index (IoU) between two bounding boxes.
    The input boxes should be in the format (xmin, ymin, xmax, ymax).
    """
    area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])
    area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])
 
    overlap = overlap_area(box1, box2)
    union = area1 + area2 - overlap
 
    return overlap / union if union > 0 else 0
 

Come funziona l’algoritmo

L’algoritmo per l’evaluation funziona, a grandi linee come segue:

Viene caricato “output.csv come dataframe”:

df = pd.read_csv(eval_csv_path)

Per ogni row del file viene chiamata la funzione “evaluate_instance()”

for index, row in df.iterrows():
	result_row = eval_instance(row)

Questa funzione prende in input una riga del file “output.csv”, o meglio i dati contenuti in una riga di output.csv e restituisce:

  1. il bounding box trovato da kosmos
  2. l’overlapping index
  3. se c’è stato o meno un match tra i due bounding box Questo risultato viene inserito in un dataframe (che poi verrà esportato e sarà il file zero_shot.csv)
df.loc[index, ["kosmos_bounding_box", "overlap_index", "Match"]] = result_row.values()

Eval instance

La funzione eval instance è il cuore di questo algoritmo. Il funzionamento è il seguente:

Prende immagine e bounding box dell’entità che sta esaminando:

    # Extract information from the DataFrame row
    image_path = df_row["image_normal"]
    labeled_box_str = df_row["bounding_box"]
 

Genera il prompt, che insieme all’immagine verrà dato a kosmos2 per generare il bounding box:

    # Generate prompt using the "entity type" entry of the DataFrame
    entity_type = df_row["entity_type"]
    prompts = generate_prompt(entity_type)
 

La funzione “generate_prompt()” prende in input il nome dell’entità e genera un prompt adeguato che permette a kosmos di capire che deve generare il bounding box di quell’entità.

Ad esempio, per l’entità di nome: “Sofa” Il prompt verrà generato così:

prompt = f"<grounding><phrase>{entity_type}</phrase>"

E quindi sarà :

<grounding><phrase>Sofa</phrase>

Questo prompt molto semplice istruisce kosmos a generare il “grounding di una frase che inizia con il sostantivo “sofa”.

Questo non garantisce che il modello kosmos generi ESCLUSIVAMENTE il bounding box dell’entità sofa: infatti raramente è così. Genralmente kosmos genererà tre o quattro entità che si trovano nell’immagine insieme al Sofa.

Ad esempio, è vero che ha generato il bounding box di “Sofa”

ma allo stesso tempo ha generato il bounding box di altre entità come:

A questo punto l’algoritmo itera su queste entità e verifica che ci sia un match con l’entità che ci interessa

L’ouput finale di questo processo è un file come quello riportato qui:

Qui sotto la funzione “eval _instance”

def eval_instance(df_row, debug=False):
    # Extract information from the DataFrame row
    image_path = df_row["image_normal"]
    labeled_box_str = df_row["bounding_box"]
 
    # Convert bounding box values from string to float
    labeled_box = tuple(map(float, re.findall(r'\d+\.\d+', labeled_box_str)))
 
    # Generate prompt using the "entity type" entry of the DataFrame
    entity_type = df_row["entity_type"]
    prompts = generate_prompt(entity_type)
 
    # Process image with Kosmos and get entities
    kosmos_entities = process_image_with_kosmos(prompts[0], image_path)
    if debug:
        print(kosmos_entities)
 
    # Initialize result_row with default values
    result_row = {
        "kosmos_bounding_box": np.NaN,
        "overlap_index": 0.0,
        "Match": False
    }
 
    # Compare entities and calculate overlapping index
    if kosmos_entities is None:
        return result_row
    for kosmos_entity in kosmos_entities:
        _, _, kosmos_boxes = kosmos_entity
        for kosmos_box in kosmos_boxes:
            # Convert Kosmos bounding box values from string to float
            #kosmos_box = tuple(map(float, re.findall(r'\d+\.\d+', kosmos_box_str)))
            overlap_index = overlapping_index(labeled_box, kosmos_box)
            result_row["kosmos_bounding_box"] = kosmos_box  # Convert bounding box back to string?
            result_row["overlap_index"] = overlap_index
            result_row["Match"] = overlap_index > 0.5
            if result_row["Match"]:
                print(f"Entity matched with an overlapping index of: {overlap_index}")
                return result_row
 
    return result_row
 

Esame dei risultati dell’evaluation

Questo computando alcune statistiche sull’operazione di evaluation fatta, questi sono i risultati:

entity_typeNumber of OccurrencesPercentage of MatchesAverage Overlapping IndexStd Average Overlapping IndexAverage Overlapping Index (Matched)Std Average Overlapping Index (Matched)Average Overlapping Index (Unmatched)Std Average Overlapping Index (Unmatched)Avg BBox Dimensions (Correct)Std Avg BBox Dimensions (Correct)Avg BBox Dimensions (Incorrect)Std Avg BBox Dimensions (Incorrect)Average BBox Dimensions (All)Std Average BBox Dimensions (All)
Total501451.97450.42470.39870.79780.10960.02090.06510.09230.10610.01810.03530.05670.0885
Painting92442.09960.33620.39620.79270.10830.00430.02450.08410.11050.01320.03300.04310.0836
Sofa69373.59310.62560.37370.84510.07640.01370.05630.11470.10890.02490.02920.09100.1025
Chair62220.57880.17630.29150.72040.12780.03530.07770.04330.04220.01040.01340.01720.0261
Dining Table58866.83670.53390.37060.78350.11480.03090.09110.08610.09110.01420.01950.06220.0826
Arm Chair42049.04760.41360.39890.80920.10060.03290.07960.07890.07220.02340.03540.05060.0630
TV Stand40240.04980.32240.37920.77100.12600.02270.06730.09370.07950.03080.04410.05600.0681
Floor Lamp30063.33330.50320.37330.77390.12060.03560.09310.12570.16240.03560.07540.09270.1437
Television14875.00000.59760.35370.79520.09740.00470.01340.11730.15290.02710.07590.09470.1430
House Plant14468.75000.52630.36350.76080.12000.01030.03590.05890.05370.00470.00370.04190.0512
Side Table11045.45450.36230.39460.78310.10800.01170.05370.05300.04000.02030.03450.03520.0404
Cart10371.84470.57790.36980.80150.10510.00750.01790.07500.05660.02800.04310.06180.0571
Shelving Unit10254.90200.48110.42700.86070.07410.01890.06930.18170.18170.02320.04410.11020.1585
Box10232.35290.23980.34580.73190.08890.00440.01430.03000.02020.00640.00930.01400.0176
Dresser9664.58330.55710.40560.84990.08740.02310.06890.12810.09560.02450.03730.09140.0940
Garbage Can8166.66670.51850.36800.76860.10320.01850.07340.03860.02930.00550.00870.02760.0290
Dog Bed6947.82610.38800.40290.80040.08580.00990.03590.04310.04050.01150.01600.02660.0340
Desk4564.44440.55760.40100.84710.07870.03290.06620.12340.08730.04480.05540.09540.0857
Coffee Table1741.17650.31850.40320.77350.15160.00000.00000.09060.07120.01050.01450.04350.0606
Room Decor128.33330.11090.24020.8512-0.04350.06050.1330-0.05150.05150.05830.0545
Safe1172.72730.59010.38290.81010.08180.00350.00610.04590.02780.00770.00840.03550.0295
Boots1040.00000.32990.40160.79360.03990.02070.05070.02960.00800.00240.00230.01330.0149
Stool966.66670.49870.38450.74810.11280.00000.00000.02910.03530.00780.00340.02200.0300
Ottoman633.33330.28420.43210.84200.00380.00530.01060.08000.01910.00620.00470.03080.0392

Per un dettaglio su come sono state calcolate queste statistiche si rimanda a questo documento: Calcolo statistiche per valutazione

I risultati sono di un’accuracy totale del 52%. Da notare alcuni fatti interessanti:

  1. L’overlapping index è notevolmente maggiore del 50% per le entità per cui è stato fatto un match corretto
  2. L’overlapping index è notevolmente basso per le entità giudicate non correttamente

Inoltre se la cava notevolmente meglio su bounding box molto grandi (ergo quando l’oggetto è ben visibile) mentre non è molto performante su bounding box di piccole dimensioni.

Inoltre performa significativamente male sull’entità “Room Decor”, probabilmente dovuto alla generalità del termine:

Room Decor128.3333

Alcuni esempi di valutazione di kosmos

Ho inoltre sviluppato un piccolo programma python che utilizza la libreria Computer Vision di python per esaminare le istanze in cui Kosmos ha sbagliato, disegnando il bounding box target e quello invece riportato da kosmos. Di seguito alcuni esempi interessanti di errori:

Un fatto che emergeva già dalla valutazione numerica era la difficoltà del modello di individuare le sedie:

Come si può vedere, vengono spesse confuse Probabilmente complice il fatto che le sedie sono spesso in secondo piano, oppure si trovano dietro ai tavoli o ad altri oggetti. Sono anche mediamente più piccole di altri oggetti.

Bounding box piccoli

Per come è satato addestrato kosmos, tende a dare un bounding box “no matter what”. Questo, accoppiato con la scarsa capacità di individuare oggetti piccoli, evidenzia un netto limite, e spesso specialmente per oggetti piccoli, il bounding box è totalmente sbagliato e spesso associato al pavimento o al muro.

Oggetti parzialmente nell’immagine

Un chiaro limite del dataset però questa volta, per via della sua natura generativa a partire da diversi orientamenti e posizioni, è quello di avere molti oggetti parzialmente nell’immagine o orientati in modo tale da renderli difficile da riconoscere. È spesso il caso dei dipinti:

Che sono spesso classificati male. Ma è anche il caso di altri oggetti:

Questo può sicuramente essere visto come un limite del dataset, ma chiaramente evidenzia l’incapacità di kosmos nell’inferire l’entità da una vista parziale dell’oggetto.

<grounding><phrase>find the Cell on the Table</phrase>

Evaluation su nuovo dataset

A differenza dell’ evaluation sul dataset precedente, in questo dataset sono stati considerati anche gli oggetti di dimensione minore: i children. Questi oggetti sono normalmente trovati sopra ad altri, sono di dimensione minore rispetto all’oggetto “parent”, e dunque risultano più difficili da individuare e categorizzare. I risultati infatti sono nettamente inferiori a quelli ottenuti precedentemente

file: “zero_shot_pulito_final_statistics_dash.csv”

entity_typeNumber of OccurrencesPercentage of MatchesAverage Overlapping IndexStd Average Overlapping IndexAverage Overlapping Index (Matched)Std Average Overlapping Index (Matched)Average Overlapping Index (Unmatched)Std Average Overlapping Index (Unmatched)Avg BBox Dimensions (Correct)Std Avg BBox Dimensions (Correct)Avg BBox Dimensions (Incorrect)Std Avg BBox Dimensions (Incorrect)Average BBox Dimensions (All)Std Average BBox Dimensions (All)
Total1000023.05000.18420.32640.76800.11760.00940.04070.07480.10700.00620.02540.02200.0630
Painting78139.94880.31510.38830.78390.10290.00320.01360.06510.08680.01230.02190.03340.0630
Cell Phone6061.65020.01310.07830.60400.10210.00310.01070.00410.00200.00090.00390.00090.0039
Remote Control5060.59290.00710.05040.61620.04570.00340.01790.00690.00520.00080.00180.00080.0019
Book4668.79830.06690.19590.68320.11430.00750.02380.01600.01180.00180.00640.00300.0081
Chair43332.33260.25680.34120.73290.11370.02940.07400.04300.03640.01310.01830.02280.0292
Pen3720.00000.00120.0062--0.00120.0062--0.00030.00100.00030.0010
Dining Table32763.91440.50600.36980.77140.11570.03600.09240.08870.08960.01720.02340.06290.0806
Key Chain2190.00000.00500.0359--0.00500.0359--0.00130.01120.00130.0112
Box21812.38530.09890.23940.71900.10850.01130.03840.02910.04860.00490.00800.00790.0201
Counter Top21841.28440.34490.39610.80450.12000.02170.05500.17580.15080.06390.09550.11010.1331
Bowl2036.40390.04960.16320.65820.08300.00790.02840.00980.00590.00180.00420.00230.0048
House Plant19546.66670.35370.36030.72040.12180.03280.09380.03170.03230.00400.00420.01690.0261
Television18766.84490.51920.37050.77010.11290.01350.06140.07830.09420.01630.03310.05770.0844
Bottle1845.97830.04440.16560.68920.11900.00340.00810.01140.00790.00360.03300.00410.0321
Sofa18170.71820.60400.38480.84530.08490.02140.07500.11630.10850.02260.02730.08890.1018
Plate1763.40910.02840.12430.67610.07850.00550.01990.01110.00460.00150.00340.00180.0039
Statue16719.16170.13630.26730.67090.10440.00960.03940.02380.02590.00310.00570.00710.0148
Laptop16419.51220.15100.28570.71930.11120.01330.02490.02490.02090.00330.00460.00750.0132
Dresser15762.42040.52520.39180.81990.09670.03590.08360.12410.11460.02100.03840.08540.1059
Fridge14661.64380.52910.41650.85130.08680.01120.04690.16330.22600.07300.13820.12870.2013
Bed14360.13990.50430.40000.81840.10200.03040.09900.13910.15510.02830.04810.09490.1352
Knife1391.43880.01260.08430.68980.16700.00270.01260.00610.00060.00090.00290.00100.0030
Fork1380.72460.00520.04480.5245-0.00140.00510.0042-0.00050.00140.00050.0014
Garbage Can13259.09090.44650.37290.74850.08980.01020.06150.02510.01980.00480.00550.01680.0185
Pillow13214.39390.11020.24120.67830.11950.01470.04250.01780.01730.00370.00690.00570.0103
Mug1286.25000.04400.15980.64860.12230.00370.01340.00980.00320.00170.00890.00220.0089
Spoon1220.00000.00270.0090--0.00270.0090--0.00070.00180.00070.0018
Wine Bottle1147.01750.05990.18600.70040.08050.01150.05630.01710.01550.00580.03170.00660.0309
Bread1099.17430.07320.20920.71960.10380.00790.01630.01750.00950.00220.00380.00360.0063
Arm Chair10959.63300.48750.39980.80690.10860.01560.04280.07790.07470.01500.01680.05250.0662
Spray Bottle10717.75700.12730.26020.66870.11720.01040.04300.01340.00880.00140.00270.00350.0063
Vase10222.54900.15430.28550.66860.12890.00460.01370.01190.01280.00150.00200.00380.0076
Cup943.19150.02360.11520.64230.14250.00320.00870.00690.00290.00120.00200.00140.0022
Pencil891.12360.00660.06040.5701-0.00020.00090.0028-0.00010.00030.00010.0004
Floor Lamp8962.92130.49620.37850.77160.13140.02870.07820.13610.17400.03330.07180.09800.1526
Toaster8713.79310.10830.24820.70820.13440.01230.03500.01760.01800.00300.00550.00500.0097
Kettle849.52380.07310.19910.67190.11390.01010.01930.01750.01030.00190.00400.00340.0067
Spatula820.00000.00330.0156--0.00330.0156--0.00150.00570.00150.0057
Credit Card820.00000.00710.0410--0.00710.0410--0.00470.03070.00470.0307
Butter Knife760.00000.00200.0090--0.00200.0090--0.00030.00050.00030.0005
Toilet7562.66670.52140.36120.78040.10270.08650.16340.09510.09370.01770.03300.06620.0853
Washing Machine7462.16220.51680.39340.81320.10030.02990.07880.08410.07870.01660.02090.05860.0712
Shelving Unit7352.05480.44450.42780.84830.08050.00610.02090.14150.18370.03260.06370.08930.1492
TV Stand6917.39130.15190.29560.76610.12970.02260.07030.07220.05800.02540.03760.03360.0450
Lettuce6910.14490.07570.20790.67550.10880.00800.03270.00870.00300.00140.00220.00210.0032
Sink6975.36230.57260.33680.75750.09830.00700.01840.05950.06330.03600.03450.05370.0582
Dish Sponge680.00000.00480.0204--0.00480.0204--0.00080.00150.00080.0015
Newspaper682.94120.02080.10950.63350.16400.00230.00660.01650.01010.00130.00240.00170.0037
Potato660.00000.00860.0351--0.00860.0351--0.00200.00920.00200.0092
Apple641.56250.01150.07080.5575-0.00280.01430.0049-0.00100.00300.00110.0030
Soap Bottle6412.50000.09350.23530.69680.11430.00730.03510.00980.00390.00170.00290.00270.0040
Watch630.00000.00050.0013--0.00050.0013--0.00020.00040.00020.0004
Side Table6035.00000.28180.37850.77960.11440.01370.07000.05200.03930.01420.02770.02740.0367
Tomato596.77970.04870.17380.68560.05770.00230.00500.00880.00360.00060.00110.00120.0025
Garbage Bag5967.79660.49570.35230.72860.10750.00540.02200.02000.01960.00470.00480.01510.0178
Pan545.55560.04890.17670.72340.14350.00920.05800.01950.01290.00170.00380.00270.0060
Salt Shaker531.88680.01660.09600.6962-0.00350.01280.0040-0.00070.00140.00080.0014
Faucet523.84620.04080.13670.67880.11870.01520.04350.01700.01810.00690.01300.00730.0131
Pepper Shaker502.00000.01630.10390.7354-0.00160.00410.0064-0.00070.00090.00080.0012
Teddy Bear4650.00000.35670.36100.70360.12190.00990.01480.01810.02030.00340.00390.01080.0163
Toilet Paper466.52170.05410.16020.63890.04990.01330.03520.01240.00720.00150.00330.00220.0045
Stool4436.36360.28590.38230.77800.11260.00460.01460.03420.02960.00430.00360.01510.0229
Candle439.30230.07470.21130.68450.16230.01210.06390.00790.00370.00060.00130.00130.0027
Baseball Bat4316.27910.13410.27210.72790.11320.01860.04920.02960.02600.00630.00910.01010.0155
Cart4257.14290.48280.41470.82870.09730.02170.08870.09460.07420.01720.02220.06140.0693
Microwave4010.00000.08710.22020.72420.11470.01640.03730.02910.01710.00680.00640.00900.0103
Desk Lamp4017.50000.15300.29230.76260.09710.02370.06180.03510.02130.00750.01340.01230.0182
Plunger3917.94870.13150.26560.67550.09000.01250.05880.01170.00300.00300.00270.00460.0043
Basket Ball3735.13510.27350.33100.68740.10770.04930.12690.00910.00760.00220.00190.00460.0057
Dog Bed3432.35290.27090.39290.82900.05180.00400.01080.04070.02400.00550.00700.01690.0221
Ladle330.00000.00520.0185--0.00520.0185--0.00130.00370.00130.0037
Pot3321.21210.15850.29230.69940.13890.01290.02830.02990.01700.00560.01360.01080.0173
Paper Towel Roll326.25000.04920.18090.73620.07700.00340.00790.01690.00650.00230.00320.00320.0049
Alarm Clock2924.13790.17720.26150.60590.06020.04080.09700.01050.00720.00210.00300.00410.0056
Tissue Box210.00000.00450.0087--0.00450.0087--0.00330.00440.00330.0044
Egg200.00000.00070.0015--0.00070.0015--0.00040.00060.00040.0006
Cloth170.00000.00840.0146--0.00840.0146--0.00190.00260.00190.0026
Safe1625.00000.19750.35350.78780.07260.00080.00190.02810.02790.00610.00560.01160.0166
Desk1546.66670.37200.40630.78740.08570.00850.01770.07470.05700.03420.04630.05310.0538
Coffee Machine1442.85710.29480.34900.67910.08030.00660.01000.00980.00400.00650.00930.00790.0075
Tennis Racket137.69230.07710.23120.8443-0.01310.01840.0571-0.00210.00210.00630.0154
Laundry Hamper757.14290.38490.35200.66230.08890.01500.02600.01380.01140.00910.00870.01180.0098
Table Top Decor60.00000.04970.0501--0.04970.0501--0.00500.00700.00500.0070
Vacuum Cleaner560.00000.40020.36620.66690.03660.00000.00000.01080.00070.00160.00200.00710.0052
Soap Bar40.00000.00140.0012--0.00140.0012--0.00010.00000.00010.0000
Room Decor40.00000.00210.0042--0.00210.0042--0.01000.00670.01000.0067
Dumbbell250.00000.41100.58120.8220-0.0000-0.0295-0.0001-0.01480.0208
Coffee Table1100.00000.7247-0.7247---0.0194---0.0194-
Ottoman1100.00000.8790-0.8790---0.0872---0.0872-

Perché è andata così male

È chiaro che la dimensione dei bounding box ha nettamente influito sulle prestazioni del modello.

Prima la media dei bounding box per le entità non correttamente stimate era: 0,056 Adesso invece è: 0.0222

Quindi più della metà. Curiosamente di un valore molto simile è diminuita la precisione:

entity_typeNumber of OccurrencesPercentage of Matches
Total1000023.0500
Rispetto a quella precedente:
entity_typeNumber of OccurrencesPercentage of Matches
Total501451.9744
Un risultato che evidenzia chiaramente la correlazione che c’è tra dimensioni del bounding box e precisione.
Ho indagato questa relazione facendo una rappresentazione grafica tra la precisione sulle entità e la dimensione del loro bounding box:

La relazione sembra essere lineare per una buona parte del grafico:

plot 1.html

Poi con l’aumentare dei valori della dimensione media dei bounding box tende ad “appiattirsi” intorno al 60%.

Questo plot è stato fatto con il seguente codice: How i plot statistics, an example In breve i punti sono le coppie di valori “Average BBox Dimension” e “Percentage od Matches” per ogni entità. Un punto rosso indica un entità con poche occorrenze nel dataset e un punto verde indica un’entità con molte occorrenze.

Questo grafo secondo me evidenzia bene il limite di questo modello nel trovare un match quando l’entità è piccola. Ed evidenzia anche una certa predisposizione di questo modello a non superare una precisione del 60/70%, con la maggior parte dei punti che superano una certa dimensione (0.05 che ricordiamo essere la dimensione media dell’altro dataset) che adagiano sul 50% di precisione.

Alcuni esempi

Qui sotto ci sono alcuni esempi commentati di “fallimenti” di kosmos2 sui nuovi dati

In entrambi questi casi il bounding box è completamente sbagliato (e non di poco). È chiaro che Kosmos ha difficoltà con bounding box molto piccoli, il risultato è simile a quando non vede proprio l’oggetto, cerca di fare il grounding con qualsiasi cosa riesca a trovare.

Quando invece l’oggetto è in primo piano ed è abbastanza riconoscibile non ha problemi

C’è sicuramente da dire che bisogna spezzare una lancia a favore di Kosmos: alcuni bounding box sono veramente troppo piccoli:

Conclusioni

A mio parere questo modello, in zero shot, ha una precisione che si aggira intorno al 50-60% in condizioni ottimali (bounding box di una dimensione considerevole) e che rapidamente approccia valori di precisione bassi quando le dimensioni dei bounding box diminuiscono.

Paternity test

Un’idea che è venuta fuori è stata quella di utilizzare le informazioni di parentela nel prompt: invece che passare al modello la richiesta di individuare un oggetto, si potrebbe passare l’oggetto e indicarne la posizione come “sopra” all’oggetto. Per fare ciò ho dovuto modificare anche il file “output_data.csv” in modo tale che contenga le informazioni sull’entità dell’oggetto “parent”.

Il risultato è questo:

environmententity_typelexical_referencesbounding_boxparent_entity
2336Spatula[‘spatula’, ‘wire’, ‘lanyard’](0.5016666666666667, 0.6066666666666667, 0.6716666666666666, 0.6333333333333333)Counter Top
2355Fork[‘fork’, ‘napkin’, ‘scissors’, ‘glasses’](0.82, 0.31, 0.8216666666666667, 0.31)Counter Top
3043Mug[‘mug’, ‘pocket’, ‘paperback’](0.195, 0.345, 0.21666666666666667, 0.3616666666666667)Dining Table
Ho aggiunto al prompt l’informazione riguardante il padre dell’oggetto.
def generate_prompt(entity_type, parent_entity=None):
 
	if isinstance(parent_entity, str):
		prompt = f"<grounding><phrase>{entity_type} on the {parent_entity}</phrase>"
	else:
		prompt = f"t<grounding><phrase>{entity_type}</phrase>"
	return [prompt]

Ho fatto l’evaluation.

environmententity_typelexical_referencesimage_bboximage_normalbounding_boxparent_entitykosmos_bounding_boxoverlap_indexMatch
2336Spatula[‘spatula’, ‘wire’, ‘lanyard’]Robocup/2336/images/Kitchen/bounding_box/position_1/2336_Kitchen_bounding_box_pos_1_90.jpgRobocup/2336/images/Kitchen/normal/position_1/2336_Kitchen_pos_1_90.jpg(0.5016666666666667, 0.6066666666666667, 0.6716666666666666, 0.6333333333333333)Counter Top(0.078125, 0.578125, 0.234375, 0.703125)0.0False
2355Fork[‘fork’, ‘napkin’, ‘scissors’, ‘glasses’]Robocup/2355/images/Kitchen/bounding_box/position_2/2355_Kitchen_bounding_box_pos_2_0.jpgRobocup/2355/images/Kitchen/normal/position_2/2355_Kitchen_pos_2_0.jpg(0.82, 0.31, 0.8216666666666667, 0.31)Counter Top(0.796875, 0.296875, 0.859375, 0.359375)0.0False
3043Mug[‘mug’, ‘pocket’, ‘paperback’]Rockin1/3043/images/Bathroom/bounding_box/position_0/3043_Bathroom_bounding_box_pos_0_270.jpgRockin1/3043/images/Bathroom/normal/position_0/3043_Bathroom_pos_0_270.jpg(0.195, 0.345, 0.21666666666666667, 0.3616666666666667)Dining Table(0.140625, 0.296875, 0.203125, 0.359375)0.028139999372575285False
2288Bed[‘bed’, ‘bedstand’, ‘nightstand’, ‘bedside’, ‘night’]Robocup/2288/images/Bedroom/bounding_box/position_3/2288_Bedroom_bounding_box_pos_3_90.jpgRobocup/2288/images/Bedroom/normal/position_3/2288_Bedroom_pos_3_90.jpg(0.41, 0.29833333333333334, 0.6766666666666666, 0.41833333333333333)(0.390625, 0.296875, 0.671875, 0.421875)0.8794822459331818True

Ed infine ho computato le statistiche su questo file:

file: “zero_shot_pulito_paternity_final_statistics_dash.csv”

entity_typeNumber of OccurrencesPercentage of MatchesAverage Overlapping IndexStd Average Overlapping IndexAverage Overlapping Index (Matched)Std Average Overlapping Index (Matched)Average Overlapping Index (Unmatched)Std Average Overlapping Index (Unmatched)Avg BBox Dimensions (Correct)Std Avg BBox Dimensions (Correct)Avg BBox Dimensions (Incorrect)Std Avg BBox Dimensions (Incorrect)Average BBox Dimensions (All)Std Average BBox Dimensions (All)
Total1000022.52000.18840.32390.76970.11800.01940.06780.07530.10780.00660.02620.02200.0630
Painting78137.77210.30130.38510.78810.09920.00580.03020.06710.08850.01290.02270.03340.0630
Cell Phone6061.98020.02100.09900.60690.09170.00920.05250.00450.00180.00080.00390.00090.0039
Remote Control5060.59290.01150.05990.63560.06780.00780.03540.00690.00520.00080.00180.00080.0019
Book4668.58370.06970.19820.69270.11620.01130.04220.01600.01180.00180.00650.00300.0081
Chair43331.63970.26410.33490.73250.11780.04730.09400.04370.03650.01310.01820.02280.0292
Pen3720.00000.00290.0160--0.00290.0160--0.00030.00100.00030.0010
Dining Table32764.83180.52400.36450.77810.11340.05560.12160.08780.08930.01700.02360.06290.0806
Key Chain2190.00000.01040.0494--0.01040.0494--0.00130.01120.00130.0112
Box21811.92660.10900.24730.73790.10390.02390.08340.02930.04960.00500.00800.00790.0201
Counter Top21839.44950.33440.39040.80450.11820.02810.06180.17570.15540.06750.09490.11010.1331
Bowl2036.89660.06490.17570.65170.10060.02140.07010.00970.00570.00180.00420.00230.0048
House Plant19546.15380.36600.35410.72040.12130.06210.13930.03180.03240.00420.00460.01690.0261
Television18765.77540.52080.36340.77080.10830.04030.10220.07800.09460.01870.03660.05770.0844
Bottle1844.34780.04420.14890.68460.11940.01510.05490.01180.00840.00370.03270.00410.0321
Sofa18169.61330.59350.39020.84510.08680.01710.06400.11770.10890.02290.02690.08890.1018
Plate1763.97730.03960.13550.65280.09460.01420.04980.01000.00510.00140.00340.00180.0039
Statue16717.36530.14690.26350.68220.11080.03440.09050.02490.02700.00340.00580.00710.0148
Laptop16419.51220.19150.28280.70090.12120.06800.13150.02300.02010.00380.00700.00750.0132
Dresser15759.23570.49900.40260.82490.09200.02540.06620.12770.11620.02390.03990.08540.1059
Fridge14660.27400.51960.42030.85480.08460.01120.04540.17220.23120.06270.11890.12870.2013
Bed14357.34270.49030.39380.81450.11250.05460.11560.13510.14900.04100.09010.09490.1352
Knife1391.43880.02250.10180.68980.16700.01280.06060.00610.00060.00090.00290.00100.0030
Fork1380.00000.00190.0076--0.00190.0076--0.00050.00140.00050.0014
Garbage Can13258.33330.44250.37440.75090.08870.01090.05950.02540.01980.00480.00540.01680.0185
Pillow13215.90910.14200.26290.70050.12190.03630.09360.01930.01790.00320.00520.00570.0103
Mug1285.46880.03880.15340.66190.12560.00280.01250.00950.00330.00180.00890.00220.0089
Spoon1220.00000.00110.0044--0.00110.0044--0.00070.00180.00070.0018
Wine Bottle1147.01750.09080.19440.69690.08380.04510.10050.01580.01640.00590.03170.00660.0309
Bread10910.09170.09970.21760.70270.09400.03200.07690.01340.00900.00250.00490.00360.0063
Arm Chair10957.79820.48100.40420.81640.10050.02170.07100.07990.07500.01500.01640.05250.0662
Spray Bottle10719.62620.16310.26510.66030.11410.04170.09280.01320.00850.00120.00210.00350.0063
Vase10219.60780.16440.27470.66730.13240.04180.11100.01210.01370.00180.00270.00380.0076
Cup942.12770.03200.11850.70360.13440.01740.06350.00810.00280.00120.00200.00140.0022
Pencil891.12360.00670.06050.5701-0.00030.00290.0028-0.00010.00030.00010.0004
Floor Lamp8961.79780.48600.38050.76910.13680.02820.07700.13840.17470.03250.07080.09800.1526
Toaster8718.39080.15600.27380.68850.11590.03600.09910.01530.01610.00270.00540.00500.0097
Kettle847.14290.06250.17500.66020.12000.01650.04570.01790.01160.00220.00470.00340.0067
Spatula820.00000.00450.0232--0.00450.0232--0.00150.00570.00150.0057
Credit Card820.00000.00860.0410--0.00860.0410--0.00470.03070.00470.0307
Butter Knife760.00000.00190.0070--0.00190.0070--0.00030.00050.00030.0005
Toilet7565.33330.53090.35210.76950.11400.08140.14240.09140.09340.01870.03410.06620.0853
Washing Machine7463.51350.52660.38930.81130.10000.03110.07990.08250.07870.01700.02120.05860.0712
Shelving Unit7352.05480.43780.42350.83490.10440.00670.02190.13410.18340.04060.07640.08930.1492
TV Stand6923.18840.19980.33060.76580.13910.02890.09510.06660.05690.02360.03580.03360.0450
Lettuce6910.14490.09880.21910.67550.10880.03370.09950.00870.00300.00140.00220.00210.0032
Sink6969.56520.54070.35560.76710.09670.02340.06460.06150.06380.03610.03850.05370.0582
Dish Sponge680.00000.00930.0547--0.00930.0547--0.00080.00150.00080.0015
Newspaper684.41180.04170.14580.66900.13130.01270.04920.01490.00760.00110.00200.00170.0037
Potato660.00000.00410.0141--0.00410.0141--0.00200.00920.00200.0092
Apple640.00000.01220.0555--0.01220.0555--0.00110.00300.00110.0030
Soap Bottle6410.93750.12000.23330.69780.12740.04900.11250.00910.00380.00190.00330.00270.0040
Watch630.00000.00070.0015--0.00070.0015--0.00020.00040.00020.0004
Side Table6040.00000.32060.37910.76610.11910.02360.07830.04710.03900.01430.02880.02740.0367
Tomato598.47460.07650.19120.64910.09560.02350.07420.00830.00330.00050.00080.00120.0025
Garbage Bag5966.10170.48930.35490.73200.10670.01610.07140.02030.01980.00490.00470.01510.0178
Pan543.70370.03830.15500.80050.07460.00890.03480.02460.01310.00190.00390.00270.0060
Salt Shaker530.00000.02290.0814--0.02290.0814--0.00080.00140.00080.0014
Faucet525.76920.09120.14750.58530.07400.06090.08180.00670.00530.00730.01340.00730.0131
Pepper Shaker500.00000.01170.0493--0.01170.0493--0.00080.00120.00080.0012
Teddy Bear4645.65220.34690.36390.72330.11360.03070.09750.01900.02110.00390.00400.01080.0163
Toilet Paper466.52170.05570.15220.60580.03150.01730.04050.01670.00210.00120.00230.00220.0045
Stool4436.36360.28570.38240.77800.11260.00440.01330.03420.02960.00430.00360.01510.0229
Candle434.65120.06360.17240.70450.26330.03230.08900.00580.00050.00110.00250.00130.0027
Baseball Bat4316.27910.13840.27400.72790.11320.02380.06980.02960.02600.00630.00910.01010.0155
Cart4250.00000.42870.42640.84480.07760.01250.05490.10350.07520.01940.02190.06140.0693
Microwave4010.00000.08690.21930.70680.14280.01800.05510.02570.02070.00720.00680.00900.0103
Desk Lamp4020.00000.16960.30780.76590.09040.02050.05140.03440.01990.00680.01300.01230.0182
Plunger3917.94870.13240.26700.67870.09480.01290.05900.01070.00300.00320.00330.00460.0043
Basket Ball3735.13510.26690.33400.69020.10310.03760.11370.00920.00750.00210.00170.00460.0057
Dog Bed3426.47060.22370.37520.83830.05290.00250.00700.04010.02370.00850.01430.01690.0221
Ladle330.00000.00160.0064--0.00160.0064--0.00130.00370.00130.0037
Pot3321.21210.16570.30350.71770.14750.01710.06600.02990.01700.00560.01360.01080.0173
Paper Towel Roll326.25000.07240.20240.80650.05560.02350.06350.01690.00650.00230.00320.00320.0049
Alarm Clock2927.58620.20290.26730.60320.07780.05030.09670.00940.00730.00210.00310.00410.0056
Tissue Box210.00000.00180.0037--0.00180.0037--0.00330.00440.00330.0044
Egg200.00000.01040.0464--0.01040.0464--0.00040.00060.00040.0006
Cloth170.00000.01670.0262--0.01670.0262--0.00190.00260.00190.0026
Safe1625.00000.20720.34820.78780.07260.01360.02140.02810.02790.00610.00560.01160.0166
Desk1533.33330.29230.37010.78290.08500.04700.09660.07920.06730.04010.04400.05310.0538
Coffee Machine1435.71430.26680.33220.68390.08840.03510.07910.00910.00400.00730.00900.00790.0075
Tennis Racket137.69230.13190.25420.8443-0.07260.14320.0571-0.00210.00210.00630.0154
Laundry Hamper728.57140.18920.32370.65910.10220.00120.00200.02040.01350.00840.00680.01180.0098
Table Top Decor60.00000.05380.0385--0.05380.0385--0.00500.00700.00500.0070
Vacuum Cleaner560.00000.40020.36620.66690.03660.00000.00000.01080.00070.00160.00200.00710.0052
Soap Bar40.00000.00130.0018--0.00130.0018--0.00010.00000.00010.0000
Room Decor40.00000.01100.0219--0.01100.0219--0.01000.00670.01000.0067
Dumbbell250.00000.42240.56510.8220-0.0228-0.0295-0.0001-0.01480.0208
Coffee Table1100.00000.7769-0.7769---0.0194---0.0194-
Ottoman1100.00000.8790-0.8790---0.0872---0.0872-
Come si può evincere, questo risultato è stato un fallimento. Le prestazioni sono addirittura leggermente inferiori all’esperimento precedente. Inoltre il problema non sembra essere la formulazione del prompt: ho effettuato alcuni esperimenti su piccoli batch di dati con prompt leggermente differenti, e il risultato è pressochè lo stesso. Chiaramente il problema non è risolvibile con un po’ di prompt engineering.

Alcuni esempi dei tipi di prompt che ho sperimentato:

def generate_prompt(entity_type, parent_entity=None):
 
	if isinstance(parent_entity, str):
		prompt = f"<grounding><phrase>there is a {entity_type} on the {parent_entity}</phrase>"
	else:
		prompt = f"t<grounding><phrase>there is a {entity_type}</phrase>"
	return [prompt]
def generate_prompt(entity_type, parent_entity=None):
 
	if isinstance(parent_entity, str):
		prompt = f"<grounding><phrase>this is a {entity_type} on the {parent_entity}</phrase>"
	else:
		prompt = f"t<grounding><phrase>this is a {entity_type}</phrase>"
	return [prompt]

ottenendo risultati equivalenti al prompt che ho utilizzato infine già riportato precedentemente:

def generate_prompt(entity_type, parent_entity=None):
 
	if isinstance(parent_entity, str):
		prompt = f"<grounding><phrase>{entity_type} on the {parent_entity}</phrase>"
	else:
		prompt = f"t<grounding><phrase>{entity_type}</phrase>"
	return [prompt]

Alcuni esempi di paternità

Qui ci sono alcuni esempi rilevanti in cui paternità ha fatto meglio:

In questi due casi “virtuosi”, kosmos è stato in grado di trovare l’entità che non era riuscito a trovare senza aiuto da parte della relazione di “parent entity”.

Non sempre però questo avviene:

Molte di queste “divergenze” sono su dipinti, in effetti questo torna con i dati (con paternity la percentuale di match è leggermente minore)

entity_typePercentage of Matches
Total22.5200
Painting39.9457
entity_typePercentage of Matches
Total23.0500
Painting40.3462

Lexical references

Un altro esperimento che abbiamo portato avanti è stato di utilizzare, invece del nome dell’entità, le lexical references. Questo esperimento è stato fatto non tanto per vedere se le lexical refereneces potessero risolvere il problema di prestazioni, ma piuttosto per vedere quanto decadono le prestazioni se ci riferiamo agli oggetti con i termini più disparati

Attraverso uno script ho creato un file che invece del nome dell’entità ha una delle lexical references

environmententity_typeimage_bboximage_normalbounding_box
2380phoneRobocup/2380/images/LivingRoom/bounding_box/position_1/2380_LivingRoom_bounding_box_pos_1_180.jpgRobocup/2380/images/LivingRoom/normal/position_1/2380_LivingRoom_pos_1_180.jpg(0.465, 0.31333333333333335, 0.475, 0.31333333333333335)
2304keysRobocup/2304/images/Bedroom/bounding_box/position_1/2304_Bedroom_bounding_box_pos_1_90.jpgRobocup/2304/images/Bedroom/normal/position_1/2304_Bedroom_pos_1_90.jpg(0.0, 0.425, 0.006666666666666667, 0.43)
3489jarRelease1/3489/images/Kitchen/bounding_box/position_6/3489_Kitchen_bounding_box_pos_6_0.jpgRelease1/3489/images/Kitchen/normal/position_6/3489_Kitchen_pos_6_0.jpg(0.5583333333333333, 0.2683333333333333, 0.575, 0.29)
2192jamRobocup/2192/images/Kitchen/bounding_box/position_1/2192_Kitchen_bounding_box_pos_1_90.jpgRobocup/2192/images/Kitchen/normal/position_1/2192_Kitchen_pos_1_90.jpg(0.49166666666666664, 0.375, 0.52, 0.39)

Risultati precedenti:

Total1000022.11000.18640.32110.76760.11780.02150.07310.07520.10740.00700.02790.02210.0629
Quindi ho avviato l’evaluation. Il risultato è stato il seguente:

file: lexical_reference_zero_shot_final_statistics_dash.csv

entity_typeNumber of OccurrencesPercentage of MatchesAverage Overlapping IndexStd Average Overlapping IndexAverage Overlapping Index (Matched)Std Average Overlapping Index (Matched)Average Overlapping Index (Unmatched)Std Average Overlapping Index (Unmatched)Avg BBox Dimensions (Correct)Std Avg BBox Dimensions (Correct)Avg BBox Dimensions (Incorrect)Std Avg BBox Dimensions (Incorrect)Average BBox Dimensions (All)Std Average BBox Dimensions (All)
Total1000019.23000.15570.30620.76960.11700.00960.04120.07720.11340.00630.02580.01990.0616
picture22444.19640.36460.38810.78660.09400.03050.09620.06130.08790.01890.02970.03760.0658
poster21946.11870.35480.38870.76670.10640.00220.00880.04960.07650.01300.01970.02990.0568
painting21748.84790.38060.38940.77070.10050.00810.03750.06800.10150.01870.02770.04270.0775
message2090.00000.00290.0178--0.00290.0178--0.00060.00150.00060.0015
cellphone2050.97560.00830.06330.64060.01730.00210.00730.00790.00040.00070.00160.00080.0017
answer machine2040.49020.00580.04800.6255-0.00280.02020.0052-0.00140.01250.00140.0125
radio2031.47780.01270.08260.67250.03730.00280.01610.00720.00280.00140.01260.00150.0125
answer1890.52910.00720.04340.5248-0.00440.02130.0031-0.00160.01300.00160.0130
cell1840.00000.00360.0262--0.00360.0262--0.00070.00170.00070.0017
telephone1782.24720.01700.09980.66970.05940.00200.00710.00580.00160.00150.01350.00160.0133
phone1731.15610.01010.07870.73430.02860.00160.00400.00660.00260.00070.00190.00080.0020
controller1731.15610.01020.07750.72170.07990.00190.00430.01260.00420.00090.00210.00100.0025
stereo1670.59880.00910.06170.6290-0.00540.03850.0056-0.00080.00180.00090.0018
remote1613.10560.02360.11640.64490.13330.00360.02610.00810.00540.00070.00170.00090.0023
book1537.84310.05760.18400.67520.11670.00500.01430.02180.01540.00190.00460.00350.0081
remote control1451.37930.01130.07160.59850.09830.00300.01410.01160.00710.00090.00270.00100.0031
reading1367.35290.05400.18540.69910.12310.00280.01020.01700.00840.00190.00420.00310.0061
catalogue1316.10690.04620.17250.71520.08060.00270.00870.02090.01010.00190.00370.00300.0063
chair12919.37980.20900.29040.75160.10820.07860.11590.05090.04710.01320.01790.02050.0300
seat11323.89380.21420.29110.69970.12680.06180.09140.04150.03290.01090.01200.01830.0231
table10754.20560.42790.38340.76720.11530.02640.07200.07420.06100.02770.04800.05290.0599
cake1040.00000.00160.0067--0.00160.0067--0.00040.00190.00040.0019
pen970.00000.00060.0019--0.00060.0019--0.00030.00090.00030.0009
dining table9564.21050.50550.37840.77480.12150.02240.08100.07660.06610.01890.02110.05590.0610
laptop8421.42860.16960.31030.74550.14340.01250.02600.02740.02430.00290.00440.00810.0154
television7160.56340.46480.38880.76740.11910.00000.00010.11230.15470.01380.02390.07340.1301
worktop6943.47830.36350.41400.82440.10990.00890.02800.15380.12800.05690.08910.09900.1173
keys690.00000.00060.0017--0.00060.0017--0.00030.00070.00030.0007
glass694.34780.03360.12890.61700.03420.00710.03040.01240.00620.00290.01330.00330.0132
juice656.15380.04640.15550.59820.12910.01020.05770.01370.01640.00180.00330.00260.0056
coke631.58730.01980.08500.5014-0.01210.05900.0062-0.00170.00300.00180.0031
key chain630.00000.00040.0015--0.00040.0015--0.00040.00080.00040.0008
indoor plant6344.44440.31950.35310.70080.10920.01440.04850.02650.02090.00560.01280.01490.0198
bag628.06450.06830.18460.66550.13330.01590.03470.01110.01290.00420.00550.00480.0065
handbag6113.11480.09630.21720.63610.09730.01480.03930.01840.01480.00510.00940.00680.0111
case611.63930.02860.11040.8421-0.01510.03150.0338-0.00550.00650.00590.0074
bottle of water606.66670.04910.18030.70600.14990.00210.00510.01810.01450.00160.00240.00270.0058
drink596.77970.05710.17570.65460.13240.01360.06160.01020.00570.00240.00560.00290.0059
bottle593.38980.02910.13980.76800.00410.00320.00750.00800.00340.00090.00100.00110.0017
statue5920.33900.14360.27620.67320.12860.00840.02080.01730.01300.00210.00300.00520.0088
utensil590.00000.00570.0148--0.00570.0148--0.00190.00600.00190.0060
cigarettes5813.79310.09520.21210.61050.09190.01270.02910.01090.00990.00530.00790.00600.0083
box5810.34480.08810.22220.71070.13660.01630.04970.01400.00600.00490.00790.00580.0082
pack578.77190.08180.20650.71160.14360.02130.05070.01330.00660.00630.00970.00690.0096
tv5775.43860.59370.34850.78120.11870.01810.06770.09020.12290.01450.02540.07160.1120
flower5642.85710.31190.36650.71930.13310.00630.01790.03520.03580.00690.01340.01900.0290
plant5642.85710.30830.36600.71760.12020.00130.00370.03620.04410.00320.00340.01740.0331
telly5626.78570.20750.33840.73950.15370.01280.06450.11800.16940.03630.08210.05820.1164
water553.63640.02740.12770.65820.22180.00360.01050.02220.02260.00230.00430.00300.0064
power535.66040.06400.18480.77450.10580.02130.05490.06040.04860.00570.00820.00880.0178
couch5263.46150.53050.39820.82290.08760.02270.08220.09280.07820.02830.06190.06920.0785
drawer unit5172.54900.61180.38430.84150.08620.00460.01330.10550.09040.02220.02340.08260.0862
wifi513.92160.04470.12700.64100.05150.02040.03650.01000.00010.00440.00570.00460.0057
cutlery510.00000.00580.0171--0.00580.0171--0.00170.00390.00170.0039
bowl517.84310.05960.17850.65550.08860.00880.02500.00820.00270.00150.00280.00200.0033
pasta5010.00000.07710.21630.71230.07850.00650.02500.01450.00830.00150.00400.00280.0060
spoon500.00000.00130.0046--0.00130.0046--0.00050.00100.00050.0010
computer4910.20410.09110.22020.72330.10440.01920.03660.02160.01580.00470.00890.00650.0109
counter4951.02040.41840.41650.81530.10750.00490.01620.15200.15960.06440.10580.10910.1416
plate484.16670.04130.17230.85500.02460.00590.01650.02540.02690.00170.00300.00270.0069
refrigerator4860.41670.49460.41240.81860.10370.00000.00000.14760.16350.04820.08550.10820.1454
sofa4763.82980.54910.39650.83320.09390.04770.13270.12130.12520.01810.02280.08400.1122
notebook4617.39130.13490.28790.74850.10530.00570.01290.02240.01980.00210.00230.00560.0112
knife464.34780.03700.15800.76530.08510.00390.01230.02230.01360.00140.00290.00230.0056
garbage bucket4562.22220.47630.38020.76490.08290.00090.00330.02850.02180.00760.01860.02060.0228
bottle of wine456.66670.05530.18270.72300.11040.00760.01730.01020.00230.00900.04750.00900.0459
beer4511.11110.09680.21710.63200.11390.02990.10270.00670.00190.01170.05120.01120.0483
wine4413.63640.09540.23680.68110.07260.00300.00520.00780.00220.00420.01770.00470.0165
fork440.00000.00320.0106--0.00320.0106--0.00100.00340.00100.0034
spraybottle4415.90910.10270.23600.63070.10940.00280.00570.00770.00640.00090.00200.00200.0039
pc4318.60470.13270.26730.67410.11700.00890.02690.02290.02090.00440.00930.00780.0140
bucket4367.44190.53680.36900.78610.06220.02030.07590.02800.02230.00590.00800.02080.0215
napkin430.00000.00110.0021--0.00110.0021--0.00030.00060.00030.0006
horse439.30230.06970.18390.61660.10130.01360.04280.02290.01650.00340.00590.00520.0092
bottle of beer4214.28570.10610.23830.66340.11390.01320.05070.00860.00260.01350.05390.01280.0498
drawer4245.23810.39910.42450.85780.05080.02020.04370.10770.07400.02090.02670.06020.0686
beer bottle4211.90480.08140.22110.66630.12400.00240.00490.00860.00370.00120.00110.00210.0029
socket4214.28570.10570.22690.64420.09240.01590.03310.02220.02280.00460.00570.00710.0114
web419.75610.07410.21660.71090.15020.00520.01810.02160.00820.00430.00850.00600.0099
power socket407.50000.05690.18000.66910.12150.00720.02310.02830.03340.00280.00420.00470.0109
closet4052.50000.46830.43580.87390.05720.02000.06140.15410.11640.03300.05160.09650.1092
garbage can4067.50000.52180.36290.76560.08210.01530.04110.02650.02130.01880.02790.02400.0236
building3946.15380.42200.45770.90900.04330.00460.01440.34310.30180.03430.02710.17680.2558
bedstand3946.15380.41480.40260.82350.08360.06460.15130.12440.14290.04040.04840.07920.1103
bread380.00000.00990.0340--0.00990.0340--0.00140.00260.00140.0026
tablet3810.52630.08800.21280.68950.09480.01730.03060.03090.02590.00330.00510.00620.0123
pillow3818.42110.14290.28870.72780.14800.01080.02270.02230.01680.00470.01090.00800.0138
dresser3863.15790.56790.40610.86780.04460.05380.12290.10890.06260.02610.03280.07840.0667
mouse378.10810.07400.19920.71250.15700.01770.03810.01950.01870.00440.00630.00560.0086
fridge3767.56760.54700.39870.80940.13130.00030.00090.22020.30470.04990.04360.16500.2627
yogurt370.00000.00610.0107--0.00610.0107--0.00210.00370.00210.0037
bed3745.94590.38180.42290.82800.10530.00260.00720.13070.11540.02020.02560.07100.0968
armchair3759.45950.47180.40100.79260.09880.00140.00530.06250.06520.02050.03850.04550.0591
bedside3732.43240.29270.39030.83660.06590.03170.08780.10730.09670.04770.06570.06700.0809
pocket360.00000.00220.0053--0.00220.0053--0.00140.00430.00140.0043
wine bottle3611.11110.06970.19210.60100.08240.00330.00720.00600.00250.00220.00380.00260.0038
soap368.33330.06180.18780.67190.08030.00640.01020.00690.00570.00320.00590.00360.0059
bin3672.22220.56960.35150.77320.10950.04040.12750.03250.02570.00320.00250.02440.0255
nightstand3542.85710.36710.41100.81880.12210.02830.09700.19360.21300.04270.06830.10740.1644
bench3554.28570.43860.41470.80680.10850.00130.00520.05790.04180.02150.04250.04130.0454
aspirin350.00000.00100.0020--0.00100.0020--0.00040.00120.00040.0012
stove345.88240.04740.17200.72230.02280.00520.01520.02630.01180.00430.00660.00560.0085
mug348.82350.05040.16210.56240.04530.00080.00210.01300.01010.00090.00320.00190.0053
spatula330.00000.00240.0110--0.00240.0110--0.00160.00540.00160.0054
mustard330.00000.00070.0019--0.00070.0019--0.00020.00060.00020.0006
jar326.25000.03850.13690.55720.03210.00390.01410.00420.00290.00090.00150.00110.0018
cushion329.37500.06380.18320.62040.07350.00630.01210.01390.00800.00230.00340.00330.0052
vase329.37500.06330.19030.64180.07970.00340.00940.01280.00190.00150.00270.00250.0042
shelf3262.50000.53340.40870.84210.06170.01870.04420.14810.14620.12750.27560.14040.2004
paperback323.12500.02180.10490.5953-0.00330.00710.0093-0.00080.00200.00100.0025
wire320.00000.00030.0010--0.00030.0010--0.00030.00080.00030.0008
toilet3177.41940.58910.32180.75260.10420.02830.04560.06650.08200.01260.01870.05430.0758
scissors310.00000.00090.0020--0.00090.0020--0.00030.00040.00030.0004
lanyard310.00000.00270.0081--0.00270.0081--0.00130.00320.00130.0032
bookshelf3066.66670.55840.39190.82580.08280.02370.06130.11700.11770.03020.04250.08810.1066
tvstand3013.33330.09090.19010.52220.01590.02450.08680.12080.08460.03240.04310.04410.0572
butter knife300.00000.00020.0008--0.00020.0008--0.00020.00060.00020.0006
night2920.68970.21760.36090.89780.02950.04020.08040.28850.26080.07470.12790.11900.1810
soap dispenser290.00000.01840.0552--0.01840.0552--0.00300.00570.00300.0057
kettle2910.34480.07590.20150.65340.06740.00920.02170.01410.00730.00220.00310.00340.0051
cabinet2948.27590.42660.42680.85130.10970.03010.06560.18400.17070.05010.05780.11470.1409
jam290.00000.01200.0554--0.01200.0554--0.00150.00330.00150.0033
milk296.89660.05160.15140.59290.00160.01150.02160.00660.00050.00270.00370.00300.0037
cup of coffee293.44830.02890.12240.6619-0.00630.01310.0075-0.00140.00150.00160.0019
glasses290.00000.00050.0014--0.00050.0014--0.00030.00060.00030.0006
cup296.89660.05880.17300.65950.00340.01430.04930.00500.00350.00380.00770.00390.0074
mirror280.00000.01280.0339--0.01280.0339--0.00590.01910.00590.0191
magazine277.40740.05670.18310.67240.20460.00740.02140.02070.01740.00140.00260.00280.0067
shelving2777.77780.65150.35880.83520.08850.00860.01340.12860.20220.06070.11610.11350.1868
washer2669.23080.57610.39160.82780.08560.00970.01860.11090.09970.03560.04240.08770.0923
pantry2560.00000.49480.40060.80850.09910.02430.05310.14910.15170.03430.05610.10320.1338
toaster2512.00000.08850.23540.70920.08830.00390.00610.02340.02810.00370.00730.00610.0125
cupboard2470.83330.61050.37040.83830.07520.05720.08100.14690.14160.06230.05300.12220.1274
coffee244.16670.02890.13490.6619-0.00140.00400.0075-0.00140.00190.00160.0023
fruit240.00000.00050.0014--0.00050.0014--0.00050.00080.00050.0008
stand2425.00000.25640.35210.81840.14640.06900.11320.15280.13140.03010.03370.06080.0868
credit card240.00000.00160.0050--0.00160.0050--0.00020.00060.00020.0006
eyeglasses240.00000.00720.0157--0.00720.0157--0.00060.00110.00060.0011
recorder2445.83330.39300.37780.77360.11600.07090.13120.09590.11970.01610.01400.05270.0893
cereal234.34780.04360.17290.8251-0.00810.03030.0058-0.00440.01290.00450.0126
pencil230.00000.00010.0003--0.00010.0003--0.00010.00010.00010.0001
loo2365.21740.49620.37980.75970.11330.00210.00600.07850.06660.00870.00570.05420.0632
mayo230.00000.00110.0022--0.00110.0022--0.00080.00100.00080.0010
wrench230.00000.00230.0104--0.00230.0104--0.00060.00250.00060.0025
washing machine2373.91300.60890.35930.81120.09200.03570.08680.08500.09970.00440.00410.06400.0924
newspaper238.69570.06360.20130.68940.18050.00400.00730.01820.02100.00180.00330.00320.0072
tap2263.63640.48650.37930.75830.11470.01080.02730.08590.07540.04310.06070.07030.0721
bath2263.63640.52180.39150.80320.10980.02930.04250.10700.08500.04680.04980.08510.0786
apple229.09090.06070.19380.65650.08760.00110.00240.00370.00030.00100.00220.00130.0022
light2147.61900.40090.40200.79530.09110.04230.13670.08550.12160.07180.10270.07830.1095
washing2166.66670.58740.34640.81040.12410.14140.13650.11630.12230.02800.02010.08690.1080
dishwasher1973.68420.58690.35990.79300.07220.00950.02130.09300.10670.02140.02980.07420.0973
storage1931.57890.27400.39700.83540.09710.01490.04680.13850.11470.04500.06430.07460.0917
bathtub1957.89470.45270.40740.78190.12460.00000.00000.08660.07180.01180.00880.05510.0658
floorlamp1866.66670.52290.39600.78440.13660.00000.00000.07720.10120.01440.01380.05630.0873
sink1877.77780.58350.31080.72880.13720.07500.15000.06710.07410.00950.00670.05430.0694
sidetable1850.00000.37170.37920.73500.09160.00840.01390.05390.03750.01020.02220.03210.0374
candle180.00000.00050.0015--0.00050.0015--0.00070.00100.00070.0010
salt shaker180.00000.00150.0030--0.00150.0030--0.00040.00050.00040.0005
garbage bag1861.11110.44820.36710.72940.07200.00620.01650.01880.01600.00220.00110.01240.0148
bath-tub1850.00000.38640.39950.76290.13900.00990.02980.07930.07430.01970.01840.04950.0608
wristwatch180.00000.00020.0004--0.00020.0004--0.00020.00050.00020.0005
floor lamp1752.94120.45490.40650.81280.10950.05220.11790.12380.14990.02060.02660.07520.1198
corn1711.76470.07620.20990.63290.04960.00200.00430.00850.00110.00070.00060.00160.0027
toilet paper170.00000.02290.0562--0.02290.0562--0.00110.00170.00110.0017
lettuce1717.64710.13210.29740.74330.16490.00110.00390.01410.01320.00070.00060.00310.0071
cereals170.00000.00110.0024--0.00110.0024--0.00380.01390.00380.0139
tomato166.25000.03920.15340.6146-0.00080.00180.0043-0.00050.00060.00070.0011
pepper shaker166.25000.04000.15790.6322-0.00050.00100.0019-0.00040.00070.00050.0007
toiletpaper150.00000.03100.1073--0.03100.1073--0.00180.00240.00180.0024
desk lamp150.00000.00420.0132--0.00420.0132--0.00310.00300.00310.0030
potato150.00000.00070.0015--0.00070.0015--0.00420.01480.00420.0148
screwdriver156.66670.07980.23220.8946-0.02160.05770.0851-0.01690.02710.02140.0315
lamp1566.66670.51180.37300.75980.10510.01590.03220.08150.12040.02060.03450.06120.1027
tray1513.33330.07840.19400.55560.01210.00500.01030.00820.00270.00340.00770.00400.0074
roll of paper towel156.66670.05030.17460.6801-0.00530.01140.0042-0.00200.00340.00210.0034
microwave156.66670.08680.20300.7724-0.03780.07500.0136-0.00890.00880.00920.0086
pan1520.00000.13950.27110.65060.14240.01170.02740.01050.00370.00440.00890.00560.0084
oven1421.42860.18350.30010.71070.17170.03970.07130.02840.02600.00790.01030.01230.0162
router140.00000.01820.0314--0.01820.0314--0.00490.00550.00490.0055
basketball1435.71430.21950.30560.61130.07080.00190.00330.00760.00440.00110.00080.00340.0041
folder1414.28570.10810.25790.71550.02670.00690.01750.01440.00280.00270.00220.00440.0048
sponge140.00000.00200.0052--0.00200.0052--0.00020.00040.00020.0004
baseball bat1323.07690.17000.32240.73520.03150.00050.00150.02230.01540.00170.00220.00640.0112
garbage1384.61540.65870.30410.77850.09170.00000.00000.02340.01540.00310.00150.02030.0160
orange130.00000.00060.0011--0.00060.0011--0.00040.00030.00040.0003
watch130.00000.00050.0014--0.00050.0014--0.00010.00010.00010.0001
teddy bear1346.15380.35910.39990.77130.06930.00580.01520.02150.01720.00140.00080.01070.0152
dishsponge130.00000.00090.0023--0.00090.0023--0.00020.00030.00020.0003
postcard130.00000.00040.0009--0.00040.0009--0.00020.00060.00020.0006
baseball1216.66670.10750.25220.64270.11050.00040.00130.01460.01710.00290.00380.00480.0077
board120.00000.00110.0031--0.00110.0031--0.00140.00360.00140.0036
plunger1154.54550.34390.32970.62960.04370.00110.00240.00790.00350.00340.00360.00580.0041
paper110.00000.00470.0100--0.00470.0100--0.00200.00230.00200.0023
clock110.00000.00020.0004--0.00020.0004--0.00010.00020.00010.0002
pot119.09090.07110.22690.7550-0.00270.00590.0129-0.00120.00120.00230.0037
cart1145.45450.38990.42090.82380.08030.02830.06350.08920.04490.05820.07440.07230.0619
wallet1040.00000.30330.38410.74620.08040.00810.01370.01430.00560.00440.00390.00840.0067
dogbed1070.00000.52470.37640.74950.12600.00000.00000.02800.01910.00530.00830.02120.0195
corner1030.00000.27300.41410.87040.05260.01690.03690.16700.10250.04230.03210.07970.0816
ball933.33330.19420.29270.58260.05750.00000.00000.00760.00550.00300.00350.00450.0045
stool977.77780.58700.34680.75470.11270.00000.00000.02760.01930.00380.00050.02230.0198
paper towel roll911.11110.10210.24080.7293-0.02370.05530.0109-0.00180.00310.00280.0042
bat90.00000.00030.0009--0.00030.0009--0.00800.01120.00800.0112
faucet911.11110.09850.26130.7912-0.01190.03020.0384-0.00140.00140.00550.0124
ladle90.00000.00690.0136--0.00690.0136--0.00100.00160.00100.0016
alarm clock825.00000.19110.35260.76130.05770.00110.00210.01050.00480.00390.00720.00550.0070
roll80.00000.00020.0007--0.00020.0007--0.00180.00310.00180.0031
dinner80.00000.00030.0005--0.00030.0005--0.00030.00030.00030.0003
handkerchief holder70.00000.00170.0046--0.00170.0046--0.00170.00240.00170.0024
machine728.57140.19120.32840.66920.08660.00000.00000.01120.00570.01100.02030.01100.0167
egg60.00000.00040.0010--0.00040.0010--0.00020.00020.00020.0002
crate616.66670.11410.27830.6821-0.00050.00100.0240-0.00260.00220.00620.0089
tennis racket616.66670.12670.27100.6774-0.01660.02860.0099-0.00510.00700.00590.0065
hat50.00000.02340.0469--0.02340.0469--0.00450.00560.00450.0056
desk560.00000.56040.45220.88870.01490.06800.09610.15880.05810.02920.02730.10700.0832
coffee machine540.00000.28780.35580.67420.07950.03030.03510.03490.02780.01990.02400.02590.0234
tissue50.00000.00000.0000--0.00000.0000--0.00040.00070.00040.0007
pants40.00000.00230.0046--0.00230.0046--0.00560.00580.00560.0058
console40.00000.06350.1270--0.06350.1270--0.01960.02380.01960.0238
shelving unit450.00000.40140.43940.77760.10970.02530.03580.10640.08050.01240.00460.05940.0715
cloth40.00000.11910.2382--0.11910.2382--0.00340.00620.00340.0062
handkerchiefs40.00000.00390.0077--0.00390.0077--0.00030.00030.00030.0003
racket40.00000.00000.0000--0.00000.0000--0.00480.00820.00480.0082
coat30.00000.06530.1130--0.06530.1130--0.00480.00680.00480.0068
cell phone30.00000.00000.0000--0.00000.0000--0.00180.00150.00180.0015
laundry hamper3100.00000.79980.08530.79980.0853--0.03500.0209--0.03500.0209
coffeemachine333.33330.24440.42090.7304-0.00140.00200.0152-0.00700.00840.00970.0076
freshwater30.00000.00290.0049--0.00290.0049--0.01320.01250.01320.0125
press333.33330.26790.41140.7416-0.03100.04390.0345-0.00730.00290.01640.0158
bunk366.66670.59920.52030.89870.05350.0000-0.09860.03180.0015-0.06620.0604
coffee cup20.00000.01500.0212--0.01500.0212--0.01120.01500.01120.0150
fabric20.00000.00000.0000--0.00000.0000--0.00400.00570.00400.0057
journal20.00000.00000.0000--0.00000.0000--0.00010.00010.00010.0001
futon2100.00000.86530.12880.86530.1288--0.11090.0686--0.11090.0686
booklet250.00000.31470.29720.5248-0.1046-0.0055-0.0152-0.01030.0068
cap20.00000.00000.0000--0.00000.0000--0.00400.00570.00400.0057
boiler2100.00000.71880.03630.71880.0363--0.01380.0023--0.01380.0023
side table2100.00000.73650.25720.73650.2572--0.11570.0987--0.11570.0987
pillowcase20.00000.00060.0008--0.00060.0008--0.00080.00040.00080.0004
slippers20.00000.00960.0007--0.00960.0007--0.00640.00890.00640.0089
settee250.00000.41210.58290.8243-0.0000-0.0468-0.0013-0.02400.0322
soapbar20.00000.00000.0000--0.00000.0000--0.00000.00000.00000.0000
fourposter250.00000.41130.58170.8226-0.0000-0.0933-0.0112-0.05230.0581
sofa_bed2100.00000.84760.08030.84760.0803--0.11770.1375--0.11770.1375
servery250.00000.37620.53200.7524-0.0000-0.0536-0.0391-0.04630.0102
safe250.00000.34790.48950.6940-0.0017-0.0081-0.0016-0.00490.0046
novel20.00000.00000.0000--0.00000.0000--0.00140.00140.00140.0014
polaroid1100.00000.6181-0.6181---0.0121---0.0121-
volume10.00000.0007---0.0007---0.0002-0.0002-
ballpoint10.00000.0000---0.0000---0.0000-0.0000-
boots10.00000.0192---0.0192---0.0019-0.0019-
hoodie10.00000.0000---0.0000---0.0016-0.0016-
rose1100.00000.6884-0.6884---0.0161---0.0161-
boot10.00000.0000---0.0000---0.0008-0.0008-
pocketpc10.00000.0000---0.0000---0.0016-0.0016-
guidebook10.00000.0000---0.0000---0.0002-0.0002-
container10.00000.0000---0.0000---0.0007-0.0007-
shoe10.00000.0192---0.0192---0.0019-0.0019-
t-shirt10.00000.0000---0.0000---0.0022-0.0022-
cola10.00000.0000---0.0000---0.0010-0.0010-
shoes10.00000.0000---0.0000---0.0019-0.0019-
clothes10.00000.0000---0.0000---0.0016-0.0016-
locker1100.00000.7127-0.7127---0.0156---0.0156-
freezer1100.00000.9152-0.9152---0.4093---0.4093-
cellular10.00000.0000---0.0000---0.0009-0.0009-
textbook10.00000.0128---0.0128---0.0005-0.0005-
microwave_oven10.00000.0000---0.0000---0.0008-0.0008-
cloakroom10.00000.0476---0.0476---0.0084-0.0084-
cloth horse10.00000.0000---0.0000---0.0022-0.0022-
teeshirt10.00000.0000---0.0000---0.0010-0.0010-
furniture10.00000.0000---0.0000---0.0027-0.0027-
furnishing10.00000.0000---0.0000---0.0027-0.0027-
table decorations10.00000.0000---0.0000---0.0027-0.0027-
bathroom10.00000.0000---0.0000---0.0106-0.0106-

La performance è minore rispetto a prima, prevedibilmente, ma non significativamente peggiore se si pensa che ci stiamo riferendo agli oggetti con i termini più disparati. Certo è che questo non ha risolto il problema.

CogVLM

A questo punto è il caso di testare nuovi modelli di linguaggio per vedere come performano in zero shot su questo dataset. Un modello su cui ho indagato è CogVLM/CogAgent

Alcuni esempi

Ho testato CogVLM su alcuni esempi su cui Kosmos ha fallito, per se valesse la pena tentare con questo nuovo modello di linguaggio:

Esempio 1

In questo esempio era stato chiesto a kosmos2 di individuare il cellulare. Kosmos2 non è stato in grado di individuarlo (addirittura overlapping index 0) Questo fa parte del dataset con lexical references, quindi la performancd di kosmos2 era di meno del 20% di accuratezza.

environmententity_typeimage_bboximage_normalbounding_boxkosmos_bounding_boxoverlap_indexMatch
3548cellRelease1/3548/images/Bedroom/bounding_box/position_2/3548_Bedroom_bounding_box_pos_2_270.jpgRelease1/3548/images/Bedroom/normal/position_2/3548_Bedroom_pos_2_270.jpg(0.6833333333333333, 0.565, 0.74, 0.6166666666666667)(0.328125, 0.328125, 0.578125, 0.515625)0.0False

CogVLM, invece, è riuscito facilmente a localizzarlo e a fare il grounding:

Esempio 2

Ho intenzionalmente dato al modello in input un’immagine impossibile, per vedere cogVLM come reagisce. In questa immagine era chiesto a kosmos2 di trovare la bottiglia di vino (la bottiglia di vino si trova sul tavolo dietro al frigorifero, impossibile da vedere ad occhio nudo).

Ed effettivamente Kosmos2 non era stato in grado di individuarla:

2433bottle of wineRobocup/2433/images/Kitchen/bounding_box/position_3/2433_Kitchen_bounding_box_pos_3_180.jpgRobocup/2433/images/Kitchen/normal/position_3/2433_Kitchen_pos_3_180.jpg(0.43333333333333335, 0.26666666666666666, 0.44166666666666665, 0.3016666666666667)(0.265625, 0.484375, 0.984375, 0.984375)0.0False
CogVLM in effetti non è in grado di trovarla ed azzarda un oggetto sul tavolo in primo piano

Risposta molto più interessante la da CogAgent, che effettivamente, non riuscendo a trovare la bottiglia, fornisce una serie di istruzioni per cercarla.

Questo si adatta perfettamente allo scopo finale di questi esperimenti: cioè modellare le azioni di un robot. Fornisce anche un a grounded operation, che suggerisce di ruotare a destra di 30 gradi. Da notare che CogAGENT non fornisce solamente istruzioni, è assolutamente in grado di fare il grounding delle immagini.

Evaluation con cogVLM

Anche per cogVLM abbiamo scritto uno script ad hoc per fare la valutazione, ma l’input e l’output di questa evaluation è equivalente a quello di Kosmos2. L’input di questa fase è il file già utilizzato: “output_data.csv” e il risultato è un file di output che chiameremo “output_evaluation_cogVLM.csv”

Risultati evaluation

Dopodichè sul risultato dell’evaluation abbiamo computato le solite statistiche:

entity_typeNumber of OccurrencesPercentage of matchesAverage Overlapping IndexStd Average Overlapping IndexAverage Overlapping Index (matched)Std Average Overlapping Index (matched)Average Overlapping Index (Unmatched)Std Average Overlapping Index (Unmatched)Avg BBox Dimensions (Correct)Std Avg BBox Dimensions (Correct)Avg BBox Dimensions (Incorrect)Std Avg BBox Dimensions (Incorrect)Average BBox Dimensions (All)Std Average BBox Dimensions (All)
Total1000039.93000.36900.42210.86940.11950.03640.10000.04610.08640.00600.03170.02200.0630
Painting78164.14850.59150.43770.91450.07410.01360.05660.04420.07260.01420.03260.03340.0630
Cell Phone6069.90100.09120.23280.75120.11750.01870.07370.00300.00240.00070.00400.00090.0039
Remote Control50610.27670.09770.22980.72110.12200.02630.08640.00380.00370.00040.00120.00080.0019
Book46623.60520.20490.33320.77620.12860.02840.08930.00800.00900.00150.00720.00300.0081
Chair43345.26560.42620.42480.87400.12260.05590.11680.03380.03540.01370.01830.02280.0292
Pen3722.41940.03310.12340.69830.12550.01660.06320.00270.00140.00020.00090.00030.0010
Dining Table32782.56880.77020.32300.91070.08230.10480.16960.07260.08480.01690.02590.06290.0806
Key Chain21910.50230.10470.22300.66980.11350.03840.10990.00210.00110.00120.01180.00130.0112
Box21844.95410.37990.41480.82850.10740.01360.05870.01290.02750.00380.00900.00790.0201
Counter Top21852.29360.56820.36610.89420.11380.21090.14730.11840.15250.10110.10790.11010.1331
Bowl20325.12320.21730.35420.81100.12180.01810.06290.00670.00690.00080.00240.00230.0048
House Plant19570.76920.62150.35070.82830.12220.12080.16990.02230.02900.00380.00790.01690.0261
Television18787.16580.79250.28400.89250.09680.11270.18190.06450.08820.01210.01820.05770.0844
Bottle1849.78260.11040.24390.78040.11600.03770.10150.00480.00650.00400.03370.00410.0321
Sofa18186.74030.83790.31570.95890.03800.04610.12720.10060.10430.01220.01180.08890.1018
Plate17610.79550.11620.24630.75390.13450.03900.10210.00490.00380.00140.00370.00180.0039
Statue16741.91620.33580.35380.72080.14390.05800.12430.01260.02020.00310.00680.00710.0148
Laptop16446.95120.41060.38520.79090.14670.07400.13500.01290.01700.00280.00520.00750.0132
Dresser15778.98090.75510.36300.93760.05930.06930.12130.09640.10130.04380.11400.08540.1059
Fridge14682.87670.79170.35300.94970.05350.02730.06260.13630.20240.09150.19550.12870.2013
Bed14381.11890.74510.36110.91180.10690.02920.07530.11010.14310.02960.06070.09490.1352
Knife1395.03600.04680.16470.72850.12650.01070.04130.00390.00260.00080.00290.00100.0030
Fork1381.44930.01990.10690.79910.01080.00850.04970.00600.00240.00040.00120.00050.0014
Garbage Can13281.06060.74480.36290.91790.05520.00410.01560.01990.01910.00360.00650.01680.0185
Pillow13256.81820.49980.38080.80990.12100.09180.14720.00910.01260.00130.00200.00570.0103
Mug12819.53120.17600.32270.80420.11620.02350.07940.00530.00580.00150.00930.00220.0089
Spoon1225.73770.04630.16880.70160.13910.00640.03510.00420.00360.00050.00150.00070.0018
Wine Bottle11440.35090.34850.37760.77750.13840.05820.12560.00500.00860.00760.03950.00660.0309
Bread10934.86240.30350.37900.79540.13000.04020.10480.00710.00800.00170.00420.00360.0063
Arm Chair10971.55960.68090.42830.94730.06420.01040.02900.06630.07170.01770.02890.05250.0662
Spray Bottle10737.38320.35400.37510.79660.14360.08980.15570.00720.00790.00130.00390.00350.0063
Vase10238.23530.32730.39920.81590.13070.02480.07720.00730.01100.00170.00290.00380.0076
Cup9414.89360.13130.28580.79400.11480.01530.05030.00410.00380.00090.00140.00140.0022
Pencil893.37080.04430.15050.76440.11110.01920.06490.00180.00110.00010.00020.00010.0004
Floor Lamp8978.65170.75280.34600.92390.07850.12230.16780.09310.13860.11600.19940.09800.1526
Toaster8743.67820.38070.40270.81910.11520.04070.10080.00930.01330.00170.00220.00500.0097
Kettle8416.66670.15520.30440.81290.08480.02370.06910.01200.01180.00160.00310.00340.0067
Spatula823.65850.03680.15000.75790.13650.00940.04600.00720.00570.00120.00570.00150.0057
Credit Card826.09760.05330.16210.64100.07180.01520.05950.00120.00050.00490.03170.00470.0307
Butter Knife762.63160.02320.10780.63360.06470.00670.03730.00200.00010.00020.00040.00030.0005
Toilet7592.00000.83100.23600.89400.09700.10600.10400.07150.08690.00520.00510.06620.0853
Washing Machine7489.18920.83060.27630.92030.08190.09080.18030.06340.07310.01930.03540.05860.0712
Shelving Unit7376.71230.72110.39790.93570.07010.01400.05530.10700.16340.03100.06080.08930.1492
TV Stand6966.66670.67190.37830.92550.04940.16470.18440.04620.04980.00840.01360.03360.0450
Lettuce6939.13040.37060.38910.82720.12140.07710.12730.00480.00370.00040.00050.00210.0032
Sink6984.05800.79870.28570.91400.08070.19020.18280.05680.06110.03740.03770.05370.0582
Dish Sponge685.88240.05700.19340.79090.15310.01120.04810.00190.00070.00080.00160.00080.0015
Newspaper6811.76470.12080.26820.79540.11850.03080.10030.00870.00680.00080.00170.00170.0037
Potato663.03030.03030.11580.64240.11400.01120.03700.00160.00150.00200.00930.00200.0092
Apple6415.62500.15540.28710.74650.13050.04590.13020.00300.00330.00080.00290.00110.0030
Soap Bottle6423.43750.21980.35750.83970.10660.03000.08710.00610.00520.00170.00290.00270.0040
Watch631.58730.04560.13030.5674-0.03720.11280.0010-0.00020.00040.00020.0004
Side Table6061.66670.55470.43510.88880.09690.01730.05210.03220.03640.01980.03680.02740.0367
Tomato5932.20340.29620.35830.77490.14100.06890.13060.00320.00360.00020.00030.00120.0025
Garbage Bag5989.83050.79610.25460.87540.08280.09640.16310.01560.01800.01060.01760.01510.0178
Pan5414.81480.11490.25070.68680.11810.01540.05980.00940.01100.00160.00390.00270.0060
Salt Shaker5313.20750.14000.29380.85380.04820.03140.09020.00310.00130.00050.00110.00080.0014
Faucet5257.69230.54210.32100.78710.12940.20790.15590.00410.00330.01160.01920.00730.0131
Pepper Shaker5016.00000.14900.29590.77120.13070.03050.10870.00240.00180.00050.00070.00080.0012
Teddy Bear4686.95650.74730.30720.85780.11290.01060.02600.01220.01700.00090.00040.01080.0163
Toilet Paper4630.43480.30090.35910.79810.13020.08330.14020.00630.00650.00040.00060.00220.0045
Stool4477.27270.68520.37320.88120.08260.01890.04320.01850.02510.00370.00400.01510.0229
Candle4323.25580.21660.32260.74990.12990.05490.12670.00370.00410.00060.00150.00130.0027
Baseball Bat4360.46510.49550.40660.80940.12660.01550.06380.01300.01750.00550.01070.01010.0155
Cart4278.57140.75460.39830.95950.03700.00360.01080.07530.07110.01050.02570.06140.0693
Microwave4052.50000.45110.43930.85700.10950.00240.00900.01200.01150.00570.00780.00900.0103
Desk Lamp4055.00000.50720.41090.85190.13240.08580.15470.01970.02120.00330.00690.01230.0182
Plunger3976.92310.63700.30520.78520.11140.14330.20230.00550.00450.00150.00120.00460.0043
Basket Ball3778.37840.65470.35850.83530.09490.00000.00000.00560.00610.00110.00120.00460.0057
Dog Bed3444.11760.43620.45700.92490.07460.05040.15000.03130.02570.00540.00810.01690.0221
Ladle336.06060.07920.17300.61100.07840.04490.10800.00280.00320.00120.00380.00130.0037
Pot3336.36360.33310.40780.83510.14880.04630.12800.01590.01690.00780.01730.01080.0173
Paper Towel Roll3221.87500.18520.35650.84220.10890.00130.00390.00770.00720.00200.00330.00320.0049
Alarm Clock2944.82760.38140.38950.77950.15010.05790.12760.00640.00680.00230.00380.00410.0056
Tissue Box2133.33330.31390.40520.85210.06630.04480.12890.00780.00490.00100.00110.00330.0044
Egg2015.00000.13400.27160.71440.03490.03160.11480.00150.00080.00020.00030.00040.0006
Cloth1723.52940.21390.35950.83800.03920.02190.04690.00510.00250.00100.00170.00190.0026
Safe1650.00000.45400.46050.89850.04880.00940.01780.01840.02160.00470.00410.01160.0166
Desk1573.33330.65420.41670.88910.12430.00830.01670.06370.05550.02390.04150.05310.0538
Coffee Machine1464.28570.60910.38080.85980.13660.15790.19550.00840.00490.00700.01150.00790.0075
Tennis Racket1323.07690.22560.36580.82590.13560.04550.13470.02260.02990.00140.00150.00630.0154
Laundry Hamper785.71430.80100.35430.93450.03080.0000-0.01310.01000.0039-0.01180.0098
Table Top Decor633.33330.26010.30490.63410.18300.07320.06280.00340.00110.00580.00880.00500.0070
Vacuum Cleaner580.00000.70590.39870.88240.06550.0000-0.00890.00390.0002-0.00710.0052
Soap Bar40.00000.03650.0723--0.03650.0723--0.00010.00000.00010.0000
Room Decor425.00000.20430.40860.8172-0.00000.00000.0191-0.00700.00340.01000.0067
Dumbbell250.00000.47340.66940.9467-0.0000-0.0295-0.0001-0.01480.0208
Coffee Table1100.00000.9273-0.9273---0.0194---0.0194-
Ottoman1100.00000.9822-0.9822---0.0872---0.0872-
I risultati dell’evaluation in zero shot sono molto promettenti: abbiamo una precisione del 39.9% che indica un miglioramento sostanziale rispetto alle performance di kosmos2:
Performance Kosmos2
entity_typeNumber of OccurrencesPercentage of Matches
Total1000022.2700
Performance cogVLM
entity_typeNumber of OccurrencesPercentage of matches
Total1000039.9300
Un miglioramento che si avvicina al doppio della percentuale di match su tutte le istanze.
entity_typePercentage of matches cogVLMPercentage of matches Kosmos2
Total39.930023.05001
Painting64.148539.94881
Cell Phone9.90101.65021
Remote Control10.27670.59291
Book23.60528.79831
Chair45.265632.33261
Pen2.41940.00001
Dining Table82.568863.91441
Key Chain10.50230.00001
Box44.954112.38531
Counter Top52.293641.28441
Bowl25.12326.40391
House Plant70.769246.66671
Television87.165866.84491
Bottle9.78265.97831
Sofa86.740370.71821
Plate10.79553.40911
Statue41.916219.16171
Laptop46.951219.51221
Dresser78.980962.42041
Fridge82.876761.64381
Bed81.118960.13991
Knife5.03601.43881
Fork1.44930.72461
Garbage Can81.060659.09091
Pillow56.818214.39391
Mug19.53126.25001
Spoon5.73770.00001
Wine Bottle40.35097.01751
Bread34.86249.17431
Arm Chair71.559659.63301
Spray Bottle37.383217.75701
Vase38.235322.54901
Cup14.89363.19151
Pencil3.37081.12361
Floor Lamp78.651762.92131
Toaster43.678213.79311
Kettle16.66679.52381
Spatula3.65850.00001
Credit Card6.09760.00001
Butter Knife2.63160.00001
Toilet92.000062.66671
Washing Machine89.189262.16221
Shelving Unit76.712352.05481
TV Stand66.666717.39131
Lettuce39.130410.14491
Sink84.058075.36231
Dish Sponge5.88240.00001
Newspaper11.76472.94121
Potato3.03030.00001
Apple15.62501.56251
Soap Bottle23.437512.50001
Watch1.58730.00001
Side Table61.666735.00001
Tomato32.20346.77971
Garbage Bag89.830567.79661
Pan14.81485.55561
Salt Shaker13.20751.88681
Faucet57.69233.84621
Pepper Shaker16.00002.00001
Teddy Bear86.956550.00001
Toilet Paper30.43486.52171
Stool77.272736.36361
Candle23.25589.30231
Baseball Bat60.465116.27911
Cart78.571457.14291
Microwave52.500010.00001
Desk Lamp55.000017.50001
Plunger76.923117.94871
Basket Ball78.378435.13511
Dog Bed44.117632.35291
Ladle6.06060.00001
Pot36.363621.21211
Paper Towel Roll21.87506.25001
Alarm Clock44.827624.13791
Tissue Box33.33330.00001
Egg15.00000.00001
Cloth23.52940.00001
Safe50.000025.00001
Desk73.333346.66671
Coffee Machine64.285742.85711
Tennis Racket23.07697.69231
Laundry Hamper85.714357.14291
Table Top Decor33.33330.00001
Vacuum Cleaner80.000060.00001
Soap Bar0.00000.0000X
Room Decor25.00000.00001
Dumbbell50.000050.0000X
Coffee Table100.0000100.00001
Ottoman100.0000100.00001

C’è un miglioramento evidente: in tutte le istanze cogVLM performa meglio di kosmos.

Alcuni esempi

Qui sotto ho riportato alcuni esempi di confronto tra la performance di cogVLM e di kosmos2.

In questo esempio è chiaro che cogVLM riesca a trovare l’entità “carrello” anche in una situazione in cui è parzialmente visibile, mentre kosmos non riusciva ad individuarlo, trovando invece un lavandino.

Anche questi esempi illustrano le capacità superiori di cogVLM nel trovare oggetti più piccoli e parzialmente ostruiti alla vista, in questo caso una cassettiera e una mela.

Un problema ricorrente di kosmos era quello di confondere sedie e tavoli, sembra che questo problema non sia presente, anche alla luce dell’ottima performance che kosmos ha sell’entità sedia:

entity_typePercentage of matches cogVLMPercentage of Matches kosmos
Chair45.265625.0564

Un’altra cosa interessante è che cogVLM riesce a distinguere bene tra poltrona e Sofa. Cosa che invece kosmos faceva con difficoltà:

Inoltre qui abbiamo alcuni esempi di oggetti di piccole dimensioni correttamente riconosciuti da kosmos:

Analisi delle performance su bounding box di piccole dimensioni

Come per kosmos ho analizzato la performance del modello al dipendere dalle dimensioni medie del bounding box.

Anche in questo caso sembra esserci una dipendenza lineare tra la dimensione del bounding box e percentuale di match, almeno per la prima parte del grafico:

Anche se migliora molto più rapidamente di kosmos: cogVLM supera una percentuale di match del 40% già per valori inferiori allo 0.01 Mentre per kosmos, alla stessa dimensione, superavano appena il 20%.

Inoltre ricordiamo che kosmos la curva si appiattiva su valori di match del 60% circa. Mentre per Kosmos questi valori raggiungono quasi il 90% anche per entità con molte istanze ( e quindi molto affidabili )

Paternity Test cogVLM

Anche con cogVLM abbiamo provato a sfruttare la paternità delle entità per migliorare la performance. A differenza di quanto visto con Kosmos i risultati sono effettivamente migliorati, anche se marginalmente.

entity_typeNumber of OccurrencesPercentage of matchesAverage Overlapping IndexStd Average Overlapping IndexAverage Overlapping Index (matched)Std Average Overlapping Index (matched)Average Overlapping Index (Unmatched)Std Average Overlapping Index (Unmatched)Avg BBox Dimensions (Correct)Std Avg BBox Dimensions (Correct)Avg BBox Dimensions (Incorrect)Std Avg BBox Dimensions (Incorrect)Average BBox Dimensions (All)Std Average BBox Dimensions (All)
Total1000040.64000.37860.42020.86770.12000.04370.10770.04530.08580.00610.03200.02200.0630
Painting78163.50830.58530.43800.91280.07400.01530.06320.04470.07290.01380.03190.03340.0630
Cell Phone60610.39600.10020.24050.76350.11560.02320.07730.00310.00250.00070.00400.00090.0039
Remote Control50610.07910.10250.22880.72310.12850.03290.09100.00370.00370.00050.00130.00080.0019
Book46624.67810.21820.33420.77250.12900.03660.09450.00740.00870.00160.00740.00300.0081
Chair43344.80370.42350.42360.87370.12140.05800.11990.03390.03560.01380.01830.02280.0292
Pen3722.95700.03990.14050.74420.12530.01840.06550.00280.00130.00020.00090.00030.0010
Dining Table32782.56880.76770.32420.90860.08390.10030.17020.07260.08480.01690.02590.06290.0806
Key Chain21910.95890.10910.22610.66970.11550.04010.11050.00190.00110.00120.01190.00130.0112
Box21853.21100.45940.41100.83430.10280.03320.07780.01240.02650.00270.00390.00790.0201
Counter Top21853.66970.57660.36440.89180.11380.21150.14930.11630.15110.10300.10890.11010.1331
Bowl20327.58620.23950.35540.79220.13440.02890.07820.00550.00590.00110.00360.00230.0048
House Plant19570.76920.63280.33740.82890.12280.15810.18220.02210.02910.00440.00830.01690.0261
Television18786.63100.78890.29000.89370.09790.10990.18130.06480.08840.01210.01780.05770.0844
Bottle18412.50000.13300.26380.76760.13090.04230.10510.00430.00590.00400.03430.00410.0321
Sofa18186.74030.83700.31530.95790.03680.04610.12720.10060.10430.01220.01180.08890.1018
Plate17614.77270.14930.27520.75590.13660.04420.10250.00490.00380.00120.00360.00180.0039
Statue16748.50300.39580.34220.71200.14570.09810.15410.01140.01930.00300.00650.00710.0148
Laptop16449.39020.44030.37610.78850.14860.10050.15150.01270.01670.00250.00460.00750.0132
Dresser15777.70700.74300.37080.93680.05940.06740.11740.09630.10130.04740.11420.08540.1059
Fridge14682.87670.79320.35240.95140.04210.02730.06260.13630.20240.09150.19550.12870.2013
Bed14379.72030.73590.36680.91350.10170.03750.08310.11170.14390.02920.05890.09490.1352
Knife1395.75540.05420.17590.72140.11340.01350.05570.00360.00260.00080.00290.00100.0030
Fork1381.44930.02160.10940.81120.02790.01000.05250.00600.00240.00040.00120.00050.0014
Garbage Can13281.06060.74410.36260.91700.05570.00410.01560.01990.01910.00360.00650.01680.0185
Pillow13257.57580.51210.38140.81920.11170.09530.14940.00890.01250.00140.00220.00570.0103
Mug12820.31250.19120.32960.81000.11550.03350.09790.00510.00580.00150.00940.00220.0089
Spoon1225.73770.04820.17270.72100.13690.00730.03460.00420.00360.00050.00150.00070.0018
Wine Bottle11442.10530.36730.38260.78590.13830.06290.13080.00480.00850.00790.04010.00660.0309
Bread10930.27520.29040.36980.81790.12450.06130.12130.00800.00830.00170.00410.00360.0063
Arm Chair10971.55960.68040.42850.94670.06830.01040.02900.06630.07170.01770.02890.05250.0662
Spray Bottle10736.44860.35810.37090.80360.14390.10250.15520.00730.00790.00140.00380.00350.0063
Vase10236.27450.32940.39550.82610.12780.04670.11810.00750.01120.00170.00290.00380.0076
Cup9418.08510.15630.29880.77340.11910.02010.04800.00380.00350.00090.00140.00140.0022
Pencil893.37080.04650.14790.74640.11160.02210.06690.00180.00110.00010.00020.00010.0004
Floor Lamp8978.65170.75110.34590.92180.08230.12230.16780.09310.13860.11600.19940.09800.1526
Toaster8745.97700.40840.39150.80750.12010.06870.13370.00890.01310.00170.00220.00500.0097
Kettle8416.66670.16620.31060.82300.10960.03490.09380.01220.01160.00160.00310.00340.0067
Spatula823.65850.04830.17180.80340.17750.01960.08410.00720.00570.00120.00570.00150.0057
Credit Card826.09760.05810.17020.67030.07870.01830.06540.00120.00050.00490.03170.00470.0307
Butter Knife762.63160.02430.10680.61890.08540.00820.04080.00200.00010.00020.00040.00030.0005
Toilet7592.00000.82940.22950.88990.09800.13390.13310.07150.08690.00520.00510.06620.0853
Washing Machine7487.83780.83300.27320.92890.04990.14110.21940.06240.07330.03090.04810.05860.0712
Shelving Unit7376.71230.72110.39800.93580.07070.01400.05530.10700.16340.03100.06080.08930.1492
TV Stand6965.21740.66240.37510.92110.05020.17730.18650.04290.04530.01600.03960.03360.0450
Lettuce6940.57970.37960.38710.81600.14300.08160.12890.00460.00380.00040.00050.00210.0032
Sink6984.05800.79730.28530.91240.08150.19030.18290.05680.06110.03740.03770.05370.0582
Dish Sponge684.41180.05570.17410.75830.12500.02330.08400.00190.00080.00080.00150.00080.0015
Newspaper6814.70590.14030.28360.77720.14880.03050.08740.00770.00640.00070.00160.00170.0037
Potato666.06060.05450.16230.64920.14310.01620.04880.00100.00110.00200.00950.00200.0092
Apple6417.18750.19120.29990.75410.12640.07430.15800.00270.00330.00080.00290.00110.0030
Soap Bottle6428.12500.26470.37050.82830.11270.04420.10280.00510.00430.00180.00350.00270.0040
Watch631.58730.04000.12000.6040-0.03090.09670.0010-0.00020.00040.00020.0004
Side Table6060.00000.53900.43780.88720.09780.01660.05110.03270.03670.01950.03600.02740.0367
Tomato5932.20340.30350.36490.79030.14330.07220.13520.00320.00360.00020.00030.00120.0025
Garbage Bag5988.13560.78390.27410.87790.08030.08540.15970.01590.01800.00940.01640.01510.0178
Pan5416.66670.14930.28090.73790.14150.03160.07990.01030.01110.00120.00280.00270.0060
Salt Shaker5313.20750.15590.30000.86300.05540.04830.11820.00310.00130.00050.00110.00080.0014
Faucet5259.61540.55510.29760.76850.13910.24000.14830.00380.00330.01240.01930.00730.0131
Pepper Shaker5016.00000.16200.29810.78290.14130.04370.11500.00240.00180.00050.00070.00080.0012
Teddy Bear4684.78260.75390.29470.86820.09920.11730.17670.01250.01710.00090.00030.01080.0163
Toilet Paper4626.08700.27340.35930.83880.10990.07380.12100.00730.00650.00040.00060.00220.0045
Stool4477.27270.68140.37210.87590.09210.02020.04390.01850.02510.00370.00400.01510.0229
Candle4325.58140.26140.32170.73470.14220.09870.16390.00350.00400.00060.00150.00130.0027
Baseball Bat4360.46510.49690.40720.81170.12350.01550.06380.01300.01750.00550.01070.01010.0155
Cart4278.57140.75360.39960.95910.03680.00000.00000.07530.07110.01050.02570.06140.0693
Microwave4067.50000.58760.40080.85090.10710.04090.13270.01150.01160.00390.00350.00900.0103
Desk Lamp4060.00000.54070.40930.85520.12190.06910.13120.01930.02070.00180.00200.01230.0182
Plunger3976.92310.63400.30560.78360.11100.13510.18710.00550.00450.00150.00120.00460.0043
Basket Ball3778.37840.65690.35960.83620.11070.00700.01990.00560.00610.00090.00090.00460.0057
Dog Bed3441.17650.40780.45250.92040.07630.04910.15010.03180.02660.00640.00900.01690.0221
Ladle333.03030.08220.17070.6664-0.06390.13680.0050-0.00120.00370.00130.0037
Pot3348.48480.42070.40390.80270.14630.06110.15120.01540.01760.00640.01630.01080.0173
Paper Towel Roll3225.00000.21180.37450.84380.11210.00110.00350.00740.00670.00190.00330.00320.0049
Alarm Clock2948.27590.40410.38800.77700.12970.05600.12910.00600.00670.00240.00390.00410.0056
Tissue Box2142.85710.41020.43270.88190.05220.05640.14050.00680.00470.00060.00070.00330.0044
Egg2015.00000.14000.26570.71440.03490.03860.10440.00150.00080.00020.00030.00040.0006
Cloth1723.52940.22260.36490.84880.05530.03000.07630.00620.00130.00060.00070.00190.0026
Safe1656.25000.49290.45050.87360.08820.00340.00900.01660.02100.00510.00420.01160.0166
Desk1573.33330.65430.41670.88920.12430.00830.01660.06370.05550.02390.04150.05310.0538
Coffee Machine1457.14290.53430.43090.87550.15220.07940.12550.00900.00490.00650.01040.00790.0075
Tennis Racket1323.07690.25890.37420.86090.13080.07820.16070.02260.02990.00140.00150.00630.0154
Laundry Hamper785.71430.80100.35430.93450.03090.0000-0.01310.01000.0039-0.01180.0098
Table Top Decor633.33330.27060.41260.80170.06630.00500.01000.00340.00110.00580.00880.00500.0070
Vacuum Cleaner580.00000.70590.39870.88240.06550.0000-0.00890.00390.0002-0.00710.0052
Soap Bar40.00000.11390.1950--0.11390.1950--0.00010.00000.00010.0000
Room Decor425.00000.32230.39790.8172-0.15730.27250.0191-0.00700.00340.01000.0067
Dumbbell250.00000.47560.67260.9511-0.0000-0.0295-0.0001-0.01480.0208
Coffee Table1100.00000.9209-0.9209---0.0194---0.0194-
Ottoman1100.00000.9822-0.9822---0.0872---0.0872-

Riseptto a prima si è registrato un miglioramento di poco meno di un punto percentuale:

entity_typeNumber of OccurrencesPercentage of matches with paternity
Total1000040.6400
entity_typeNumber of OccurrencesPercentage of matches
Total1000039.9300
Anche in questo caso possiamo concludere che non è il prompt engineering la chiave per per migliorare sensibilmente le performance di questo modello.

Qui ci sono le entità che hanno migliorato il numero di match con l’approccio con paternità

entity_typemiglioramento in percentuale
Microwave15.0
Pot12.121200000000002
Tissue Box9.523800000000001
Box8.256900000000002
Statue6.586799999999997
Safe6.25
Desk Lamp5.0
Soap Bottle4.6875
Plate3.9772
Alarm Clock3.4483000000000033
Cup3.1915000000000013
Paper Towel Roll3.125
Potato3.0303
Newspaper2.9412000000000003
Bottle2.7173999999999996
Bowl2.463000000000001
Laptop2.439
Candle2.325599999999998
Toaster2.2988
Faucet1.923099999999998
Pan1.8518999999999988
Wine Bottle1.7543999999999969
Apple1.5625
Lettuce1.449300000000001
Counter Top1.376100000000001
Book1.0729000000000006
Mug0.7813000000000017
Pillow0.7576000000000036
Knife0.7194000000000003
Total0.7100000000000009
Pen0.5375999999999999
Cell Phone0.495000000000001
Key Chain0.4565999999999999

Alcune entità però hanno peggiorato il loro rendimento con l’approccio con paternità:

entity_typePeggioramento in percentuale
Coffee Machine7.142800000000008
Bread4.587199999999999
Toilet Paper4.347799999999999
Ladle3.0303
Dog Bed2.941100000000006
Teddy Bear2.1739000000000033
Vase1.960799999999999
Garbage Bag1.694900000000004
Side Table1.6666999999999987
Dish Sponge1.4705999999999992
TV Stand1.449300000000008
Bed1.3986000000000018
Washing Machine1.3513999999999982
Dresser1.2739000000000118
Spray Bottle0.9346000000000032
Painting0.6402000000000001
Television0.5348000000000042
Chair0.4619
Remote Control0.19759999999999955

Molte entità, invece sono rimaste uguali

entity_typeDifference
Coffee Table0.0
Cart0.0
Plunger0.0
Basket Ball0.0
House Plant0.0
Dining Table0.0
Egg0.0
Cloth0.0
Desk0.0
Dumbbell0.0
Stool0.0
Tennis Racket0.0
Laundry Hamper0.0
Table Top Decor0.0
Vacuum Cleaner0.0
Soap Bar0.0
Room Decor0.0
Baseball Bat0.0
Arm Chair0.0
Pencil0.0
Shelving Unit0.0
Floor Lamp0.0
Kettle0.0
Spatula0.0
Credit Card0.0
Butter Knife0.0
Toilet0.0
Spoon0.0
Garbage Can0.0
Sofa0.0
Sink0.0
Watch0.0
Fork0.0
Tomato0.0
Fridge0.0
Salt Shaker0.0
Pepper Shaker0.0
Ottoman0.0

C’è da notare quindi, che nonostante la percentuale totale dei match non sia significativamente cambiata con il nuovo approccio, alcune entità, invece, hanno avuto un netto miglioramento. È importante anche notare che tutte le entità che sono migliorate sono entità di piccole dimensioni che si potevano trovare posti su oggetti eterogenei, mentre le entità che hanno registrato un peggioramento, contengono alcune di grandi dimensioni, come

entity typepeggioramento in percentuale
TV Stand1.449300000000008
Bed1.3986000000000018
Washing Machine1.3513999999999982
Dresser1.2739000000000118

Esempi

Nel github messo a disposizione potete trovare uno script chiamato definitivo_display.py. È un tool da linea di comando scritto in python che permette di visualizzare la differenza tra l’output dei file csv dopo l’evaluation. lanciandolo con l’opzione —mismatch_only si possono vedere le istanze in cui c’è stato un mismatch tra le entità individuate con paternity prompt e quelle individuate senza paternity prompt.

 ./definitivo_display.py --mismatch_only

Si può inoltre selezionare una entità specifica da analizzare

./definitivo_display.py --mismatch_only --entity_type Microwave

analizziamo microwave, che è l’entità che è migliorata maggiormente in percentuale, cioè che ha beneficiato di più del prompt engineering

Microwave

In questo particolare esempio si può vedere come specificare la posizione del microonde abbia permesso al modello di trovarlo. È chiaramente difficile, anche per un umano, discernere quale tra le due masse grigie era effettivamente il microonde, sapere che l’oggetto si trovava sul tavolo ha permesso a cogVLM di fare una predizione più appropriata che poi si è rivelata giusta.

Coffee Machine

Procediamo con un esmpio neggativo, in cui il prompt engineering ha “confuso” il modell. È il caso di coffee machine

entity_typePeggioramento in percentuale
Coffee Machine7.142800000000008
Il peggioramento però è dovuto ad una sola immagine: quindi poco significativo.
Così è anche per Toilet paper e Ladle.

Bread

Un peggioramento un po’ più significativo lo ha avuto “Bread”

A mio parere questo peggioramento è dovuto al fatto che il modello avrebbe già correttamente collocato il pane sul tavolo, ed il prompt lo ha semplicemente “confuso”. Un’altra opzione è che il gran numero di oggetti sul tavolo renda più difficile al modello scegliere consistentemente la stessa entità (e che dunque questo cambio sia dovuto al caso).

Conclusioni su Paternity

È abbastanza evidente che paternity permetta di migliorare le performance in maniera abbastanza consistente, il miglioramento si registra nei piccoli oggetti, ed è poco influente sulla statistica finale principalmente perchè molte entità sono invece senza un’entità padre, specialmente quelle più grandi.

Conclusioni

Questa analisi mette in luce un’evidente superiorità di cogVLM sul task osservato su tutti i punti di vista: individuazione di bounding box di piccole dimensioni, di grandi dimensioni, parzialmente ostruiti e questo si traduce in una overall performance dominante. Un fine tuning su questo task potrebbe migliorare ulteriormente i risultati ottenuti.

DA FARE

AGGIUNGERE I CHILDREN COME DA FILE (fatto) aggiungi lexical reference nel grounding per ogni entità. (obiezione) Fai file output.csv + shuffle head 10k e poi te lo salvi (fatto: shuffled_output_data.csv) spiega perchè hai scelto 0.5 (fatto) spiega come hai calcolato le statistiche (fatto) deviazione standard dalla media(fatto) grafici sulle x ci metti le entità e sulle y i numeri (fatto in progress aggiungi piu grafici) verifica a mano delle entità e delle lexical references (fatto) ricomputa statistiche vecchie con nuovi algoritmi(fatto) ricomputa statistiche nuove senza children(forse?)

una volta fatto: scrivi a claudiu vediamo che esce fuori.

Da fare per lunedi

vedi cos’è cogVLM e Cog Agent fai evaluation sulle lexical references (fatt0) Differenza tra i due Prendi 2-3 esempi buono di kosmos e prova con la preview Prendi 2-3 che non è andato bene vedere se ci sono oggetti non visibili (fatto) quando è un children usa il padre 100 esempi e confronta con quell’altro. Aggrega per entity type sulle lexical references

Da fare per giovedì

esempio in cui sbaglia con padre e non sbaglia senza (fatto) Scrivi osservazione sul fatto che gli oggetti che possono contenere qualcosa non hanno oggetti all’interno(fatto) Aggiungi osservazione sul prompt dei genitori(fatto) metti i trattini (fatto)3 Scrivi un paragrafo summary introduttivo. “questo progetot utilizza. modelli multimodali per fare grounding delle entitò in un ambiente sono stati sperimentati kosmos/cogAgent. Kosmos non ha funzionato, gli sono stati dati ambienti di procThor e gli è stato chiesto il bounding box. Versione 1 con entity type, versione 2 con parents etc… ” Fai ultima tabella riassuntiva con tutti i risultati. E fai una serie di tabelle che mostrano solo un’entità.

Il mio dataset

il mio dataset è il dataset_20240206

Per prossima volta

segnati quali e quante istanze fanno 0% in kosmos e quali e quante in cogVLM aggiungo esempi in cui kosmos sbaglia

Where is the Cell phone on the Table?