clarifai 9.7.0__py3-none-any.whl → 9.7.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- clarifai/auth/__init__.py +6 -0
- clarifai/auth/helper.py +35 -36
- clarifai/auth/register.py +23 -0
- clarifai/{client → auth}/stub.py +10 -10
- clarifai/client/__init__.py +1 -4
- clarifai/client/app.py +483 -0
- clarifai/client/auth/__init__.py +4 -0
- clarifai/client/{abc.py → auth/abc.py} +2 -2
- clarifai/client/auth/helper.py +377 -0
- clarifai/client/auth/register.py +23 -0
- {clarifai_utils/client → clarifai/client/auth}/stub.py +10 -10
- clarifai/client/base.py +112 -0
- clarifai/client/dataset.py +290 -0
- clarifai/client/input.py +730 -0
- clarifai/client/lister.py +41 -0
- clarifai/client/model.py +218 -0
- clarifai/client/module.py +82 -0
- clarifai/client/user.py +125 -0
- clarifai/client/workflow.py +194 -0
- clarifai/datasets/upload/base.py +66 -0
- clarifai/datasets/upload/examples/README.md +31 -0
- clarifai/datasets/upload/examples/image_classification/cifar10/dataset.py +42 -0
- clarifai/datasets/upload/examples/image_classification/food-101/dataset.py +39 -0
- clarifai/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +37 -0
- clarifai/{data_upload/datasets → datasets/upload}/features.py +4 -12
- clarifai/datasets/upload/image.py +156 -0
- clarifai/datasets/upload/loaders/README.md +49 -0
- clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/coco_captions.py +24 -21
- {clarifai_utils/data_upload/datasets/zoo → clarifai/datasets/upload/loaders}/coco_detection.py +46 -42
- clarifai/datasets/upload/loaders/coco_segmentation.py +166 -0
- clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/imagenet_classification.py +22 -12
- clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/xview_detection.py +44 -53
- clarifai/datasets/upload/text.py +50 -0
- clarifai/datasets/upload/utils.py +62 -0
- clarifai/errors.py +90 -0
- clarifai/urls/helper.py +16 -17
- clarifai/utils/logging.py +40 -0
- clarifai/utils/misc.py +33 -0
- clarifai/versions.py +6 -0
- {clarifai-9.7.0.dist-info → clarifai-9.7.2.dist-info}/LICENSE +1 -1
- clarifai-9.7.2.dist-info/METADATA +179 -0
- clarifai-9.7.2.dist-info/RECORD +350 -0
- clarifai_utils/auth/__init__.py +6 -0
- clarifai_utils/auth/helper.py +35 -36
- clarifai_utils/auth/register.py +23 -0
- clarifai_utils/auth/stub.py +127 -0
- clarifai_utils/client/__init__.py +1 -4
- clarifai_utils/client/app.py +483 -0
- clarifai_utils/client/auth/__init__.py +4 -0
- clarifai_utils/client/{abc.py → auth/abc.py} +2 -2
- clarifai_utils/client/auth/helper.py +377 -0
- clarifai_utils/client/auth/register.py +23 -0
- clarifai_utils/client/auth/stub.py +127 -0
- clarifai_utils/client/base.py +112 -0
- clarifai_utils/client/dataset.py +290 -0
- clarifai_utils/client/input.py +730 -0
- clarifai_utils/client/lister.py +41 -0
- clarifai_utils/client/model.py +218 -0
- clarifai_utils/client/module.py +82 -0
- clarifai_utils/client/user.py +125 -0
- clarifai_utils/client/workflow.py +194 -0
- clarifai_utils/datasets/upload/base.py +66 -0
- clarifai_utils/datasets/upload/examples/README.md +31 -0
- clarifai_utils/datasets/upload/examples/image_classification/cifar10/dataset.py +42 -0
- clarifai_utils/datasets/upload/examples/image_classification/food-101/dataset.py +39 -0
- clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +37 -0
- clarifai_utils/{data_upload/datasets → datasets/upload}/features.py +4 -12
- clarifai_utils/datasets/upload/image.py +156 -0
- clarifai_utils/datasets/upload/loaders/README.md +49 -0
- clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/coco_captions.py +24 -21
- {clarifai/data_upload/datasets/zoo → clarifai_utils/datasets/upload/loaders}/coco_detection.py +46 -42
- clarifai_utils/datasets/upload/loaders/coco_segmentation.py +166 -0
- clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/imagenet_classification.py +22 -12
- clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/xview_detection.py +44 -53
- clarifai_utils/datasets/upload/text.py +50 -0
- clarifai_utils/datasets/upload/utils.py +62 -0
- clarifai_utils/errors.py +90 -0
- clarifai_utils/urls/helper.py +16 -17
- clarifai_utils/utils/logging.py +40 -0
- clarifai_utils/utils/misc.py +33 -0
- clarifai_utils/versions.py +6 -0
- clarifai/data_upload/README.md +0 -63
- clarifai/data_upload/convert_csv.py +0 -182
- clarifai/data_upload/datasets/base.py +0 -87
- clarifai/data_upload/datasets/image.py +0 -253
- clarifai/data_upload/datasets/text.py +0 -60
- clarifai/data_upload/datasets/zoo/README.md +0 -55
- clarifai/data_upload/datasets/zoo/coco_segmentation.py +0 -160
- clarifai/data_upload/examples/README.md +0 -5
- clarifai/data_upload/examples/image_classification/cifar10/dataset.py +0 -40
- clarifai/data_upload/examples/image_classification/food-101/dataset.py +0 -39
- clarifai/data_upload/examples/image_classification/food-101/images/beignets/1036242.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/beignets/1114182.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/beignets/2012944.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/beignets/2464389.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/beignets/478632.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1061270.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1202261.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1381751.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/hamburger/3289634.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/hamburger/862025.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/102197.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/2749372.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/2938268.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/3590861.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/746716.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/ramen/2955110.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/ramen/3208966.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/ramen/3270629.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/ramen/3424562.jpg +0 -0
- clarifai/data_upload/examples/image_classification/food-101/images/ramen/544680.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/annotations/2007_000464.xml +0 -39
- clarifai/data_upload/examples/image_detection/voc/annotations/2008_000853.xml +0 -28
- clarifai/data_upload/examples/image_detection/voc/annotations/2008_003182.xml +0 -54
- clarifai/data_upload/examples/image_detection/voc/annotations/2008_008526.xml +0 -67
- clarifai/data_upload/examples/image_detection/voc/annotations/2009_004315.xml +0 -28
- clarifai/data_upload/examples/image_detection/voc/annotations/2009_004382.xml +0 -28
- clarifai/data_upload/examples/image_detection/voc/annotations/2011_000430.xml +0 -28
- clarifai/data_upload/examples/image_detection/voc/annotations/2011_001610.xml +0 -46
- clarifai/data_upload/examples/image_detection/voc/annotations/2011_006412.xml +0 -99
- clarifai/data_upload/examples/image_detection/voc/annotations/2012_000690.xml +0 -43
- clarifai/data_upload/examples/image_detection/voc/dataset.py +0 -76
- clarifai/data_upload/examples/image_detection/voc/images/2007_000464.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2008_000853.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2008_003182.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2008_008526.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2009_004315.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2009_004382.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2011_000430.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2011_001610.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2011_006412.jpg +0 -0
- clarifai/data_upload/examples/image_detection/voc/images/2012_000690.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/annotations/instances_val2017_subset.json +0 -5342
- clarifai/data_upload/examples/image_segmentation/coco/dataset.py +0 -107
- clarifai/data_upload/examples/image_segmentation/coco/images/000000074646.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000086956.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000166563.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000176857.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000182202.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000193245.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000384850.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000409630.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000424349.jpg +0 -0
- clarifai/data_upload/examples/image_segmentation/coco/images/000000573008.jpg +0 -0
- clarifai/data_upload/examples/text_classification/imdb_dataset/dataset.py +0 -40
- clarifai/data_upload/examples.py +0 -17
- clarifai/data_upload/upload.py +0 -356
- clarifai/dataset_export/dataset_export_inputs.py +0 -205
- clarifai/listing/concepts.py +0 -37
- clarifai/listing/datasets.py +0 -37
- clarifai/listing/inputs.py +0 -111
- clarifai/listing/installed_module_versions.py +0 -40
- clarifai/listing/lister.py +0 -200
- clarifai/listing/models.py +0 -46
- clarifai/listing/module_versions.py +0 -42
- clarifai/listing/modules.py +0 -36
- clarifai/runners/base.py +0 -140
- clarifai/runners/example.py +0 -36
- clarifai-9.7.0.dist-info/METADATA +0 -99
- clarifai-9.7.0.dist-info/RECORD +0 -456
- clarifai_utils/data_upload/README.md +0 -63
- clarifai_utils/data_upload/convert_csv.py +0 -182
- clarifai_utils/data_upload/datasets/base.py +0 -87
- clarifai_utils/data_upload/datasets/image.py +0 -253
- clarifai_utils/data_upload/datasets/text.py +0 -60
- clarifai_utils/data_upload/datasets/zoo/README.md +0 -55
- clarifai_utils/data_upload/datasets/zoo/coco_segmentation.py +0 -160
- clarifai_utils/data_upload/examples/README.md +0 -5
- clarifai_utils/data_upload/examples/image_classification/cifar10/dataset.py +0 -40
- clarifai_utils/data_upload/examples/image_classification/food-101/dataset.py +0 -39
- clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/1036242.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/1114182.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/2012944.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/2464389.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/478632.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1061270.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1202261.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1381751.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/3289634.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/862025.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/102197.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/2749372.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/2938268.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/3590861.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/746716.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/2955110.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3208966.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3270629.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3424562.jpg +0 -0
- clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/544680.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/__init__.py +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/__init__.py +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2007_000464.xml +0 -39
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_000853.xml +0 -28
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_003182.xml +0 -54
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_008526.xml +0 -67
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2009_004315.xml +0 -28
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2009_004382.xml +0 -28
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_000430.xml +0 -28
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_001610.xml +0 -46
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_006412.xml +0 -99
- clarifai_utils/data_upload/examples/image_detection/voc/annotations/2012_000690.xml +0 -43
- clarifai_utils/data_upload/examples/image_detection/voc/dataset.py +0 -76
- clarifai_utils/data_upload/examples/image_detection/voc/images/2007_000464.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2008_000853.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2008_003182.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2008_008526.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2009_004315.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2009_004382.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2011_000430.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2011_001610.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2011_006412.jpg +0 -0
- clarifai_utils/data_upload/examples/image_detection/voc/images/2012_000690.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/__init__.py +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/__init__.py +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/annotations/instances_val2017_subset.json +0 -5342
- clarifai_utils/data_upload/examples/image_segmentation/coco/dataset.py +0 -107
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000074646.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000086956.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000166563.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000176857.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000182202.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000193245.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000384850.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000409630.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000424349.jpg +0 -0
- clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000573008.jpg +0 -0
- clarifai_utils/data_upload/examples/text_classification/__init__.py +0 -0
- clarifai_utils/data_upload/examples/text_classification/imdb_dataset/__init__.py +0 -0
- clarifai_utils/data_upload/examples/text_classification/imdb_dataset/dataset.py +0 -40
- clarifai_utils/data_upload/examples.py +0 -17
- clarifai_utils/data_upload/upload.py +0 -356
- clarifai_utils/dataset_export/dataset_export_inputs.py +0 -205
- clarifai_utils/listing/__init__.py +0 -0
- clarifai_utils/listing/concepts.py +0 -37
- clarifai_utils/listing/datasets.py +0 -37
- clarifai_utils/listing/inputs.py +0 -111
- clarifai_utils/listing/installed_module_versions.py +0 -40
- clarifai_utils/listing/lister.py +0 -200
- clarifai_utils/listing/models.py +0 -46
- clarifai_utils/listing/module_versions.py +0 -42
- clarifai_utils/listing/modules.py +0 -36
- clarifai_utils/runners/__init__.py +0 -0
- clarifai_utils/runners/base.py +0 -140
- clarifai_utils/runners/example.py +0 -36
- /clarifai/{data_upload/__init__.py → cli.py} +0 -0
- /clarifai/{data_upload/datasets → datasets}/__init__.py +0 -0
- /clarifai/{data_upload/datasets/zoo → datasets/upload}/__init__.py +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/__init__.py +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/__init__.py +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/__init__.py +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
- /clarifai/{data_upload/examples/image_detection → datasets/upload/examples/text_classification}/__init__.py +0 -0
- /clarifai/{data_upload/examples/image_detection/voc → datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/test.csv +0 -0
- /clarifai/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/train.csv +0 -0
- /clarifai/{data_upload/examples/image_segmentation → datasets/upload/loaders}/__init__.py +0 -0
- /clarifai/{data_upload/examples/image_segmentation/coco → utils}/__init__.py +0 -0
- {clarifai-9.7.0.dist-info → clarifai-9.7.2.dist-info}/WHEEL +0 -0
- {clarifai-9.7.0.dist-info → clarifai-9.7.2.dist-info}/entry_points.txt +0 -0
- {clarifai-9.7.0.dist-info → clarifai-9.7.2.dist-info}/top_level.txt +0 -0
- /clarifai/data_upload/examples/text_classification/__init__.py → /clarifai_utils/cli.py +0 -0
- {clarifai/data_upload/examples/text_classification/imdb_dataset → clarifai_utils/datasets}/__init__.py +0 -0
- {clarifai/listing → clarifai_utils/datasets/upload}/__init__.py +0 -0
- {clarifai/runners → clarifai_utils/datasets/upload/examples/image_classification}/__init__.py +0 -0
- /clarifai_utils/{data_upload → datasets/upload/examples/image_classification/cifar10}/__init__.py +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
- /clarifai_utils/{data_upload/datasets → datasets/upload/examples/image_classification/food-101}/__init__.py +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
- /clarifai_utils/{data_upload/datasets/zoo → datasets/upload/examples/text_classification}/__init__.py +0 -0
- /clarifai_utils/{data_upload/examples/image_classification → datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/test.csv +0 -0
- /clarifai_utils/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/train.csv +0 -0
- /clarifai_utils/{data_upload/examples/image_classification/cifar10 → datasets/upload/loaders}/__init__.py +0 -0
- /clarifai_utils/{data_upload/examples/image_classification/food-101 → utils}/__init__.py +0 -0
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from typing import Iterator, List, Union
|
|
3
|
-
|
|
4
|
-
from clarifai_grpc.grpc.api import resources_pb2
|
|
5
|
-
from google.protobuf.struct_pb2 import Struct
|
|
6
|
-
from tqdm import tqdm
|
|
7
|
-
|
|
8
|
-
from .base import ClarifaiDataset
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class VisualClassificationDataset(ClarifaiDataset):
|
|
12
|
-
|
|
13
|
-
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
14
|
-
super().__init__(datagen_object, dataset_id, split)
|
|
15
|
-
self._extract_protos()
|
|
16
|
-
|
|
17
|
-
def create_input_protos(self, image_path: str, labels: List[Union[str, int]], input_id: str,
|
|
18
|
-
dataset_id: str, geo_info: Union[List[float], None],
|
|
19
|
-
metadata: Struct) -> resources_pb2.Input:
|
|
20
|
-
"""
|
|
21
|
-
Create input protos for each image, label input pair.
|
|
22
|
-
Args:
|
|
23
|
-
`image_path`: image path.
|
|
24
|
-
`labels`: image label(s)
|
|
25
|
-
`input_id: unique input id
|
|
26
|
-
`dataset_id`: Clarifai dataset id
|
|
27
|
-
`geo_info`: image longitude, latitude info
|
|
28
|
-
`metadata`: image metadata
|
|
29
|
-
Returns:
|
|
30
|
-
An input proto representing a single row input
|
|
31
|
-
"""
|
|
32
|
-
geo_pb = resources_pb2.Geo(geo_point=resources_pb2.GeoPoint(
|
|
33
|
-
longitude=geo_info[0], latitude=geo_info[1])) if geo_info is not None else None
|
|
34
|
-
|
|
35
|
-
input_proto = resources_pb2.Input(
|
|
36
|
-
id=input_id,
|
|
37
|
-
dataset_ids=[dataset_id],
|
|
38
|
-
data=resources_pb2.Data(
|
|
39
|
-
image=resources_pb2.Image(base64=open(image_path, 'rb').read(),),
|
|
40
|
-
geo=geo_pb,
|
|
41
|
-
concepts=[
|
|
42
|
-
resources_pb2.Concept(
|
|
43
|
-
id=f"id-{''.join(_label.split(' '))}", name=_label, value=1.)\
|
|
44
|
-
for _label in labels
|
|
45
|
-
],
|
|
46
|
-
metadata=metadata))
|
|
47
|
-
|
|
48
|
-
return input_proto
|
|
49
|
-
|
|
50
|
-
def _extract_protos(self) -> None:
|
|
51
|
-
"""
|
|
52
|
-
Create input image protos for each data generator item.
|
|
53
|
-
"""
|
|
54
|
-
for i, item in tqdm(enumerate(self.datagen_object), desc="Creating input protos..."):
|
|
55
|
-
metadata = Struct()
|
|
56
|
-
image_path = item.image_path
|
|
57
|
-
label = item.label if isinstance(item.label, list) else [item.label] # clarifai concept
|
|
58
|
-
input_id = f"{self.dataset_id}-{self.split}-{i}" if item.id is None else f"{self.split}-{str(item.id)}"
|
|
59
|
-
geo_info = item.geo_info
|
|
60
|
-
metadata.update({"filename": os.path.basename(image_path), "split": self.split})
|
|
61
|
-
|
|
62
|
-
self.input_ids.append(input_id)
|
|
63
|
-
input_proto = self.create_input_protos(image_path, label, input_id, self.dataset_id,
|
|
64
|
-
geo_info, metadata)
|
|
65
|
-
self._all_input_protos[input_id] = input_proto
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class VisualDetectionDataset(ClarifaiDataset):
|
|
69
|
-
"""
|
|
70
|
-
Visual detection dataset proto class.
|
|
71
|
-
"""
|
|
72
|
-
|
|
73
|
-
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
74
|
-
super().__init__(datagen_object, dataset_id, split)
|
|
75
|
-
self._extract_protos()
|
|
76
|
-
|
|
77
|
-
def create_input_protos(self, image_path: str, input_id: str, dataset_id: str,
|
|
78
|
-
geo_info: Union[List[float], None],
|
|
79
|
-
metadata: Struct) -> resources_pb2.Input:
|
|
80
|
-
"""
|
|
81
|
-
Create input protos for each image, label input pair.
|
|
82
|
-
Args:
|
|
83
|
-
`image_path`: file path to image
|
|
84
|
-
`input_id: unique input id
|
|
85
|
-
`dataset_id`: Clarifai dataset id
|
|
86
|
-
`geo_info`: image longitude, latitude info
|
|
87
|
-
`metadata`: image metadata
|
|
88
|
-
Returns:
|
|
89
|
-
An input proto representing a single row input
|
|
90
|
-
"""
|
|
91
|
-
geo_pb = resources_pb2.Geo(geo_point=resources_pb2.GeoPoint(
|
|
92
|
-
longitude=geo_info[0], latitude=geo_info[1])) if geo_info is not None else None
|
|
93
|
-
input_image_proto = resources_pb2.Input(
|
|
94
|
-
id=input_id,
|
|
95
|
-
dataset_ids=[dataset_id],
|
|
96
|
-
data=resources_pb2.Data(
|
|
97
|
-
image=resources_pb2.Image(base64=open(image_path, 'rb').read(),),
|
|
98
|
-
geo=geo_pb,
|
|
99
|
-
metadata=metadata))
|
|
100
|
-
|
|
101
|
-
return input_image_proto
|
|
102
|
-
|
|
103
|
-
def create_annotation_proto(self, label: str, annotations: List, input_id: str,
|
|
104
|
-
dataset_id: str) -> resources_pb2.Annotation:
|
|
105
|
-
"""
|
|
106
|
-
Create an input proto for each bounding box, label input pair.
|
|
107
|
-
Args:
|
|
108
|
-
`label`: annotation label
|
|
109
|
-
`annotations`: a list of a single bbox's coordinates.
|
|
110
|
-
`input_id: unique input id
|
|
111
|
-
`dataset_id`: Clarifai dataset id
|
|
112
|
-
Returns:
|
|
113
|
-
An input proto representing a single image input
|
|
114
|
-
"""
|
|
115
|
-
input_annot_proto = resources_pb2.Annotation(
|
|
116
|
-
input_id=input_id,
|
|
117
|
-
data=resources_pb2.Data(regions=[
|
|
118
|
-
resources_pb2.Region(
|
|
119
|
-
region_info=resources_pb2.RegionInfo(bounding_box=resources_pb2.BoundingBox(
|
|
120
|
-
# Annotations ordering: [xmin, ymin, xmax, ymax]
|
|
121
|
-
# top_row must be less than bottom row
|
|
122
|
-
# left_col must be less than right col
|
|
123
|
-
top_row=annotations[1], #y_min
|
|
124
|
-
left_col=annotations[0], #x_min
|
|
125
|
-
bottom_row=annotations[3], #y_max
|
|
126
|
-
right_col=annotations[2] #x_max
|
|
127
|
-
)),
|
|
128
|
-
data=resources_pb2.Data(concepts=[
|
|
129
|
-
resources_pb2.Concept(
|
|
130
|
-
id=f"id-{''.join(label.split(' '))}", name=label, value=1.)
|
|
131
|
-
]))
|
|
132
|
-
]))
|
|
133
|
-
|
|
134
|
-
return input_annot_proto
|
|
135
|
-
|
|
136
|
-
def _extract_protos(self) -> None:
|
|
137
|
-
"""
|
|
138
|
-
Create input image protos for each data generator item.
|
|
139
|
-
"""
|
|
140
|
-
for i, item in tqdm(enumerate(self.datagen_object), desc="Creating input protos..."):
|
|
141
|
-
metadata = Struct()
|
|
142
|
-
image = item.image_path
|
|
143
|
-
labels = item.classes # list:[l1,...,ln]
|
|
144
|
-
bboxes = item.bboxes # [[xmin,ymin,xmax,ymax],...,[xmin,ymin,xmax,ymax]]
|
|
145
|
-
input_id = f"{self.dataset_id}-{self.split}-{i}" if item.id is None else f"{self.split}-{str(item.id)}"
|
|
146
|
-
metadata.update({"filename": os.path.basename(image), "split": self.split})
|
|
147
|
-
geo_info = item.geo_info
|
|
148
|
-
|
|
149
|
-
self.input_ids.append(input_id)
|
|
150
|
-
input_image_proto = self.create_input_protos(image, input_id, self.dataset_id, geo_info,
|
|
151
|
-
metadata)
|
|
152
|
-
self._all_input_protos[input_id] = input_image_proto
|
|
153
|
-
|
|
154
|
-
# iter over bboxes and classes
|
|
155
|
-
# one id could have more than one bbox and label
|
|
156
|
-
for i in range(len(bboxes)):
|
|
157
|
-
input_annot_proto = self.create_annotation_proto(labels[i], bboxes[i], input_id,
|
|
158
|
-
self.dataset_id)
|
|
159
|
-
self._all_annotation_protos[input_id].append(input_annot_proto)
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
class VisualSegmentationDataset(ClarifaiDataset):
|
|
163
|
-
"""
|
|
164
|
-
Visual segmentation dataset proto class.
|
|
165
|
-
"""
|
|
166
|
-
|
|
167
|
-
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
168
|
-
super().__init__(datagen_object, dataset_id, split)
|
|
169
|
-
self._extract_protos()
|
|
170
|
-
|
|
171
|
-
def create_input_protos(self, image_path: str, input_id: str, dataset_id: str,
|
|
172
|
-
geo_info: Union[List[float], None],
|
|
173
|
-
metadata: Struct) -> resources_pb2.Input:
|
|
174
|
-
"""
|
|
175
|
-
Create input protos for each image, label input pair.
|
|
176
|
-
Args:
|
|
177
|
-
`image_path`: absolute image file path
|
|
178
|
-
`input_id: unique input id
|
|
179
|
-
`dataset_id`: Clarifai dataset id
|
|
180
|
-
`geo_info`: image longitude, latitude info
|
|
181
|
-
`metadata`: image metadata
|
|
182
|
-
Returns:
|
|
183
|
-
An input proto representing a single input item
|
|
184
|
-
"""
|
|
185
|
-
geo_pb = resources_pb2.Geo(geo_point=resources_pb2.GeoPoint(
|
|
186
|
-
longitude=geo_info[0], latitude=geo_info[1])) if geo_info is not None else None
|
|
187
|
-
input_image_proto = resources_pb2.Input(
|
|
188
|
-
id=input_id,
|
|
189
|
-
dataset_ids=[dataset_id],
|
|
190
|
-
data=resources_pb2.Data(
|
|
191
|
-
image=resources_pb2.Image(base64=open(image_path, 'rb').read(),),
|
|
192
|
-
geo=geo_pb,
|
|
193
|
-
metadata=metadata))
|
|
194
|
-
|
|
195
|
-
return input_image_proto
|
|
196
|
-
|
|
197
|
-
def create_mask_proto(self, label: str, polygons: List[List[float]], input_id: str,
|
|
198
|
-
dataset_id: str) -> resources_pb2.Annotation:
|
|
199
|
-
"""
|
|
200
|
-
Create an input mask proto for an input polygon/mask and label.
|
|
201
|
-
Args:
|
|
202
|
-
`label`: image label
|
|
203
|
-
`polygons`: Polygon x,y points iterable
|
|
204
|
-
`input_id: unique input id
|
|
205
|
-
`dataset_id`: Clarifai dataset id
|
|
206
|
-
Returns:
|
|
207
|
-
An input proto corresponding to a single image
|
|
208
|
-
"""
|
|
209
|
-
input_mask_proto = resources_pb2.Annotation(
|
|
210
|
-
input_id=input_id,
|
|
211
|
-
data=resources_pb2.Data(regions=[
|
|
212
|
-
resources_pb2.Region(
|
|
213
|
-
region_info=resources_pb2.RegionInfo(polygon=resources_pb2.Polygon(
|
|
214
|
-
points=[
|
|
215
|
-
resources_pb2.Point(
|
|
216
|
-
row=_point[1], # row is y point
|
|
217
|
-
col=_point[0], # col is x point
|
|
218
|
-
visibility="VISIBLE") for _point in polygons
|
|
219
|
-
])),
|
|
220
|
-
data=resources_pb2.Data(concepts=[
|
|
221
|
-
resources_pb2.Concept(
|
|
222
|
-
id=f"id-{''.join(label.split(' '))}", name=label, value=1.)
|
|
223
|
-
]))
|
|
224
|
-
]))
|
|
225
|
-
|
|
226
|
-
return input_mask_proto
|
|
227
|
-
|
|
228
|
-
def _extract_protos(self) -> None:
|
|
229
|
-
"""
|
|
230
|
-
Create input image and annotation protos for each data generator item.
|
|
231
|
-
"""
|
|
232
|
-
for i, item in tqdm(enumerate(self.datagen_object), desc="Creating input protos..."):
|
|
233
|
-
metadata = Struct()
|
|
234
|
-
image = item.image_path # image path
|
|
235
|
-
labels = item.classes # list of class labels
|
|
236
|
-
_polygons = item.polygons # list of polygons: [[[x,y],...,[x,y]],...]
|
|
237
|
-
input_id = f"{self.dataset_id}-{self.split}-{i}" if item.id is None else f"{self.split}-{str(item.id)}"
|
|
238
|
-
metadata.update({"filename": os.path.basename(image), "split": self.split})
|
|
239
|
-
geo_info = item.geo_info
|
|
240
|
-
|
|
241
|
-
self.input_ids.append(input_id)
|
|
242
|
-
input_image_proto = self.create_input_protos(image, input_id, self.dataset_id, geo_info,
|
|
243
|
-
metadata)
|
|
244
|
-
self._all_input_protos[input_id] = input_image_proto
|
|
245
|
-
|
|
246
|
-
## Iterate over each masked image and create a proto for upload to clarifai
|
|
247
|
-
## The length of masks/polygons-list and labels must be equal
|
|
248
|
-
for i, _polygon in enumerate(_polygons):
|
|
249
|
-
try:
|
|
250
|
-
input_mask_proto = self.create_mask_proto(labels[i], _polygon, input_id, self.dataset_id)
|
|
251
|
-
self._all_annotation_protos[input_id].append(input_mask_proto)
|
|
252
|
-
except IndexError:
|
|
253
|
-
continue
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
from typing import Iterator, List
|
|
2
|
-
|
|
3
|
-
from clarifai_grpc.grpc.api import resources_pb2
|
|
4
|
-
from google.protobuf.struct_pb2 import Struct
|
|
5
|
-
from tqdm import tqdm
|
|
6
|
-
|
|
7
|
-
from .base import ClarifaiDataset
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class TextClassificationDataset(ClarifaiDataset):
|
|
11
|
-
"""
|
|
12
|
-
Upload text classification datasets to clarifai datasets
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
16
|
-
super().__init__(datagen_object, dataset_id, split)
|
|
17
|
-
self._extract_protos()
|
|
18
|
-
|
|
19
|
-
def create_input_protos(self, text_input: str, labels: List[str], input_id: str, dataset_id: str,
|
|
20
|
-
metadata: Struct) -> resources_pb2.Input:
|
|
21
|
-
"""
|
|
22
|
-
Create input protos for each text, label input pairs.
|
|
23
|
-
Args:
|
|
24
|
-
`text_input`: text string.
|
|
25
|
-
`labels`: text labels
|
|
26
|
-
`input_id: unique input id
|
|
27
|
-
`dataset_id`: Clarifai dataset id
|
|
28
|
-
`metadata`:input metadata
|
|
29
|
-
Returns:
|
|
30
|
-
An input proto representing a single row input
|
|
31
|
-
"""
|
|
32
|
-
input_proto = resources_pb2.Input(
|
|
33
|
-
id=input_id,
|
|
34
|
-
dataset_ids=[dataset_id],
|
|
35
|
-
data=resources_pb2.Data(
|
|
36
|
-
text=resources_pb2.Text(raw=text_input),
|
|
37
|
-
concepts=[
|
|
38
|
-
resources_pb2.Concept(
|
|
39
|
-
id=f"id-{''.join(_label.split(' '))}", name=_label, value=1.)
|
|
40
|
-
for _label in labels
|
|
41
|
-
],
|
|
42
|
-
metadata=metadata))
|
|
43
|
-
|
|
44
|
-
return input_proto
|
|
45
|
-
|
|
46
|
-
def _extract_protos(self) -> None:
|
|
47
|
-
"""
|
|
48
|
-
Creates input protos for each data generator item.
|
|
49
|
-
"""
|
|
50
|
-
for i, item in tqdm(enumerate(self.datagen_object), desc="Loading text data"):
|
|
51
|
-
metadata = Struct()
|
|
52
|
-
text = item.text
|
|
53
|
-
labels = item.labels if isinstance(item.labels, list) else [item.labels] # clarifai concept
|
|
54
|
-
input_id = f"{self.dataset_id}-{self.split}-{i}" if item.id is None else f"{self.split}-{str(item.id)}"
|
|
55
|
-
metadata.update({"split": self.split})
|
|
56
|
-
|
|
57
|
-
self.input_ids.append(input_id)
|
|
58
|
-
input_proto = self.create_input_protos(text, labels, input_id, self.dataset_id, metadata)
|
|
59
|
-
|
|
60
|
-
self._all_input_protos[input_id] = input_proto
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
## Datasets Zoo
|
|
2
|
-
|
|
3
|
-
A collection of data preprocessing modules for popular public datasets to allow for compatible upload into Clarifai user app datasets.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
If a dataset module exists in the zoo, uploading the specific dataset can be easily done by simply creating a python script (or via commandline) and specifying the dataset module name in the `from_zoo` parameter of the `UploadConfig` class .i.e.
|
|
8
|
-
|
|
9
|
-
```python
|
|
10
|
-
from clarifai.data_upload.upload import UploadConfig
|
|
11
|
-
|
|
12
|
-
upload_obj = UploadConfig(
|
|
13
|
-
user_id="",
|
|
14
|
-
app_id="",
|
|
15
|
-
pat="", # Clarifai user PAT (not Clarifai app PAT)
|
|
16
|
-
dataset_id="",
|
|
17
|
-
task="",
|
|
18
|
-
from_zoo="coco_detection",
|
|
19
|
-
split="val" # train, val or test depending on the dataset
|
|
20
|
-
)
|
|
21
|
-
# execute data upload to Clarifai app dataset
|
|
22
|
-
upload_obj.upload_to_clarifai()
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Zoo Datasets
|
|
26
|
-
|
|
27
|
-
| dataset name | task | module name (.py) | splits |
|
|
28
|
-
| --- | --- | --- | --- |
|
|
29
|
-
| [COCO 2017](https://cocodataset.org/#download) | Detection | `coco_detection` | `train`, `val` |
|
|
30
|
-
| | Segmentation | `coco_segmentation` | `train`, `val` |
|
|
31
|
-
| | Captions | `coco_captions` | `train`, `val` |
|
|
32
|
-
|[xVIEW](http://xviewdataset.org/) | Detection | `xview_detection` | `train`
|
|
33
|
-
| [ImageNet](https://www.image-net.org/) | Classification | `imagenet_classification` | `train`
|
|
34
|
-
## Contributing Modules
|
|
35
|
-
|
|
36
|
-
A dataset (preprocessing) module is a python script that contains a dataset class which implements data download (to download the dataset from a source to local disk dir) & extraction and dataloader methods.
|
|
37
|
-
|
|
38
|
-
The class naming convention is `<datasetname>Dataset`. The dataset class must accept `split` as the only argument in the `__init__` method and the `dataloader` method must be a generator that yields either of `VisualClassificationFeatures()`, `VisualDetectionFeatures()`, `VisualSegmentationFeatures()` or `TextFeatures()` as defined in [clarifai/data_upload/datasets/features.py](datasets/features.py). Other methods can be added as seen fit but `dataloader()` is the main method and must strictly be named `dataloader`.
|
|
39
|
-
Reference can be taken from the existing dataset modules in the zoo for development.
|
|
40
|
-
|
|
41
|
-
## Notes
|
|
42
|
-
|
|
43
|
-
* Dataset in the zoo by default first create a `data` directory in the local directory where the call to `UploadConfig(...).upload_to_clarifai()` is made and then download the data into this `data` directory, preprocess the data and finally execute upload to a Clarifai app dataset. For instance with the COCO dataset modules above, the coco2017 dataset is by default downloaded first into a `data` directory, extracted and then preprocessing is performed on it and finally uploaded to Clarifai.
|
|
44
|
-
|
|
45
|
-
* Taking the above into consideration, to avoid the scripts re-downloading data you already have locally, create a `data` directory in the same directory where you'll make a call to `UploadConfig(...).upload_to_clarifai()` and move your extracted data there. **Ensure that the extracted folder/file names and file structure MATCH those when the downloaded zips are extracted.**
|
|
46
|
-
|
|
47
|
-
* COCO Format: To reuse the coco modules above on your coco format data, ensure the criteria in the two points above is adhered to first. If so, pass the coco module name from any of the above in the zoo to the `from_zoo=` parameter in `UploadConfig()` and finally invoke the `upload_to_clarifai()` method.
|
|
48
|
-
|
|
49
|
-
* xVIEW Dataset: To upload, you have to register and download images,label from [xviewdataset](http://xviewdataset.org/#dataset) follow the above mentioned steps to place extracted folder in `data` directory. Finally pass the xview module name to `from_zoo=` parameter in `UploadConfig()` and invoke the `upload_to_clarifai()` method.
|
|
50
|
-
|
|
51
|
-
* ImageNet Dataset: ImageNet Dataset should be downloaded and placed in the 'data' folder along with the [label mapping file](https://www.kaggle.com/competitions/imagenet-object-localization-challenge/data?select=LOC_synset_mapping.txt).
|
|
52
|
-
|
|
53
|
-
<data>/
|
|
54
|
-
├── train/
|
|
55
|
-
├── LOC_synset_mapping.txt
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
#! COCO 2017 Image Segmentation dataset
|
|
2
|
-
|
|
3
|
-
import gc
|
|
4
|
-
import os
|
|
5
|
-
import zipfile
|
|
6
|
-
from functools import reduce
|
|
7
|
-
from glob import glob
|
|
8
|
-
|
|
9
|
-
import cv2
|
|
10
|
-
import numpy as np
|
|
11
|
-
import requests
|
|
12
|
-
from pycocotools import mask as maskUtils
|
|
13
|
-
from pycocotools.coco import COCO
|
|
14
|
-
from tqdm import tqdm
|
|
15
|
-
|
|
16
|
-
from ..features import VisualSegmentationFeatures
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class COCOSegmentationDataset:
|
|
20
|
-
"""COCO 2017 Image Segmentation Dataset."""
|
|
21
|
-
|
|
22
|
-
def __init__(self, split: str = "train"):
|
|
23
|
-
"""
|
|
24
|
-
Initialize coco dataset.
|
|
25
|
-
Args:
|
|
26
|
-
filenames: the coco zip filenames: Dict[str, str] to be downloaded if download=True,
|
|
27
|
-
data_dir: the local coco dataset directory
|
|
28
|
-
split: "train" or "val"
|
|
29
|
-
"""
|
|
30
|
-
self.filenames = {
|
|
31
|
-
"train": "train2017.zip",
|
|
32
|
-
"val": "val2017.zip",
|
|
33
|
-
"annotations": "annotations_trainval2017.zip"
|
|
34
|
-
}
|
|
35
|
-
self.split = split
|
|
36
|
-
self.url = "http://images.cocodataset.org/zips/" # coco base image-zip url
|
|
37
|
-
self.data_dir = os.path.join(os.curdir, "data") # data storage dir
|
|
38
|
-
self.extracted_coco_dirs = {"train": None, "val": None, "annotations": None}
|
|
39
|
-
|
|
40
|
-
def coco_download(self, save_dir):
|
|
41
|
-
"""Download coco dataset."""
|
|
42
|
-
if not os.path.exists(save_dir):
|
|
43
|
-
os.mkdir(save_dir)
|
|
44
|
-
|
|
45
|
-
#check if train, val and annotation dirs exist
|
|
46
|
-
#so that the coco2017 data isn't downloaded
|
|
47
|
-
for key, filename in self.filenames.items():
|
|
48
|
-
existing_files = glob(f"{save_dir}/{key}*")
|
|
49
|
-
if existing_files:
|
|
50
|
-
print(f"{key} dataset already downloded and extracted")
|
|
51
|
-
continue
|
|
52
|
-
|
|
53
|
-
print("-" * 80)
|
|
54
|
-
print(f"Downloading {filename}")
|
|
55
|
-
print("-" * 80)
|
|
56
|
-
|
|
57
|
-
if "annotations" in filename:
|
|
58
|
-
self.url = "http://images.cocodataset.org/annotations/"
|
|
59
|
-
|
|
60
|
-
response = requests.get(self.url + filename, stream=True)
|
|
61
|
-
response.raise_for_status()
|
|
62
|
-
with open(os.path.join(save_dir, filename), "wb") as _file:
|
|
63
|
-
for chunk in tqdm(response.iter_content(chunk_size=5124000)):
|
|
64
|
-
if chunk:
|
|
65
|
-
_file.write(chunk)
|
|
66
|
-
print("Coco data download complete...")
|
|
67
|
-
|
|
68
|
-
#extract files
|
|
69
|
-
zf = zipfile.ZipFile(os.path.join(save_dir, filename))
|
|
70
|
-
print(f" Extracting {filename} file")
|
|
71
|
-
zf.extractall(path=save_dir)
|
|
72
|
-
# Delete coco zip
|
|
73
|
-
print(f" Deleting {filename}")
|
|
74
|
-
os.remove(path=os.path.join(save_dir, filename))
|
|
75
|
-
|
|
76
|
-
def dataloader(self):
|
|
77
|
-
"""
|
|
78
|
-
Transform coco data into clarifai proto compatible format for upload.
|
|
79
|
-
Returns:
|
|
80
|
-
VisualSegmentationFeatures type generator.
|
|
81
|
-
"""
|
|
82
|
-
if isinstance(self.filenames, dict) and len(self.filenames) == 3:
|
|
83
|
-
self.coco_download(self.data_dir)
|
|
84
|
-
self.extracted_coco_dirs["train"] = [os.path.join(self.data_dir, i) \
|
|
85
|
-
for i in os.listdir(self.data_dir) if "train" in i][0]
|
|
86
|
-
self.extracted_coco_dirs["val"] = [os.path.join(self.data_dir, i) \
|
|
87
|
-
for i in os.listdir(self.data_dir) if "val" in i][0]
|
|
88
|
-
|
|
89
|
-
self.extracted_coco_dirs["annotations"] = [os.path.join(self.data_dir, i) \
|
|
90
|
-
for i in os.listdir(self.data_dir) if "annotations" in i][0]
|
|
91
|
-
else:
|
|
92
|
-
raise Exception(f"`filenames` must be a dict of atleast 3 coco zip file names; \
|
|
93
|
-
train, val and annotations. Found {len(self.filenames)} items instead.")
|
|
94
|
-
|
|
95
|
-
annot_file = glob(self.extracted_coco_dirs["annotations"] + "/" +\
|
|
96
|
-
f"instances_{self.split}*")[0]
|
|
97
|
-
coco = COCO(annot_file)
|
|
98
|
-
categories = coco.loadCats(coco.getCatIds())
|
|
99
|
-
cat_id_map = {category["id"]: category["name"] for category in categories}
|
|
100
|
-
cat_img_ids = {}
|
|
101
|
-
for cat_id in list(cat_id_map.keys()):
|
|
102
|
-
cat_img_ids[cat_id] = coco.getImgIds(catIds=[cat_id])
|
|
103
|
-
|
|
104
|
-
img_ids = []
|
|
105
|
-
for i in list(cat_img_ids.values()):
|
|
106
|
-
img_ids.extend(i)
|
|
107
|
-
|
|
108
|
-
#get annotations for each image id
|
|
109
|
-
for _id in set(img_ids):
|
|
110
|
-
annots = [] # polygons
|
|
111
|
-
class_names = []
|
|
112
|
-
labels = [i for i in list(filter(lambda x: _id in cat_img_ids[x], cat_img_ids))]
|
|
113
|
-
image_path = glob(self.extracted_coco_dirs[self.split]+"/"+\
|
|
114
|
-
f"{str(_id).zfill(12)}*")[0]
|
|
115
|
-
|
|
116
|
-
image_height, image_width = cv2.imread(image_path).shape[:2]
|
|
117
|
-
for cat_id in labels:
|
|
118
|
-
annot_ids = coco.getAnnIds(imgIds=_id, catIds=[cat_id])
|
|
119
|
-
if len(annot_ids) > 0:
|
|
120
|
-
img_annotations = coco.loadAnns(annot_ids)
|
|
121
|
-
for ann in img_annotations:
|
|
122
|
-
# get polygons
|
|
123
|
-
if type(ann['segmentation']) == list:
|
|
124
|
-
for seg in ann['segmentation']:
|
|
125
|
-
poly = np.array(seg).reshape((int(len(seg) / 2), 2))
|
|
126
|
-
poly[:, 0], poly[:, 1] = poly[:, 0] / image_width, poly[:, 1] / image_height
|
|
127
|
-
annots.append(poly.tolist()) #[[x=col, y=row],...]
|
|
128
|
-
class_names.append(cat_id_map[cat_id])
|
|
129
|
-
else: # seg: {"counts":[...]}
|
|
130
|
-
if type(ann['segmentation']['counts']) == list:
|
|
131
|
-
rle = maskUtils.frPyObjects([ann['segmentation']], image_height, image_width)
|
|
132
|
-
else:
|
|
133
|
-
rle = ann['segmentation']
|
|
134
|
-
mask = maskUtils.decode(rle) #binary mask
|
|
135
|
-
#convert mask to polygons and add to annots
|
|
136
|
-
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
|
|
137
|
-
polygons = []
|
|
138
|
-
for cont in contours:
|
|
139
|
-
if cont.size >= 6:
|
|
140
|
-
polygons.append(cont.astype(float).flatten().tolist())
|
|
141
|
-
# store polygons in (x,y) pairs
|
|
142
|
-
polygons_flattened = reduce(lambda x, y: x + y, polygons)
|
|
143
|
-
del polygons
|
|
144
|
-
del contours
|
|
145
|
-
del mask
|
|
146
|
-
gc.collect()
|
|
147
|
-
|
|
148
|
-
polygons = np.array(polygons_flattened).reshape((int(len(polygons_flattened) / 2),
|
|
149
|
-
2))
|
|
150
|
-
polygons[:, 0] = polygons[:, 0] / image_width
|
|
151
|
-
polygons[:, 1] = polygons[:, 1] / image_height
|
|
152
|
-
|
|
153
|
-
annots.append(polygons.tolist()) #[[x=col, y=row],...,[x=col, y=row]]
|
|
154
|
-
class_names.append(cat_id_map[cat_id])
|
|
155
|
-
else: # if no annotations for given image_id-cat_id pair
|
|
156
|
-
continue
|
|
157
|
-
assert len(class_names) == len(annots), f"Num classes must match num annotations\
|
|
158
|
-
for a single image. Found {len(class_names)} classes and {len(annots)} polygons."
|
|
159
|
-
|
|
160
|
-
yield VisualSegmentationFeatures(image_path, class_names, annots, id=_id)
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
## Data upload from packages
|
|
2
|
-
|
|
3
|
-
Examples of how to upload your local directory datasets into clarifai app datasets using data_upload utils `from_module` feature.
|
|
4
|
-
|
|
5
|
-
The `examples.py` script imports the data upload module and executes the upload of the IMDB_reviews text_classification and [food-101 image classification](https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/) datasets by passing the package paths as a parameter in UploadConfig().
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#! Cifar10 Dataset
|
|
2
|
-
|
|
3
|
-
import csv
|
|
4
|
-
import os
|
|
5
|
-
|
|
6
|
-
from clarifai.data_upload.datasets.features import VisualClassificationFeatures
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class Cifar10Dataset:
|
|
10
|
-
"""Cifar10 Dataset."""
|
|
11
|
-
|
|
12
|
-
def __init__(self, split: str = "train"):
|
|
13
|
-
"""
|
|
14
|
-
Initialize dataset params.
|
|
15
|
-
Args:
|
|
16
|
-
data_dir: the local dataset directory.
|
|
17
|
-
split: "train" or "test"
|
|
18
|
-
"""
|
|
19
|
-
self.split = split
|
|
20
|
-
self.data_dirs = {
|
|
21
|
-
"train": os.path.join(os.path.dirname(__file__), "cifar_small_train.csv"),
|
|
22
|
-
"test": os.path.join(os.path.dirname(__file__), "cifar_small_test.csv")
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
def dataloader(self):
|
|
26
|
-
"""
|
|
27
|
-
Transform text data into clarifai proto compatible
|
|
28
|
-
format for upload.
|
|
29
|
-
Returns:
|
|
30
|
-
TextFeatures type generator.
|
|
31
|
-
"""
|
|
32
|
-
## Your preprocessing code here
|
|
33
|
-
with open(self.data_dirs[self.split]) as _file:
|
|
34
|
-
reader = csv.reader(_file)
|
|
35
|
-
next(reader, None) # skip header
|
|
36
|
-
for review in reader:
|
|
37
|
-
yield VisualClassificationFeatures(
|
|
38
|
-
image_path='examples/image_classification/cifar10/' + review[0],
|
|
39
|
-
label=review[1],
|
|
40
|
-
id=None)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#! Food-101 image classification dataset
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
|
|
5
|
-
from clarifai.data_upload.datasets.features import VisualClassificationFeatures
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Food101Dataset:
|
|
9
|
-
"""Food-101 Image Classification Dataset.
|
|
10
|
-
url: https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self, split: str = "train"):
|
|
14
|
-
"""
|
|
15
|
-
Initialize dataset params.
|
|
16
|
-
Args:
|
|
17
|
-
data_dir: the local dataset directory.
|
|
18
|
-
split: "train" or "test"
|
|
19
|
-
"""
|
|
20
|
-
self.split = split
|
|
21
|
-
self.image_dir = {"train": os.path.join(os.path.dirname(__file__), "images")}
|
|
22
|
-
|
|
23
|
-
def dataloader(self):
|
|
24
|
-
"""
|
|
25
|
-
Transform food-101 dataset into clarifai proto compatible
|
|
26
|
-
format for upload.
|
|
27
|
-
Returns:
|
|
28
|
-
VisualClassificationFeatures type generator.
|
|
29
|
-
"""
|
|
30
|
-
## Your preprocessing code here
|
|
31
|
-
class_names = os.listdir(self.image_dir[self.split])
|
|
32
|
-
for class_name in class_names:
|
|
33
|
-
for image in os.listdir(os.path.join(self.image_dir[self.split], class_name)):
|
|
34
|
-
image_path = os.path.join(self.image_dir[self.split], class_name, image)
|
|
35
|
-
yield VisualClassificationFeatures(
|
|
36
|
-
image_path=image_path,
|
|
37
|
-
label=class_name,
|
|
38
|
-
id=None # or image_id
|
|
39
|
-
)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|