clarifai 9.7.1__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.
Files changed (336) hide show
  1. clarifai/auth/__init__.py +6 -0
  2. clarifai/auth/helper.py +35 -36
  3. clarifai/auth/register.py +23 -0
  4. clarifai/{client → auth}/stub.py +10 -10
  5. clarifai/client/__init__.py +1 -4
  6. clarifai/client/app.py +483 -0
  7. clarifai/client/auth/__init__.py +4 -0
  8. clarifai/client/{abc.py → auth/abc.py} +2 -2
  9. clarifai/client/auth/helper.py +377 -0
  10. clarifai/client/auth/register.py +23 -0
  11. {clarifai_utils/client → clarifai/client/auth}/stub.py +10 -10
  12. clarifai/client/base.py +112 -0
  13. clarifai/client/dataset.py +290 -0
  14. clarifai/client/input.py +730 -0
  15. clarifai/client/lister.py +41 -0
  16. clarifai/client/model.py +218 -0
  17. clarifai/client/module.py +82 -0
  18. clarifai/client/user.py +125 -0
  19. clarifai/client/workflow.py +194 -0
  20. clarifai/datasets/upload/base.py +66 -0
  21. clarifai/datasets/upload/examples/README.md +31 -0
  22. clarifai/datasets/upload/examples/image_classification/cifar10/dataset.py +42 -0
  23. clarifai/datasets/upload/examples/image_classification/food-101/dataset.py +39 -0
  24. clarifai/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +37 -0
  25. clarifai/{data_upload/datasets → datasets/upload}/features.py +4 -12
  26. clarifai/datasets/upload/image.py +156 -0
  27. clarifai/datasets/upload/loaders/README.md +49 -0
  28. clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/coco_captions.py +24 -21
  29. {clarifai_utils/data_upload/datasets/zoo → clarifai/datasets/upload/loaders}/coco_detection.py +46 -42
  30. clarifai/datasets/upload/loaders/coco_segmentation.py +166 -0
  31. clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/imagenet_classification.py +22 -12
  32. clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/xview_detection.py +44 -53
  33. clarifai/datasets/upload/text.py +50 -0
  34. clarifai/datasets/upload/utils.py +62 -0
  35. clarifai/errors.py +90 -0
  36. clarifai/urls/helper.py +16 -17
  37. clarifai/utils/logging.py +40 -0
  38. clarifai/utils/misc.py +33 -0
  39. clarifai/versions.py +6 -0
  40. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/LICENSE +1 -1
  41. clarifai-9.7.2.dist-info/METADATA +179 -0
  42. clarifai-9.7.2.dist-info/RECORD +350 -0
  43. clarifai_utils/auth/__init__.py +6 -0
  44. clarifai_utils/auth/helper.py +35 -36
  45. clarifai_utils/auth/register.py +23 -0
  46. clarifai_utils/auth/stub.py +127 -0
  47. clarifai_utils/client/__init__.py +1 -4
  48. clarifai_utils/client/app.py +483 -0
  49. clarifai_utils/client/auth/__init__.py +4 -0
  50. clarifai_utils/client/{abc.py → auth/abc.py} +2 -2
  51. clarifai_utils/client/auth/helper.py +377 -0
  52. clarifai_utils/client/auth/register.py +23 -0
  53. clarifai_utils/client/auth/stub.py +127 -0
  54. clarifai_utils/client/base.py +112 -0
  55. clarifai_utils/client/dataset.py +290 -0
  56. clarifai_utils/client/input.py +730 -0
  57. clarifai_utils/client/lister.py +41 -0
  58. clarifai_utils/client/model.py +218 -0
  59. clarifai_utils/client/module.py +82 -0
  60. clarifai_utils/client/user.py +125 -0
  61. clarifai_utils/client/workflow.py +194 -0
  62. clarifai_utils/datasets/upload/base.py +66 -0
  63. clarifai_utils/datasets/upload/examples/README.md +31 -0
  64. clarifai_utils/datasets/upload/examples/image_classification/cifar10/dataset.py +42 -0
  65. clarifai_utils/datasets/upload/examples/image_classification/food-101/dataset.py +39 -0
  66. clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +37 -0
  67. clarifai_utils/{data_upload/datasets → datasets/upload}/features.py +4 -12
  68. clarifai_utils/datasets/upload/image.py +156 -0
  69. clarifai_utils/datasets/upload/loaders/README.md +49 -0
  70. clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/coco_captions.py +24 -21
  71. {clarifai/data_upload/datasets/zoo → clarifai_utils/datasets/upload/loaders}/coco_detection.py +46 -42
  72. clarifai_utils/datasets/upload/loaders/coco_segmentation.py +166 -0
  73. clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/imagenet_classification.py +22 -12
  74. clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/xview_detection.py +44 -53
  75. clarifai_utils/datasets/upload/text.py +50 -0
  76. clarifai_utils/datasets/upload/utils.py +62 -0
  77. clarifai_utils/errors.py +90 -0
  78. clarifai_utils/urls/helper.py +16 -17
  79. clarifai_utils/utils/logging.py +40 -0
  80. clarifai_utils/utils/misc.py +33 -0
  81. clarifai_utils/versions.py +6 -0
  82. clarifai/data_upload/README.md +0 -63
  83. clarifai/data_upload/convert_csv.py +0 -182
  84. clarifai/data_upload/datasets/base.py +0 -87
  85. clarifai/data_upload/datasets/image.py +0 -253
  86. clarifai/data_upload/datasets/text.py +0 -60
  87. clarifai/data_upload/datasets/zoo/README.md +0 -55
  88. clarifai/data_upload/datasets/zoo/coco_segmentation.py +0 -160
  89. clarifai/data_upload/examples/README.md +0 -5
  90. clarifai/data_upload/examples/image_classification/cifar10/dataset.py +0 -40
  91. clarifai/data_upload/examples/image_classification/food-101/dataset.py +0 -39
  92. clarifai/data_upload/examples/image_classification/food-101/images/beignets/1036242.jpg +0 -0
  93. clarifai/data_upload/examples/image_classification/food-101/images/beignets/1114182.jpg +0 -0
  94. clarifai/data_upload/examples/image_classification/food-101/images/beignets/2012944.jpg +0 -0
  95. clarifai/data_upload/examples/image_classification/food-101/images/beignets/2464389.jpg +0 -0
  96. clarifai/data_upload/examples/image_classification/food-101/images/beignets/478632.jpg +0 -0
  97. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1061270.jpg +0 -0
  98. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1202261.jpg +0 -0
  99. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1381751.jpg +0 -0
  100. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/3289634.jpg +0 -0
  101. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/862025.jpg +0 -0
  102. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/102197.jpg +0 -0
  103. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/2749372.jpg +0 -0
  104. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/2938268.jpg +0 -0
  105. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/3590861.jpg +0 -0
  106. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/746716.jpg +0 -0
  107. clarifai/data_upload/examples/image_classification/food-101/images/ramen/2955110.jpg +0 -0
  108. clarifai/data_upload/examples/image_classification/food-101/images/ramen/3208966.jpg +0 -0
  109. clarifai/data_upload/examples/image_classification/food-101/images/ramen/3270629.jpg +0 -0
  110. clarifai/data_upload/examples/image_classification/food-101/images/ramen/3424562.jpg +0 -0
  111. clarifai/data_upload/examples/image_classification/food-101/images/ramen/544680.jpg +0 -0
  112. clarifai/data_upload/examples/image_detection/voc/annotations/2007_000464.xml +0 -39
  113. clarifai/data_upload/examples/image_detection/voc/annotations/2008_000853.xml +0 -28
  114. clarifai/data_upload/examples/image_detection/voc/annotations/2008_003182.xml +0 -54
  115. clarifai/data_upload/examples/image_detection/voc/annotations/2008_008526.xml +0 -67
  116. clarifai/data_upload/examples/image_detection/voc/annotations/2009_004315.xml +0 -28
  117. clarifai/data_upload/examples/image_detection/voc/annotations/2009_004382.xml +0 -28
  118. clarifai/data_upload/examples/image_detection/voc/annotations/2011_000430.xml +0 -28
  119. clarifai/data_upload/examples/image_detection/voc/annotations/2011_001610.xml +0 -46
  120. clarifai/data_upload/examples/image_detection/voc/annotations/2011_006412.xml +0 -99
  121. clarifai/data_upload/examples/image_detection/voc/annotations/2012_000690.xml +0 -43
  122. clarifai/data_upload/examples/image_detection/voc/dataset.py +0 -76
  123. clarifai/data_upload/examples/image_detection/voc/images/2007_000464.jpg +0 -0
  124. clarifai/data_upload/examples/image_detection/voc/images/2008_000853.jpg +0 -0
  125. clarifai/data_upload/examples/image_detection/voc/images/2008_003182.jpg +0 -0
  126. clarifai/data_upload/examples/image_detection/voc/images/2008_008526.jpg +0 -0
  127. clarifai/data_upload/examples/image_detection/voc/images/2009_004315.jpg +0 -0
  128. clarifai/data_upload/examples/image_detection/voc/images/2009_004382.jpg +0 -0
  129. clarifai/data_upload/examples/image_detection/voc/images/2011_000430.jpg +0 -0
  130. clarifai/data_upload/examples/image_detection/voc/images/2011_001610.jpg +0 -0
  131. clarifai/data_upload/examples/image_detection/voc/images/2011_006412.jpg +0 -0
  132. clarifai/data_upload/examples/image_detection/voc/images/2012_000690.jpg +0 -0
  133. clarifai/data_upload/examples/image_segmentation/coco/annotations/instances_val2017_subset.json +0 -5342
  134. clarifai/data_upload/examples/image_segmentation/coco/dataset.py +0 -107
  135. clarifai/data_upload/examples/image_segmentation/coco/images/000000074646.jpg +0 -0
  136. clarifai/data_upload/examples/image_segmentation/coco/images/000000086956.jpg +0 -0
  137. clarifai/data_upload/examples/image_segmentation/coco/images/000000166563.jpg +0 -0
  138. clarifai/data_upload/examples/image_segmentation/coco/images/000000176857.jpg +0 -0
  139. clarifai/data_upload/examples/image_segmentation/coco/images/000000182202.jpg +0 -0
  140. clarifai/data_upload/examples/image_segmentation/coco/images/000000193245.jpg +0 -0
  141. clarifai/data_upload/examples/image_segmentation/coco/images/000000384850.jpg +0 -0
  142. clarifai/data_upload/examples/image_segmentation/coco/images/000000409630.jpg +0 -0
  143. clarifai/data_upload/examples/image_segmentation/coco/images/000000424349.jpg +0 -0
  144. clarifai/data_upload/examples/image_segmentation/coco/images/000000573008.jpg +0 -0
  145. clarifai/data_upload/examples/text_classification/imdb_dataset/dataset.py +0 -40
  146. clarifai/data_upload/examples.py +0 -17
  147. clarifai/data_upload/upload.py +0 -356
  148. clarifai/dataset_export/dataset_export_inputs.py +0 -205
  149. clarifai/listing/concepts.py +0 -37
  150. clarifai/listing/datasets.py +0 -37
  151. clarifai/listing/inputs.py +0 -111
  152. clarifai/listing/installed_module_versions.py +0 -40
  153. clarifai/listing/lister.py +0 -200
  154. clarifai/listing/models.py +0 -46
  155. clarifai/listing/module_versions.py +0 -42
  156. clarifai/listing/modules.py +0 -36
  157. clarifai/runners/base.py +0 -140
  158. clarifai/runners/example.py +0 -36
  159. clarifai-9.7.1.dist-info/METADATA +0 -99
  160. clarifai-9.7.1.dist-info/RECORD +0 -456
  161. clarifai_utils/data_upload/README.md +0 -63
  162. clarifai_utils/data_upload/convert_csv.py +0 -182
  163. clarifai_utils/data_upload/datasets/base.py +0 -87
  164. clarifai_utils/data_upload/datasets/image.py +0 -253
  165. clarifai_utils/data_upload/datasets/text.py +0 -60
  166. clarifai_utils/data_upload/datasets/zoo/README.md +0 -55
  167. clarifai_utils/data_upload/datasets/zoo/coco_segmentation.py +0 -160
  168. clarifai_utils/data_upload/examples/README.md +0 -5
  169. clarifai_utils/data_upload/examples/image_classification/cifar10/dataset.py +0 -40
  170. clarifai_utils/data_upload/examples/image_classification/food-101/dataset.py +0 -39
  171. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/1036242.jpg +0 -0
  172. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/1114182.jpg +0 -0
  173. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/2012944.jpg +0 -0
  174. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/2464389.jpg +0 -0
  175. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/478632.jpg +0 -0
  176. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1061270.jpg +0 -0
  177. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1202261.jpg +0 -0
  178. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1381751.jpg +0 -0
  179. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/3289634.jpg +0 -0
  180. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/862025.jpg +0 -0
  181. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/102197.jpg +0 -0
  182. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/2749372.jpg +0 -0
  183. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/2938268.jpg +0 -0
  184. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/3590861.jpg +0 -0
  185. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/746716.jpg +0 -0
  186. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/2955110.jpg +0 -0
  187. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3208966.jpg +0 -0
  188. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3270629.jpg +0 -0
  189. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3424562.jpg +0 -0
  190. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/544680.jpg +0 -0
  191. clarifai_utils/data_upload/examples/image_detection/__init__.py +0 -0
  192. clarifai_utils/data_upload/examples/image_detection/voc/__init__.py +0 -0
  193. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2007_000464.xml +0 -39
  194. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_000853.xml +0 -28
  195. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_003182.xml +0 -54
  196. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_008526.xml +0 -67
  197. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2009_004315.xml +0 -28
  198. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2009_004382.xml +0 -28
  199. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_000430.xml +0 -28
  200. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_001610.xml +0 -46
  201. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_006412.xml +0 -99
  202. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2012_000690.xml +0 -43
  203. clarifai_utils/data_upload/examples/image_detection/voc/dataset.py +0 -76
  204. clarifai_utils/data_upload/examples/image_detection/voc/images/2007_000464.jpg +0 -0
  205. clarifai_utils/data_upload/examples/image_detection/voc/images/2008_000853.jpg +0 -0
  206. clarifai_utils/data_upload/examples/image_detection/voc/images/2008_003182.jpg +0 -0
  207. clarifai_utils/data_upload/examples/image_detection/voc/images/2008_008526.jpg +0 -0
  208. clarifai_utils/data_upload/examples/image_detection/voc/images/2009_004315.jpg +0 -0
  209. clarifai_utils/data_upload/examples/image_detection/voc/images/2009_004382.jpg +0 -0
  210. clarifai_utils/data_upload/examples/image_detection/voc/images/2011_000430.jpg +0 -0
  211. clarifai_utils/data_upload/examples/image_detection/voc/images/2011_001610.jpg +0 -0
  212. clarifai_utils/data_upload/examples/image_detection/voc/images/2011_006412.jpg +0 -0
  213. clarifai_utils/data_upload/examples/image_detection/voc/images/2012_000690.jpg +0 -0
  214. clarifai_utils/data_upload/examples/image_segmentation/__init__.py +0 -0
  215. clarifai_utils/data_upload/examples/image_segmentation/coco/__init__.py +0 -0
  216. clarifai_utils/data_upload/examples/image_segmentation/coco/annotations/instances_val2017_subset.json +0 -5342
  217. clarifai_utils/data_upload/examples/image_segmentation/coco/dataset.py +0 -107
  218. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000074646.jpg +0 -0
  219. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000086956.jpg +0 -0
  220. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000166563.jpg +0 -0
  221. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000176857.jpg +0 -0
  222. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000182202.jpg +0 -0
  223. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000193245.jpg +0 -0
  224. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000384850.jpg +0 -0
  225. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000409630.jpg +0 -0
  226. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000424349.jpg +0 -0
  227. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000573008.jpg +0 -0
  228. clarifai_utils/data_upload/examples/text_classification/__init__.py +0 -0
  229. clarifai_utils/data_upload/examples/text_classification/imdb_dataset/__init__.py +0 -0
  230. clarifai_utils/data_upload/examples/text_classification/imdb_dataset/dataset.py +0 -40
  231. clarifai_utils/data_upload/examples.py +0 -17
  232. clarifai_utils/data_upload/upload.py +0 -356
  233. clarifai_utils/dataset_export/dataset_export_inputs.py +0 -205
  234. clarifai_utils/listing/__init__.py +0 -0
  235. clarifai_utils/listing/concepts.py +0 -37
  236. clarifai_utils/listing/datasets.py +0 -37
  237. clarifai_utils/listing/inputs.py +0 -111
  238. clarifai_utils/listing/installed_module_versions.py +0 -40
  239. clarifai_utils/listing/lister.py +0 -200
  240. clarifai_utils/listing/models.py +0 -46
  241. clarifai_utils/listing/module_versions.py +0 -42
  242. clarifai_utils/listing/modules.py +0 -36
  243. clarifai_utils/runners/__init__.py +0 -0
  244. clarifai_utils/runners/base.py +0 -140
  245. clarifai_utils/runners/example.py +0 -36
  246. /clarifai/{data_upload/__init__.py → cli.py} +0 -0
  247. /clarifai/{data_upload/datasets → datasets}/__init__.py +0 -0
  248. /clarifai/{data_upload/datasets/zoo → datasets/upload}/__init__.py +0 -0
  249. /clarifai/{data_upload → datasets/upload}/examples/image_classification/__init__.py +0 -0
  250. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/__init__.py +0 -0
  251. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
  252. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
  253. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  254. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  255. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  256. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  257. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  258. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  259. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  260. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  261. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  262. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  263. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/__init__.py +0 -0
  264. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  265. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  266. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  267. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  268. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  269. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  270. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  271. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  272. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  273. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  274. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  275. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  276. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  277. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  278. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  279. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  280. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  281. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  282. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  283. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  284. /clarifai/{data_upload/examples/image_detection → datasets/upload/examples/text_classification}/__init__.py +0 -0
  285. /clarifai/{data_upload/examples/image_detection/voc → datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
  286. /clarifai/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/test.csv +0 -0
  287. /clarifai/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/train.csv +0 -0
  288. /clarifai/{data_upload/examples/image_segmentation → datasets/upload/loaders}/__init__.py +0 -0
  289. /clarifai/{data_upload/examples/image_segmentation/coco → utils}/__init__.py +0 -0
  290. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/WHEEL +0 -0
  291. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/entry_points.txt +0 -0
  292. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/top_level.txt +0 -0
  293. /clarifai/data_upload/examples/text_classification/__init__.py → /clarifai_utils/cli.py +0 -0
  294. {clarifai/data_upload/examples/text_classification/imdb_dataset → clarifai_utils/datasets}/__init__.py +0 -0
  295. {clarifai/listing → clarifai_utils/datasets/upload}/__init__.py +0 -0
  296. {clarifai/runners → clarifai_utils/datasets/upload/examples/image_classification}/__init__.py +0 -0
  297. /clarifai_utils/{data_upload → datasets/upload/examples/image_classification/cifar10}/__init__.py +0 -0
  298. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
  299. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
  300. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  301. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  302. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  303. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  304. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  305. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  306. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  307. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  308. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  309. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  310. /clarifai_utils/{data_upload/datasets → datasets/upload/examples/image_classification/food-101}/__init__.py +0 -0
  311. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  312. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  313. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  314. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  315. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  316. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  317. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  318. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  319. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  320. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  321. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  322. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  323. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  324. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  325. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  326. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  327. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  328. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  329. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  330. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  331. /clarifai_utils/{data_upload/datasets/zoo → datasets/upload/examples/text_classification}/__init__.py +0 -0
  332. /clarifai_utils/{data_upload/examples/image_classification → datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
  333. /clarifai_utils/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/test.csv +0 -0
  334. /clarifai_utils/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/train.csv +0 -0
  335. /clarifai_utils/{data_upload/examples/image_classification/cifar10 → datasets/upload/loaders}/__init__.py +0 -0
  336. /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 COCOCaptionsDataset:
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.curdir, "data") # data storage directory
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 dataloader(self):
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 3 coco zip file names; \
89
- train, val and annotations. Found {len(self.filenames)} items instead.")
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
- for annot in annotations:
96
- image_path = glob(self.extracted_coco_dirs[self.split]+"/"+\
97
- f"{str(annot['image_id']).zfill(12)}*")[0]
98
- # image_captioning and image classification datasets have the same
99
- # image-label input feature formats
100
- yield VisualClassificationFeatures(image_path, annot["caption"], id=annot["image_id"])
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"])