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
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
from collections import defaultdict
|
|
2
|
+
from typing import Iterator, List, Tuple, TypeVar, Union
|
|
3
|
+
|
|
4
|
+
from clarifai_grpc.grpc.api import resources_pb2
|
|
5
|
+
|
|
6
|
+
from clarifai.client.input import Inputs
|
|
7
|
+
from clarifai.datasets.upload.features import (TextFeatures, VisualClassificationFeatures,
|
|
8
|
+
VisualDetectionFeatures, VisualSegmentationFeatures)
|
|
9
|
+
|
|
10
|
+
OutputFeaturesType = TypeVar(
|
|
11
|
+
'OutputFeaturesType',
|
|
12
|
+
bound=Union[TextFeatures, VisualClassificationFeatures, VisualDetectionFeatures,
|
|
13
|
+
VisualSegmentationFeatures])
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ClarifaiDataset:
|
|
17
|
+
"""Clarifai datasets base class."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
20
|
+
self.datagen_object = datagen_object
|
|
21
|
+
self.dataset_id = dataset_id
|
|
22
|
+
self.split = split
|
|
23
|
+
self.all_input_ids = {}
|
|
24
|
+
self._all_input_protos = {}
|
|
25
|
+
self._all_annotation_protos = defaultdict(list)
|
|
26
|
+
self.input_object = Inputs()
|
|
27
|
+
|
|
28
|
+
def __len__(self) -> int:
|
|
29
|
+
"""Get size of all input protos"""
|
|
30
|
+
return len(self.datagen_object)
|
|
31
|
+
|
|
32
|
+
def _to_list(self, input_protos: Iterator) -> List:
|
|
33
|
+
"""Parse protos iterator to list."""
|
|
34
|
+
return list(input_protos)
|
|
35
|
+
|
|
36
|
+
def _extract_protos(self) -> None:
|
|
37
|
+
"""Create input image protos for each data generator item."""
|
|
38
|
+
raise NotImplementedError()
|
|
39
|
+
|
|
40
|
+
def get_protos(self, input_ids: List[int]
|
|
41
|
+
) -> Tuple[List[resources_pb2.Input], List[resources_pb2.Annotation]]:
|
|
42
|
+
"""Get input and annotation protos based on input_ids.
|
|
43
|
+
Args:
|
|
44
|
+
input_ids: List of input IDs to retrieve the protos for.
|
|
45
|
+
Returns:
|
|
46
|
+
Input and Annotation proto iterators for the specified input IDs.
|
|
47
|
+
"""
|
|
48
|
+
input_protos, annotation_protos = self._extract_protos(input_ids)
|
|
49
|
+
|
|
50
|
+
return input_protos, annotation_protos
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ClarifaiDataLoader:
|
|
54
|
+
"""Clarifai data loader base class."""
|
|
55
|
+
|
|
56
|
+
def __init__(self, split: str) -> None:
|
|
57
|
+
pass
|
|
58
|
+
|
|
59
|
+
def load_data(self) -> None:
|
|
60
|
+
raise NotImplementedError()
|
|
61
|
+
|
|
62
|
+
def __len__(self) -> int:
|
|
63
|
+
raise NotImplementedError()
|
|
64
|
+
|
|
65
|
+
def __getitem__(self, index: int) -> OutputFeaturesType:
|
|
66
|
+
raise NotImplementedError()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
## Dataset upload from local directory
|
|
2
|
+
|
|
3
|
+
Examples of how to upload your local directory datasets into clarifai app using `module_dir` feature from `Dataset`.
|
|
4
|
+
|
|
5
|
+
**Note:**
|
|
6
|
+
**Note:**
|
|
7
|
+
|
|
8
|
+
- Ensure that the `CLARIFAI_PAT` environment variable is set.
|
|
9
|
+
- Ensure that the appropriate base workflow is being set for indexing respective input type.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Image Classification - Cifar10
|
|
13
|
+
```python
|
|
14
|
+
from clarifai.client.dataset import Dataset
|
|
15
|
+
dataset = Dataset(user_id="user_id", app_id="app_id", dataset_id="dataset_id")
|
|
16
|
+
dataset.upload_dataset(task="visual_classification", split="train", module_dir="path_to_cifar10_module")
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Image Classification - [Food-101](https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/)
|
|
20
|
+
```python
|
|
21
|
+
from clarifai.client.dataset import Dataset
|
|
22
|
+
dataset = Dataset(user_id="user_id", app_id="app_id", dataset_id="dataset_id")
|
|
23
|
+
dataset.upload_dataset(task="visual_classification", split="train", module_dir="path_to_food-101_module")
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Text Classification - IMDB Reviews
|
|
27
|
+
```python
|
|
28
|
+
from clarifai.client.dataset import Dataset
|
|
29
|
+
dataset = Dataset(user_id="user_id", app_id="app_id", dataset_id="dataset_id")
|
|
30
|
+
dataset.upload_dataset(task="text_clf", split="train", module_dir="path_to_imdb_reviews_module")
|
|
31
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#! Cifar10 Dataset
|
|
2
|
+
|
|
3
|
+
import csv
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
from clarifai.datasets.upload.base import ClarifaiDataLoader
|
|
7
|
+
from clarifai.datasets.upload.features import VisualClassificationFeatures
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Cifar10DataLoader(ClarifaiDataLoader):
|
|
11
|
+
"""Cifar10 Dataset."""
|
|
12
|
+
|
|
13
|
+
def __init__(self, split: str = "train"):
|
|
14
|
+
"""Initialize dataset params.
|
|
15
|
+
Args:
|
|
16
|
+
split: "train" or "test"
|
|
17
|
+
"""
|
|
18
|
+
self.split = split
|
|
19
|
+
self.data_dirs = {
|
|
20
|
+
"train": os.path.join(os.path.dirname(__file__), "cifar_small_train.csv"),
|
|
21
|
+
"test": os.path.join(os.path.dirname(__file__), "cifar_small_test.csv")
|
|
22
|
+
}
|
|
23
|
+
self.data = self.load_data()
|
|
24
|
+
|
|
25
|
+
def load_data(self):
|
|
26
|
+
data = []
|
|
27
|
+
with open(self.data_dirs[self.split]) as _file:
|
|
28
|
+
reader = csv.reader(_file)
|
|
29
|
+
next(reader, None) # skip header
|
|
30
|
+
for review in reader:
|
|
31
|
+
data.append((review[0], review[1]))
|
|
32
|
+
return data
|
|
33
|
+
|
|
34
|
+
def __getitem__(self, index):
|
|
35
|
+
item = self.data[index]
|
|
36
|
+
return VisualClassificationFeatures(
|
|
37
|
+
image_path=os.path.join(os.path.dirname(__file__), item[0]),
|
|
38
|
+
label=item[1],
|
|
39
|
+
id=os.path.basename(item[0]).split(".")[0])
|
|
40
|
+
|
|
41
|
+
def __len__(self):
|
|
42
|
+
return len(self.data)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from clarifai.datasets.upload.base import ClarifaiDataLoader
|
|
4
|
+
from clarifai.datasets.upload.features import VisualClassificationFeatures
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Food101DataLoader(ClarifaiDataLoader):
|
|
8
|
+
"""Food-101 Image Classification Dataset."""
|
|
9
|
+
|
|
10
|
+
def __init__(self, split: str = "train"):
|
|
11
|
+
"""Initialize dataset params.
|
|
12
|
+
Args:
|
|
13
|
+
split: "train" or "test"
|
|
14
|
+
"""
|
|
15
|
+
self.split = split
|
|
16
|
+
self.image_dir = {"train": os.path.join(os.path.dirname(__file__), "images")}
|
|
17
|
+
self.load_data()
|
|
18
|
+
|
|
19
|
+
def load_data(self):
|
|
20
|
+
"""Load data for the food-101 dataset."""
|
|
21
|
+
self.data = []
|
|
22
|
+
class_names = os.listdir(self.image_dir[self.split])
|
|
23
|
+
for class_name in class_names:
|
|
24
|
+
for image in os.listdir(os.path.join(self.image_dir[self.split], class_name)):
|
|
25
|
+
image_path = os.path.join(self.image_dir[self.split], class_name, image)
|
|
26
|
+
self.data.append({
|
|
27
|
+
"image_path": image_path,
|
|
28
|
+
"class_name": class_name,
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
def __getitem__(self, idx):
|
|
32
|
+
data_item = self.data[idx]
|
|
33
|
+
image_path = data_item["image_path"]
|
|
34
|
+
class_name = data_item["class_name"]
|
|
35
|
+
return VisualClassificationFeatures(
|
|
36
|
+
image_path=image_path, label=class_name, id=os.path.basename(image_path).split(".")[0])
|
|
37
|
+
|
|
38
|
+
def __len__(self):
|
|
39
|
+
return len(self.data)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
from clarifai.datasets.upload.base import ClarifaiDataLoader
|
|
5
|
+
from clarifai.datasets.upload.features import TextFeatures
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class IMDBMovieReviewsDataLoader(ClarifaiDataLoader):
|
|
9
|
+
"""IMDB 50K Movie Reviews Dataset."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, split: str = "train"):
|
|
12
|
+
"""Initialize dataset params.
|
|
13
|
+
Args:
|
|
14
|
+
split: "train" or "test"
|
|
15
|
+
"""
|
|
16
|
+
self.split = split
|
|
17
|
+
self.data_dirs = {
|
|
18
|
+
"train": os.path.join(os.path.dirname(__file__), "train.csv"),
|
|
19
|
+
"test": os.path.join(os.path.dirname(__file__), "test.csv")
|
|
20
|
+
}
|
|
21
|
+
self.data = []
|
|
22
|
+
|
|
23
|
+
self.load_data()
|
|
24
|
+
|
|
25
|
+
def load_data(self):
|
|
26
|
+
with open(self.data_dirs[self.split]) as _file:
|
|
27
|
+
reader = csv.reader(_file)
|
|
28
|
+
next(reader, None) # skip header
|
|
29
|
+
for review in reader:
|
|
30
|
+
self.data.append({"text": review[0], "labels": review[1], "id": None})
|
|
31
|
+
|
|
32
|
+
def __getitem__(self, idx):
|
|
33
|
+
item = self.data[idx]
|
|
34
|
+
return TextFeatures(text=item["text"], labels=item["labels"], id=item["id"])
|
|
35
|
+
|
|
36
|
+
def __len__(self):
|
|
37
|
+
return len(self.data)
|
|
@@ -5,9 +5,7 @@ from typing import List, Optional, Union
|
|
|
5
5
|
|
|
6
6
|
@dataclass
|
|
7
7
|
class TextFeatures:
|
|
8
|
-
"""
|
|
9
|
-
Text classification datasets preprocessing output features.
|
|
10
|
-
"""
|
|
8
|
+
"""Text classification datasets preprocessing output features."""
|
|
11
9
|
text: str
|
|
12
10
|
labels: List[Union[str, int]] # List[str or int] to cater for multi-class tasks
|
|
13
11
|
id: Optional[int] = None # text_id
|
|
@@ -15,9 +13,7 @@ class TextFeatures:
|
|
|
15
13
|
|
|
16
14
|
@dataclass
|
|
17
15
|
class VisualClassificationFeatures:
|
|
18
|
-
"""
|
|
19
|
-
Image classification datasets preprocessing output features.
|
|
20
|
-
"""
|
|
16
|
+
"""Image classification datasets preprocessing output features."""
|
|
21
17
|
image_path: str
|
|
22
18
|
label: Union[str, int]
|
|
23
19
|
geo_info: Optional[List[float]] = None #[Longitude, Latitude]
|
|
@@ -26,9 +22,7 @@ class VisualClassificationFeatures:
|
|
|
26
22
|
|
|
27
23
|
@dataclass
|
|
28
24
|
class VisualDetectionFeatures:
|
|
29
|
-
"""
|
|
30
|
-
Image Detection datasets preprocessing output features.
|
|
31
|
-
"""
|
|
25
|
+
"""Image Detection datasets preprocessing output features."""
|
|
32
26
|
image_path: str
|
|
33
27
|
classes: List[Union[str, int]]
|
|
34
28
|
bboxes: List[List[float]]
|
|
@@ -38,9 +32,7 @@ class VisualDetectionFeatures:
|
|
|
38
32
|
|
|
39
33
|
@dataclass
|
|
40
34
|
class VisualSegmentationFeatures:
|
|
41
|
-
"""
|
|
42
|
-
Image Segmentation datasets preprocessing output features.
|
|
43
|
-
"""
|
|
35
|
+
"""Image Segmentation datasets preprocessing output features."""
|
|
44
36
|
image_path: str
|
|
45
37
|
classes: List[Union[str, int]]
|
|
46
38
|
polygons: List[List[List[float]]]
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
3
|
+
from typing import Iterator, List, Tuple
|
|
4
|
+
|
|
5
|
+
from clarifai_grpc.grpc.api import resources_pb2
|
|
6
|
+
from google.protobuf.struct_pb2 import Struct
|
|
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
|
+
|
|
16
|
+
def _extract_protos(self, batch_input_ids: List[str]
|
|
17
|
+
) -> Tuple[List[resources_pb2.Input], List[resources_pb2.Annotation]]:
|
|
18
|
+
"""Create input image and annotation protos for batch of input ids.
|
|
19
|
+
Args:
|
|
20
|
+
batch_input_ids: List of input IDs to retrieve the protos for.
|
|
21
|
+
Returns:
|
|
22
|
+
input_protos: List of input protos.
|
|
23
|
+
annotation_protos: List of annotation protos.
|
|
24
|
+
"""
|
|
25
|
+
input_protos, annotation_protos = [], []
|
|
26
|
+
|
|
27
|
+
def process_datagen_item(id):
|
|
28
|
+
datagen_item = self.datagen_object[id]
|
|
29
|
+
metadata = Struct()
|
|
30
|
+
image_path = datagen_item.image_path
|
|
31
|
+
label = datagen_item.label if isinstance(datagen_item.label,
|
|
32
|
+
list) else [datagen_item.label] # clarifai concept
|
|
33
|
+
input_id = f"{self.dataset_id}-{self.split}-{id}" if datagen_item.id is None else f"{self.split}-{str(datagen_item.id)}"
|
|
34
|
+
geo_info = datagen_item.geo_info
|
|
35
|
+
metadata.update({"filename": os.path.basename(image_path), "split": self.split})
|
|
36
|
+
|
|
37
|
+
self.all_input_ids[id] = input_id
|
|
38
|
+
input_protos.append(
|
|
39
|
+
self.input_object.get_input_from_file(
|
|
40
|
+
input_id=input_id,
|
|
41
|
+
image_file=image_path,
|
|
42
|
+
dataset_id=self.dataset_id,
|
|
43
|
+
labels=label,
|
|
44
|
+
geo_info=geo_info,
|
|
45
|
+
metadata=metadata))
|
|
46
|
+
|
|
47
|
+
with ThreadPoolExecutor(max_workers=4) as executor:
|
|
48
|
+
futures = [executor.submit(process_datagen_item, id) for id in batch_input_ids]
|
|
49
|
+
for job in futures:
|
|
50
|
+
job.result()
|
|
51
|
+
|
|
52
|
+
return input_protos, annotation_protos
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class VisualDetectionDataset(ClarifaiDataset):
|
|
56
|
+
"""Visual detection dataset proto class."""
|
|
57
|
+
|
|
58
|
+
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
59
|
+
super().__init__(datagen_object, dataset_id, split)
|
|
60
|
+
|
|
61
|
+
def _extract_protos(self, batch_input_ids: List[int]
|
|
62
|
+
) -> Tuple[List[resources_pb2.Input], List[resources_pb2.Annotation]]:
|
|
63
|
+
"""Create input image protos for each data generator item.
|
|
64
|
+
Args:
|
|
65
|
+
batch_input_ids: List of input IDs to retrieve the protos for.
|
|
66
|
+
Returns:
|
|
67
|
+
input_protos: List of input protos.
|
|
68
|
+
annotation_protos: List of annotation protos.
|
|
69
|
+
"""
|
|
70
|
+
input_protos, annotation_protos = [], []
|
|
71
|
+
|
|
72
|
+
def process_datagen_item(id):
|
|
73
|
+
datagen_item = self.datagen_object[id]
|
|
74
|
+
metadata = Struct()
|
|
75
|
+
image = datagen_item.image_path
|
|
76
|
+
labels = datagen_item.classes # list:[l1,...,ln]
|
|
77
|
+
bboxes = datagen_item.bboxes # [[xmin,ymin,xmax,ymax],...,[xmin,ymin,xmax,ymax]]
|
|
78
|
+
input_id = f"{self.dataset_id}-{self.split}-{i}" if datagen_item.id is None else f"{self.split}-{str(datagen_item.id)}"
|
|
79
|
+
metadata.update({"filename": os.path.basename(image), "split": self.split})
|
|
80
|
+
geo_info = datagen_item.geo_info
|
|
81
|
+
|
|
82
|
+
self.all_input_ids[id] = input_id
|
|
83
|
+
input_protos.append(
|
|
84
|
+
self.input_object.get_input_from_file(
|
|
85
|
+
input_id=input_id,
|
|
86
|
+
image_file=image,
|
|
87
|
+
dataset_id=self.dataset_id,
|
|
88
|
+
geo_info=geo_info,
|
|
89
|
+
metadata=metadata))
|
|
90
|
+
# iter over bboxes and classes
|
|
91
|
+
# one id could have more than one bbox and label
|
|
92
|
+
for i in range(len(bboxes)):
|
|
93
|
+
annotation_protos.append(
|
|
94
|
+
self.input_object.get_annotation_proto(
|
|
95
|
+
input_id=input_id, label=labels[i], annotations=bboxes[i]))
|
|
96
|
+
|
|
97
|
+
with ThreadPoolExecutor(max_workers=4) as executor:
|
|
98
|
+
futures = [executor.submit(process_datagen_item, id) for id in batch_input_ids]
|
|
99
|
+
for job in futures:
|
|
100
|
+
job.result()
|
|
101
|
+
|
|
102
|
+
return input_protos, annotation_protos
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class VisualSegmentationDataset(ClarifaiDataset):
|
|
106
|
+
"""Visual segmentation dataset proto class."""
|
|
107
|
+
|
|
108
|
+
def __init__(self, datagen_object: Iterator, dataset_id: str, split: str) -> None:
|
|
109
|
+
super().__init__(datagen_object, dataset_id, split)
|
|
110
|
+
|
|
111
|
+
def _extract_protos(self, batch_input_ids: List[str]
|
|
112
|
+
) -> Tuple[List[resources_pb2.Input], List[resources_pb2.Annotation]]:
|
|
113
|
+
"""Create input image and annotation protos for batch of input ids.
|
|
114
|
+
Args:
|
|
115
|
+
batch_input_ids: List of input IDs to retrieve the protos for.
|
|
116
|
+
Returns:
|
|
117
|
+
input_protos: List of input protos.
|
|
118
|
+
annotation_protos: List of annotation protos.
|
|
119
|
+
"""
|
|
120
|
+
input_protos, annotation_protos = [], []
|
|
121
|
+
|
|
122
|
+
def process_datagen_item(id):
|
|
123
|
+
datagen_item = self.datagen_object[id]
|
|
124
|
+
metadata = Struct()
|
|
125
|
+
image = datagen_item.image_path
|
|
126
|
+
labels = datagen_item.classes
|
|
127
|
+
_polygons = datagen_item.polygons # list of polygons: [[[x,y],...,[x,y]],...]
|
|
128
|
+
input_id = f"{self.dataset_id}-{self.split}-{i}" if datagen_item.id is None else f"{self.split}-{str(datagen_item.id)}"
|
|
129
|
+
metadata.update({"filename": os.path.basename(image), "split": self.split})
|
|
130
|
+
geo_info = datagen_item.geo_info
|
|
131
|
+
|
|
132
|
+
self.all_input_ids[id] = input_id
|
|
133
|
+
input_protos.append(
|
|
134
|
+
self.input_object.get_input_from_file(
|
|
135
|
+
input_id=input_id,
|
|
136
|
+
image_file=image,
|
|
137
|
+
dataset_id=self.dataset_id,
|
|
138
|
+
geo_info=geo_info,
|
|
139
|
+
metadata=metadata))
|
|
140
|
+
|
|
141
|
+
## Iterate over each masked image and create a proto for upload to clarifai
|
|
142
|
+
## The length of masks/polygons-list and labels must be equal
|
|
143
|
+
for i, _polygon in enumerate(_polygons):
|
|
144
|
+
try:
|
|
145
|
+
annotation_protos.append(
|
|
146
|
+
self.input_object.get_mask_proto(
|
|
147
|
+
input_id=input_id, label=labels[i], polygons=_polygon))
|
|
148
|
+
except IndexError:
|
|
149
|
+
continue
|
|
150
|
+
|
|
151
|
+
with ThreadPoolExecutor(max_workers=4) as executor:
|
|
152
|
+
futures = [executor.submit(process_datagen_item, id) for id in batch_input_ids]
|
|
153
|
+
for job in futures:
|
|
154
|
+
job.result()
|
|
155
|
+
|
|
156
|
+
return input_protos, annotation_protos
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
## Dataset Loaders
|
|
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 `dataset_loader` parameter of the `Dataset` class, `upload_dataset` method .i.e.
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from clarifai.client.app import App
|
|
11
|
+
|
|
12
|
+
app = App(app_id="", user_id="")
|
|
13
|
+
# Create a dataset in Clarifai App
|
|
14
|
+
dataset = app.create_dataset(dataset_id="")
|
|
15
|
+
# execute data upload to Clarifai app dataset
|
|
16
|
+
dataset.upload_dataset(task='visual_segmentation', split="train", dataset_loader='coco_segmentation')
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Dataset Loaders
|
|
20
|
+
|
|
21
|
+
| dataset name | task | module name (.py) | splits |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| [COCO 2017](https://cocodataset.org/#download) | Detection | `coco_detection` | `train`, `val` |
|
|
24
|
+
| | Segmentation | `coco_segmentation` | `train`, `val` |
|
|
25
|
+
| | Captions | `coco_captions` | `train`, `val` |
|
|
26
|
+
|[xVIEW](http://xviewdataset.org/) | Detection | `xview_detection` | `train`
|
|
27
|
+
| [ImageNet](https://www.image-net.org/) | Classification | `imagenet_classification` | `train`
|
|
28
|
+
## Contributing Modules
|
|
29
|
+
|
|
30
|
+
A dataloader (preprocessing) module is a python script that contains a dataloader class which implements data download (to download the dataloader from a source to local disk dir) & extraction and dataloader methods.
|
|
31
|
+
|
|
32
|
+
The class naming convention is `<datasetname>DataLoader`. The dataset class must accept `split` as the only argument in the `__init__` method and the `__getitem__` method must return either of `VisualClassificationFeatures()`, `VisualDetectionFeatures()`, `VisualSegmentationFeatures()` or `TextFeatures()` as defined in [clarifai/datasets/upload/features.py](../features.py). Other methods can be added as seen fit but must be inherited from parent `ClarifaiDataLoader` base class [clarifai/datasets/upload/base.py](../base.py).
|
|
33
|
+
Reference can be taken from the existing dataset modules in the zoo for development.
|
|
34
|
+
|
|
35
|
+
## Notes
|
|
36
|
+
|
|
37
|
+
* Dataloaders in the zoo by default first create a `data` directory in the zoo directory 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.
|
|
38
|
+
|
|
39
|
+
* Taking the above into consideration, to avoid the scripts re-downloading data you already have locally, create a `data` directory in the loaders directory and move your extracted data there. **Ensure that the extracted folder/file names and file structure MATCH those when the downloaded zips are extracted.**
|
|
40
|
+
|
|
41
|
+
* 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 loaders to the `dataset_loader=` parameter in `upload_dataset()`.
|
|
42
|
+
|
|
43
|
+
* 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 `dataset_loader=` parameter in `upload_dataset()`.
|
|
44
|
+
|
|
45
|
+
* 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).
|
|
46
|
+
|
|
47
|
+
<data>/
|
|
48
|
+
├── train/
|
|
49
|
+
├── LOC_synset_mapping.txt
|
|
@@ -8,15 +8,16 @@ import requests
|
|
|
8
8
|
from pycocotools.coco import COCO
|
|
9
9
|
from tqdm import tqdm
|
|
10
10
|
|
|
11
|
+
from clarifai.datasets.upload.base import ClarifaiDataLoader
|
|
12
|
+
|
|
11
13
|
from ..features import VisualClassificationFeatures
|
|
12
14
|
|
|
13
15
|
|
|
14
|
-
class
|
|
16
|
+
class COCOCaptionsDataLoader(ClarifaiDataLoader):
|
|
15
17
|
"""COCO 2017 Image Captioning Dataset."""
|
|
16
18
|
|
|
17
19
|
def __init__(self, split: str = "train"):
|
|
18
|
-
"""
|
|
19
|
-
Initialize coco dataset.
|
|
20
|
+
"""Initialize coco dataset.
|
|
20
21
|
Args:
|
|
21
22
|
filenames: the coco zip filenames: Dict[str, str] to be downloaded if download=True,
|
|
22
23
|
data_dir: the local coco dataset directory.
|
|
@@ -29,9 +30,12 @@ class COCOCaptionsDataset:
|
|
|
29
30
|
}
|
|
30
31
|
self.split = split
|
|
31
32
|
self.url = "http://images.cocodataset.org/zips/" # coco base image-zip url
|
|
32
|
-
self.data_dir = os.path.join(os.
|
|
33
|
+
self.data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
|
34
|
+
"data") # data storage directory
|
|
33
35
|
self.extracted_coco_dirs = {"train": None, "val": None, "annotations": None}
|
|
34
36
|
|
|
37
|
+
self.load_data()
|
|
38
|
+
|
|
35
39
|
def coco_download(self, save_dir):
|
|
36
40
|
"""Download coco dataset."""
|
|
37
41
|
if not os.path.exists(save_dir):
|
|
@@ -68,14 +72,8 @@ class COCOCaptionsDataset:
|
|
|
68
72
|
print(f" Deleting {filename}")
|
|
69
73
|
os.remove(path=os.path.join(save_dir, filename))
|
|
70
74
|
|
|
71
|
-
def
|
|
72
|
-
|
|
73
|
-
Transform coco image captioning data into clarifai proto compatible
|
|
74
|
-
format for upload.
|
|
75
|
-
Returns:
|
|
76
|
-
VisualClassificationFeatures type generator.
|
|
77
|
-
"""
|
|
78
|
-
if isinstance(self.filenames, dict) and len(self.filenames) == 3: #train, val, annotations
|
|
75
|
+
def load_data(self):
|
|
76
|
+
if isinstance(self.filenames, dict) and len(self.filenames) == 3:
|
|
79
77
|
self.coco_download(self.data_dir)
|
|
80
78
|
self.extracted_coco_dirs["train"] = [os.path.join(self.data_dir, i) \
|
|
81
79
|
for i in os.listdir(self.data_dir) if "train" in i][0]
|
|
@@ -85,16 +83,21 @@ class COCOCaptionsDataset:
|
|
|
85
83
|
self.extracted_coco_dirs["annotations"] = [os.path.join(self.data_dir, i) \
|
|
86
84
|
for i in os.listdir(self.data_dir) if "annotations" in i][0]
|
|
87
85
|
else:
|
|
88
|
-
raise Exception(f"`filenames` must be a dict of atleast
|
|
89
|
-
|
|
86
|
+
raise Exception(f"`filenames` must be a dict of atleast 2 coco zip file names; \
|
|
87
|
+
train, val and annotations. Found {len(self.filenames)} items instead.")
|
|
90
88
|
|
|
91
89
|
annot_file = glob(self.extracted_coco_dirs["annotations"] + "/" + f"captions_{self.split}*")[0]
|
|
92
90
|
coco = COCO(annot_file)
|
|
93
91
|
annot_ids = coco.getAnnIds()
|
|
94
|
-
annotations = coco.loadAnns(annot_ids)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
self.annotations = coco.loadAnns(annot_ids)
|
|
93
|
+
|
|
94
|
+
def __len__(self):
|
|
95
|
+
return len(self.annotations)
|
|
96
|
+
|
|
97
|
+
def __getitem__(self, idx):
|
|
98
|
+
annot = self.annotations[idx]
|
|
99
|
+
image_path = glob(
|
|
100
|
+
os.path.join(self.extracted_coco_dirs[self.split],
|
|
101
|
+
f"{str(annot['image_id']).zfill(12)}*"))[0]
|
|
102
|
+
|
|
103
|
+
return VisualClassificationFeatures(image_path, annot["caption"], id=annot["image_id"])
|