From e538306ff68917b2aac59761983d90654d53a456 Mon Sep 17 00:00:00 2001 From: Feynman Liang Date: Fri, 12 Oct 2018 17:48:32 -0700 Subject: [PATCH 1/5] Longer timeout --- labelbox/__init__.py | 2 +- labelbox/exporters/coco_exporter.py | 2 +- labelbox/exporters/voc_exporter.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/labelbox/__init__.py b/labelbox/__init__.py index 17af24756..6949f4ea4 100644 --- a/labelbox/__init__.py +++ b/labelbox/__init__.py @@ -1,3 +1,3 @@ "The Labelbox python package." -__version__ = '0.0.8' +__version__ = '0.0.9' diff --git a/labelbox/exporters/coco_exporter.py b/labelbox/exporters/coco_exporter.py index 5e88490d1..cd8078dcc 100644 --- a/labelbox/exporters/coco_exporter.py +++ b/labelbox/exporters/coco_exporter.py @@ -92,7 +92,7 @@ def add_label( "coco_url": image_url, "date_captured": None, } - response = requests.get(image_url, stream=True, timeout=0.1) + response = requests.get(image_url, stream=True, timeout=1.0) response.raw.decode_content = True image['width'], image['height'] = Image.open(response.raw).size diff --git a/labelbox/exporters/voc_exporter.py b/labelbox/exporters/voc_exporter.py index bad8311e3..5271a0905 100644 --- a/labelbox/exporters/voc_exporter.py +++ b/labelbox/exporters/voc_exporter.py @@ -78,7 +78,7 @@ def write_label( # pylint: disable-msg=too-many-arguments images_output_dir: File path of directory to write images. """ # Download image and save it - response = requests.get(image_url, stream=True) + response = requests.get(image_url, stream=True, timeout=1.0) response.raw.decode_content = True image = Image.open(response.raw) image_fqn = os.path.join( From 6a87e0169f7cd4c494a3dd6381381a1c70ce7363 Mon Sep 17 00:00:00 2001 From: Feynman Liang Date: Mon, 15 Oct 2018 15:29:29 -0700 Subject: [PATCH 2/5] Don't flip up down anymore, dropping V3 support --- labelbox/exporters/coco_exporter.py | 2 +- labelbox/exporters/voc_exporter.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/labelbox/exporters/coco_exporter.py b/labelbox/exporters/coco_exporter.py index cd8078dcc..c50cc65ed 100644 --- a/labelbox/exporters/coco_exporter.py +++ b/labelbox/exporters/coco_exporter.py @@ -127,7 +127,7 @@ def _append_polygons_as_annotations(coco, image, category_id, polygons): for polygon in polygons: segmentation = [] for x_val, y_val in polygon.exterior.coords: - segmentation.extend([x_val, image['height'] - y_val]) + segmentation.extend([x_val, y_val]) annotation = { "id": len(coco['annotations']) + 1, diff --git a/labelbox/exporters/voc_exporter.py b/labelbox/exporters/voc_exporter.py index 5271a0905..e4cdddd0b 100644 --- a/labelbox/exporters/voc_exporter.py +++ b/labelbox/exporters/voc_exporter.py @@ -124,7 +124,7 @@ def _add_pascal_object_from_wkt(xml_writer, img_height, wkt_data, label): for point in polygons: xy_coords = [] for x_val, y_val in point.exterior.coords: - xy_coords.extend([x_val, img_height - y_val]) + xy_coords.extend([x_val, y_val]) # remove last polygon if it is identical to first point if xy_coords[-2:] == xy_coords[:2]: xy_coords = xy_coords[:-2] @@ -134,7 +134,7 @@ def _add_pascal_object_from_wkt(xml_writer, img_height, wkt_data, label): def _add_pascal_object_from_xy(xml_writer, img_height, polygons, label): if not isinstance(polygons, list): - # polygons is not [{'geometry': [xy]}] nor [[xy]] + LOGGER.warning('polygons is not [{geometry: [xy]}] nor [[xy]], skipping') return xml_writer for polygon in polygons: if 'geometry' in polygon: # V3 @@ -146,6 +146,6 @@ def _add_pascal_object_from_xy(xml_writer, img_height, polygons, label): xy_coords = [] for point in polygon: - xy_coords.extend([point['x'], img_height - point['y']]) + xy_coords.extend([point['x'], point['y']]) xml_writer.add_object(name=label, xy_coords=xy_coords) return xml_writer From 678dc5a76ad41781f6f5130d7f3dc45e29834d9f Mon Sep 17 00:00:00 2001 From: Feynman Liang Date: Tue, 16 Oct 2018 11:33:26 -0700 Subject: [PATCH 3/5] Major version bump --- labelbox/__init__.py | 2 +- labelbox/exporters/voc_exporter.py | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/labelbox/__init__.py b/labelbox/__init__.py index 6949f4ea4..3516f225f 100644 --- a/labelbox/__init__.py +++ b/labelbox/__init__.py @@ -1,3 +1,3 @@ "The Labelbox python package." -__version__ = '0.0.9' +__version__ = '1.0.0' diff --git a/labelbox/exporters/voc_exporter.py b/labelbox/exporters/voc_exporter.py index e4cdddd0b..65aa3383e 100644 --- a/labelbox/exporters/voc_exporter.py +++ b/labelbox/exporters/voc_exporter.py @@ -98,13 +98,9 @@ def write_label( # pylint: disable-msg=too-many-arguments # convert label to Pascal VOC format for category_name, paths in labels.items(): if label_format == 'WKT': - xml_writer = _add_pascal_object_from_wkt( - xml_writer, img_height=height, wkt_data=paths, - label=category_name) + xml_writer = _add_pascal_object_from_wkt(xml_writer, wkt_data=paths, label=category_name) elif label_format == 'XY': - xml_writer = _add_pascal_object_from_xy( - xml_writer, img_height=height, polygons=paths, - label=category_name) + xml_writer = _add_pascal_object_from_xy(xml_writer, polygons=paths, label=category_name) else: exc = UnknownFormatError(label_format=label_format) logging.exception(exc.message) @@ -114,7 +110,7 @@ def write_label( # pylint: disable-msg=too-many-arguments xml_writer.save(os.path.join(annotations_output_dir, '{}.xml'.format(label_id))) -def _add_pascal_object_from_wkt(xml_writer, img_height, wkt_data, label): +def _add_pascal_object_from_wkt(xml_writer, wkt_data, label): polygons = [] if isinstance(wkt_data, list): # V3+ polygons = map(lambda x: wkt.loads(x['geometry']), wkt_data) @@ -132,7 +128,7 @@ def _add_pascal_object_from_wkt(xml_writer, img_height, wkt_data, label): return xml_writer -def _add_pascal_object_from_xy(xml_writer, img_height, polygons, label): +def _add_pascal_object_from_xy(xml_writer, polygons, label): if not isinstance(polygons, list): LOGGER.warning('polygons is not [{geometry: [xy]}] nor [[xy]], skipping') return xml_writer From 1724fc21118fbe0a2e3a78da498e6ec74cdb890a Mon Sep 17 00:00:00 2001 From: Feynman Liang Date: Tue, 16 Oct 2018 11:35:46 -0700 Subject: [PATCH 4/5] Fix lint --- labelbox/exporters/voc_exporter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/labelbox/exporters/voc_exporter.py b/labelbox/exporters/voc_exporter.py index 65aa3383e..91accc523 100644 --- a/labelbox/exporters/voc_exporter.py +++ b/labelbox/exporters/voc_exporter.py @@ -98,7 +98,8 @@ def write_label( # pylint: disable-msg=too-many-arguments # convert label to Pascal VOC format for category_name, paths in labels.items(): if label_format == 'WKT': - xml_writer = _add_pascal_object_from_wkt(xml_writer, wkt_data=paths, label=category_name) + xml_writer = _add_pascal_object_from_wkt( + xml_writer, wkt_data=paths, label=category_name) elif label_format == 'XY': xml_writer = _add_pascal_object_from_xy(xml_writer, polygons=paths, label=category_name) else: From 6f07336828cfa820da1e1b564b97e8ec01ba0a4e Mon Sep 17 00:00:00 2001 From: Feynman Liang Date: Tue, 16 Oct 2018 11:38:25 -0700 Subject: [PATCH 5/5] Remove docs build from readme, already on readthedocs --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 1474bb204..e6716e97a 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,3 @@ To generate a `requirements.txt` for usage outside of `pipenv` ```sh pipenv lock -r > requirements.txt ``` - -## Publishing docs - -```sh -./build-docs.sh -```