diff --git a/examples/model_diagnostics/custom_metrics_basics.ipynb b/examples/model_experiments/model_diagnostics/custom_metrics_basics.ipynb similarity index 97% rename from examples/model_diagnostics/custom_metrics_basics.ipynb rename to examples/model_experiments/model_diagnostics/custom_metrics_basics.ipynb index 6c5c54ffb..ea7312f6a 100644 --- a/examples/model_diagnostics/custom_metrics_basics.ipynb +++ b/examples/model_experiments/model_diagnostics/custom_metrics_basics.ipynb @@ -16,27 +16,17 @@ "metadata": {}, "source": [ "\n", - "\n", "\n", "\n", "\n", - "\n", "" ], "cell_type": "markdown" }, - { - "metadata": {}, - "source": [ - " \n", - "\n", - " \n", - "" - ], - "cell_type": "markdown" - }, { "metadata": {}, "source": [ diff --git a/examples/model_diagnostics/custom_metrics_demo.ipynb b/examples/model_experiments/model_diagnostics/custom_metrics_demo.ipynb similarity index 70% rename from examples/model_diagnostics/custom_metrics_demo.ipynb rename to examples/model_experiments/model_diagnostics/custom_metrics_demo.ipynb index 42b8575d1..d18119c2c 100644 --- a/examples/model_diagnostics/custom_metrics_demo.ipynb +++ b/examples/model_experiments/model_diagnostics/custom_metrics_demo.ipynb @@ -17,12 +17,12 @@ "source": [ "\n", "\n", - "\n", "\n", "\n", "\n", - "\n", "" ], @@ -105,6 +105,20 @@ { "metadata": {}, "source": [ + "radio_prediction = lb_types.ClassificationAnnotation(\n", + " name=\"radio_question\",\n", + " value=lb_types.Radio(\n", + " answer = lb_types.ClassificationAnswer(\n", + " name = \"second_radio_answer\", confidence=0.5,\n", + " custom_metrics=[{ 'name': 'iou', 'value': 0.1 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }],\n", + " )\n", + " )\n", + ")\n", "\n", "# NDJSON\n", "radio_prediction_ndjson = {\n", @@ -135,10 +149,42 @@ { "metadata": {}, "source": [ + "checklist_prediction = lb_types.ClassificationAnnotation(\n", + " name=\"checklist_question\",\n", + " value=lb_types.Checklist(\n", + " answer = [\n", + " lb_types.ClassificationAnswer(\n", + " name = \"first_checklist_answer\",\n", + " confidence=0.5,\n", + " custom_metrics=[\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]\n", + " ),\n", + " lb_types.ClassificationAnswer(\n", + " name = \"second_checklist_answer\",\n", + " confidence=0.5,\n", + " custom_metrics= [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]\n", + " )\n", + " ]\n", + " )\n", + " )\n", "checklist_prediction_ndjson = {\n", " 'name': 'checklist_question',\n", " 'answer': [\n", - " {'name': 'first_checklist_answer' , 'confidence': 0.5, 'customMetrics': [\n", + " {'name': 'first_checklist_answer' , 'confidence': 0.5,\n", + " 'customMetrics': [\n", " { 'name': 'iou', 'value': 0.5 },\n", " { 'name': 'f1', 'value': 0.33 },\n", " { 'name': 'precision', 'value': 0.55 },\n", @@ -146,7 +192,8 @@ " { 'name': 'tagsCount', 'value': 43 },\n", " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", " ]},\n", - " {'name': 'second_checklist_answer', 'confidence': 0.5, 'customMetrics': [\n", + " {'name': 'second_checklist_answer', 'confidence': 0.5,\n", + " 'customMetrics': [\n", " { 'name': 'iou', 'value': 0.5 },\n", " { 'name': 'f1', 'value': 0.33 },\n", " { 'name': 'precision', 'value': 0.55 },\n", @@ -171,6 +218,43 @@ { "metadata": {}, "source": [ + "nested_radio_prediction = lb_types.ClassificationAnnotation(\n", + " name=\"nested_radio_question\",\n", + " value=lb_types.Radio(\n", + " answer=lb_types.ClassificationAnswer(\n", + " name=\"first_radio_answer\",\n", + " confidence=0.5,\n", + " custom_metrics=[\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " classifications=[\n", + " lb_types.ClassificationAnnotation(\n", + " name=\"sub_radio_question\",\n", + " value=lb_types.Radio(\n", + " answer=lb_types.ClassificationAnswer(\n", + " name=\"first_sub_radio_answer\",\n", + " confidence=0.5,\n", + " custom_metrics=[\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]\n", + " )\n", + " )\n", + " )\n", + " ]\n", + " )\n", + " )\n", + ")\n", + "\n", "nested_radio_prediction_ndjson = {\n", " \"name\": \"nested_radio_question\",\n", " \"confidence\": 0.5 ,\n", @@ -201,6 +285,42 @@ " ]\n", "}\n", "\n", + "nested_checklist_prediction = lb_types.ClassificationAnnotation(\n", + " name=\"nested_checklist_question\",\n", + " value=lb_types.Checklist(\n", + " answer=[lb_types.ClassificationAnswer(\n", + " name=\"first_checklist_answer\",\n", + " confidence=0.5,\n", + " custom_metrics = [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " classifications=[\n", + " lb_types.ClassificationAnnotation(\n", + " name=\"sub_checklist_question\",\n", + " value=lb_types.Checklist(\n", + " answer=[lb_types.ClassificationAnswer(\n", + " name=\"first_sub_checklist_answer\",\n", + " confidence=0.5,\n", + " custom_metrics= [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]\n", + " )]\n", + " ))\n", + " ]\n", + " )]\n", + " )\n", + ")\n", + "\n", "nested_checklist_prediction_ndjson = {\n", " \"name\": \"nested_checklist_question\",\n", " \"confidence\": 0.5 ,\n", @@ -246,6 +366,23 @@ { "metadata": {}, "source": [ + "bbox_prediction = lb_types.ObjectAnnotation(\n", + " name = \"bounding_box\",\n", + " confidence=0.5,\n", + " custom_metrics= [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " value=lb_types.Rectangle(\n", + " start=lb_types.Point(x=1690, y=977), # x = left, y = top\n", + " end=lb_types.Point(x=1915, y=1307), # x= left + width , y = top + height\n", + " )\n", + ")\n", + "\n", "\n", "bbox_prediction_ndjson = {\n", " \"name\": \"bounding_box\",\n", @@ -280,6 +417,40 @@ { "metadata": {}, "source": [ + "bbox_with_radio_subclass_prediction = lb_types.ObjectAnnotation(\n", + " name=\"bbox_with_radio_subclass\",\n", + " confidence=0.5,\n", + " custom_metrics = [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.2 },\n", + " { 'name': 'precision', 'value': 0.1 },\n", + " { 'name': 'recall', 'value': 0.3 },\n", + " { 'name': 'tagsCount', 'value': 23 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " value=lb_types.Rectangle(\n", + " start=lb_types.Point(x=541, y=933), # x = left, y = top\n", + " end=lb_types.Point(x=871, y=1124), # x= left + width , y = top + height\n", + " ),\n", + " classifications=[\n", + " \tlb_types.ClassificationAnnotation(\n", + " \tname=\"sub_radio_question\",\n", + " \t\tvalue=lb_types.Radio(\n", + " answer=lb_types.ClassificationAnswer(\n", + " name=\"first_sub_radio_answer\",\n", + " confidence=0.5,\n", + " custom_metrics =[\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.2 },\n", + " { 'name': 'precision', 'value': 0.1 },\n", + " { 'name': 'recall', 'value': 0.3 },\n", + " { 'name': 'tagsCount', 'value': 23 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]\n", + " ))\n", + " )\n", + " ]\n", + ")\n", "## NDJSON\n", "bbox_with_radio_subclass_prediction_ndjson = {\n", " \"name\": \"bbox_with_radio_subclass\",\n", @@ -295,7 +466,16 @@ " \"classifications\": [{\n", " \"name\": \"sub_radio_question\",\n", " \"answer\":\n", - " { \"name\":\"first_sub_radio_answer\", \"confidence\": 0.5}\n", + " { \"name\":\"first_sub_radio_answer\",\n", + " \"confidence\": 0.5,\n", + " 'customMetrics': [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.2 },\n", + " { 'name': 'precision', 'value': 0.1 },\n", + " { 'name': 'recall', 'value': 0.3 },\n", + " { 'name': 'tagsCount', 'value': 23 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]}\n", "\n", " }],\n", " \"bbox\": {\n", @@ -320,6 +500,26 @@ { "metadata": {}, "source": [ + "# Python Anotation\n", + "polygon_prediction = lb_types.ObjectAnnotation(\n", + " name = \"polygon\",\n", + " confidence = 0.5,\n", + " custom_metrics = [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " value=lb_types.Polygon(\n", + " points=[lb_types.Point(x=1489.581,y=183.934), lb_types.Point(x=2278.306,y=256.885), lb_types.Point(x=2428.197,y=200.437), lb_types.Point(x=2560.0,y=335.419),\n", + " lb_types.Point(x=2557.386,y=503.165), lb_types.Point(x=2320.596,y=503.103), lb_types.Point(x=2156.083, y=628.943), lb_types.Point(x=2161.111,y=785.519),\n", + " lb_types.Point(x=2002.115, y=894.647), lb_types.Point(x=1838.456,y=877.874), lb_types.Point(x=1436.53,y=874.636), lb_types.Point(x=1411.403,y=758.579),\n", + " lb_types.Point(x=1353.853,y=751.74), lb_types.Point(x=1345.264, y=453.461), lb_types.Point(x=1426.011,y=421.129)]\n", + " ),\n", + ")\n", + "\n", "polygon_prediction_ndjson = {\n", " \"name\": \"polygon\",\n", " \"confidence\": 0.5,\n", @@ -365,6 +565,24 @@ { "metadata": {}, "source": [ + "# Python annotation\n", + "text_annotation = lb_types.ClassificationAnnotation(\n", + " name=\"free_text\",\n", + " value=lb_types.Text(\n", + " answer=\"sample text\",\n", + " confidence=0.5,\n", + " custom_metrics = [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ]\n", + " )\n", + ")\n", + "\n", + "\n", "text_annotation_ndjson = {\n", " \"name\": \"free_text\",\n", " \"answer\": \"sample text\",\n", @@ -393,6 +611,21 @@ { "metadata": {}, "source": [ + "# Python Annotation\n", + "point_prediction = lb_types.ObjectAnnotation(\n", + " name = \"point\",\n", + " confidence=0.5,\n", + " custom_metrics= [\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " value = lb_types.Point(x=1166.606, y=1441.768),\n", + ")\n", + "\n", "point_prediction_ndjson = {\n", " \"name\": \"point\",\n", " \"confidence\": 0.5,\n", @@ -422,6 +655,27 @@ { "metadata": {}, "source": [ + "polyline_prediction = lb_types.ObjectAnnotation(\n", + " name = \"polyline\",\n", + " confidence=0.5,\n", + " custom_metrics=[\n", + " { 'name': 'iou', 'value': 0.5 },\n", + " { 'name': 'f1', 'value': 0.33 },\n", + " { 'name': 'precision', 'value': 0.55 },\n", + " { 'name': 'recall', 'value': 0.33 },\n", + " { 'name': 'tagsCount', 'value': 43 },\n", + " { 'name': 'metric_with_a_very_long_name', 'value': 0.334332 }\n", + " ],\n", + " value=lb_types.Line(\n", + " points=[lb_types.Point(x=2534.353, y=249.471), lb_types.Point(x=2429.492, y=182.092), lb_types.Point(x=2294.322, y=221.962), lb_types.Point(x=2224.491, y=180.463), lb_types.Point(x=2136.123, y=204.716),\n", + " lb_types.Point(x=1712.247, y=173.949), lb_types.Point(x=1703.838, y=84.438), lb_types.Point(x=1579.772, y=82.61), lb_types.Point(x=1583.442, y=167.552),\n", + " lb_types.Point(x=1478.869, y=164.903), lb_types.Point(x=1418.941, y=318.149), lb_types.Point(x=1243.128, y=400.815), lb_types.Point(x=1022.067, y=319.007),\n", + " lb_types.Point(x=892.367, y=379.216), lb_types.Point(x=670.273, y=364.408), lb_types.Point(x=613.114, y=288.16), lb_types.Point(x=377.559, y=238.251),\n", + " lb_types.Point(x=368.087, y=185.064), lb_types.Point(x=246.557, y=167.286), lb_types.Point(x=236.648, y=285.61), lb_types.Point(x=90.929, y=326.412)]\n", + " ),\n", + ")\n", + "\n", + "\n", "polyline_prediction_ndjson = {\n", " \"name\": \"polyline\",\n", " \"confidence\":0.5,\n", @@ -645,6 +899,33 @@ ], "cell_type": "markdown" }, + { + "metadata": {}, + "source": [ + "# Create a Label for predictions\n", + "label_prediction = []\n", + "label_prediction.append(lb_types.Label(\n", + " data=lb_types.ImageData(global_key=global_key),\n", + " annotations = [\n", + " radio_prediction,\n", + " nested_radio_prediction,\n", + " checklist_prediction,\n", + " nested_checklist_prediction,\n", + " bbox_prediction,\n", + " bbox_with_radio_subclass_prediction,\n", + " polyline_prediction,\n", + " polygon_prediction,\n", + " point_prediction,\n", + " text_annotation\n", + "\n", + " ]\n", + " )\n", + ")" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, { "metadata": {}, "source": [ @@ -691,7 +972,7 @@ "# Upload the prediction label to the Model Run\n", "upload_job_prediction = model_run.add_predictions(\n", " name=\"prediction_upload_job\"+str(uuid.uuid4()),\n", - " predictions=label_prediction_ndjson)\n", + " predictions=label_prediction)\n", "\n", "# Errors will appear for prediction uploads that failed.\n", "print(\"Errors:\", upload_job_prediction.errors)" diff --git a/examples/model_diagnostics/model_diagnostics_demo.ipynb b/examples/model_experiments/model_diagnostics/model_diagnostics_demo.ipynb similarity index 98% rename from examples/model_diagnostics/model_diagnostics_demo.ipynb rename to examples/model_experiments/model_diagnostics/model_diagnostics_demo.ipynb index 5c728f979..914ac9801 100644 --- a/examples/model_diagnostics/model_diagnostics_demo.ipynb +++ b/examples/model_experiments/model_diagnostics/model_diagnostics_demo.ipynb @@ -16,12 +16,12 @@ "metadata": {}, "source": [ "\n", - "\n", "\n", "\n", "\n", - "\n", "" ], diff --git a/examples/model_diagnostics/model_diagnostics_guide.ipynb b/examples/model_experiments/model_diagnostics/model_diagnostics_guide.ipynb similarity index 97% rename from examples/model_diagnostics/model_diagnostics_guide.ipynb rename to examples/model_experiments/model_diagnostics/model_diagnostics_guide.ipynb index 9c355fcb1..4dae1cb8c 100644 --- a/examples/model_diagnostics/model_diagnostics_guide.ipynb +++ b/examples/model_experiments/model_diagnostics/model_diagnostics_guide.ipynb @@ -16,12 +16,12 @@ "metadata": {}, "source": [ "\n", - "\n", "\n", "\n", "\n", - "\n", "" ], @@ -352,4 +352,4 @@ "execution_count": null } ] -} +} \ No newline at end of file diff --git a/examples/prediction_upload/image_predictions.ipynb b/examples/prediction_upload/image_predictions.ipynb index 593a0de10..7731d38a7 100644 --- a/examples/prediction_upload/image_predictions.ipynb +++ b/examples/prediction_upload/image_predictions.ipynb @@ -447,7 +447,6 @@ "mask_data = lb.types.MaskData(im_bytes=response.content) # You can also use \"url\" instead of img_bytes to pass the PNG mask url.\n", "mask_prediction = lb_types.ObjectAnnotation(\n", " name=\"mask\",\n", - " confidence=0.5,\n", " value=lb_types.Mask(\n", " mask=mask_data,\n", " color=(255, 255, 255))\n", @@ -456,7 +455,6 @@ "# NDJSON using instanceURI, bytes array is not fully supported.\n", "mask_prediction_ndjson = {\n", " \"name\": \"mask\",\n", - " \"confidence\": 0.5,\n", " \"classifications\": [],\n", " \"mask\": {\"instanceURI\": url,\n", " \"colorRGB\": (255, 255, 255)}\n", @@ -486,7 +484,6 @@ " name = \"mask_with_text_subclass\", # must match your ontology feature\"s name\n", " value=lb_types.Mask(\n", " mask=mask_data_2,\n", - " confidence=0.5,\n", " color=(255, 255, 255)),\n", " classifications=[\n", " lb_types.ClassificationAnnotation(\n",