clarifai 11.3.0rc2__py3-none-any.whl → 11.4.0__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 (300) hide show
  1. clarifai/__init__.py +1 -1
  2. clarifai/cli/__main__.py +1 -1
  3. clarifai/cli/base.py +144 -136
  4. clarifai/cli/compute_cluster.py +45 -31
  5. clarifai/cli/deployment.py +93 -76
  6. clarifai/cli/model.py +578 -180
  7. clarifai/cli/nodepool.py +100 -82
  8. clarifai/client/__init__.py +12 -2
  9. clarifai/client/app.py +973 -911
  10. clarifai/client/auth/helper.py +345 -342
  11. clarifai/client/auth/register.py +7 -7
  12. clarifai/client/auth/stub.py +107 -106
  13. clarifai/client/base.py +185 -178
  14. clarifai/client/compute_cluster.py +214 -180
  15. clarifai/client/dataset.py +793 -698
  16. clarifai/client/deployment.py +55 -50
  17. clarifai/client/input.py +1223 -1088
  18. clarifai/client/lister.py +47 -45
  19. clarifai/client/model.py +1939 -1717
  20. clarifai/client/model_client.py +525 -502
  21. clarifai/client/module.py +82 -73
  22. clarifai/client/nodepool.py +358 -213
  23. clarifai/client/runner.py +58 -0
  24. clarifai/client/search.py +342 -309
  25. clarifai/client/user.py +419 -414
  26. clarifai/client/workflow.py +294 -274
  27. clarifai/constants/dataset.py +11 -17
  28. clarifai/constants/model.py +8 -2
  29. clarifai/datasets/export/inputs_annotations.py +233 -217
  30. clarifai/datasets/upload/base.py +63 -51
  31. clarifai/datasets/upload/features.py +43 -38
  32. clarifai/datasets/upload/image.py +237 -207
  33. clarifai/datasets/upload/loaders/coco_captions.py +34 -32
  34. clarifai/datasets/upload/loaders/coco_detection.py +72 -65
  35. clarifai/datasets/upload/loaders/imagenet_classification.py +57 -53
  36. clarifai/datasets/upload/loaders/xview_detection.py +274 -132
  37. clarifai/datasets/upload/multimodal.py +55 -46
  38. clarifai/datasets/upload/text.py +55 -47
  39. clarifai/datasets/upload/utils.py +250 -234
  40. clarifai/errors.py +51 -50
  41. clarifai/models/api.py +260 -238
  42. clarifai/modules/css.py +50 -50
  43. clarifai/modules/pages.py +33 -33
  44. clarifai/rag/rag.py +312 -288
  45. clarifai/rag/utils.py +91 -84
  46. clarifai/runners/models/model_builder.py +906 -802
  47. clarifai/runners/models/model_class.py +370 -331
  48. clarifai/runners/models/model_run_locally.py +459 -419
  49. clarifai/runners/models/model_runner.py +170 -162
  50. clarifai/runners/models/model_servicer.py +78 -70
  51. clarifai/runners/server.py +111 -101
  52. clarifai/runners/utils/code_script.py +225 -187
  53. clarifai/runners/utils/const.py +4 -1
  54. clarifai/runners/utils/data_types/__init__.py +12 -0
  55. clarifai/runners/utils/data_types/data_types.py +598 -0
  56. clarifai/runners/utils/data_utils.py +387 -440
  57. clarifai/runners/utils/loader.py +247 -227
  58. clarifai/runners/utils/method_signatures.py +411 -386
  59. clarifai/runners/utils/openai_convertor.py +108 -109
  60. clarifai/runners/utils/serializers.py +175 -179
  61. clarifai/runners/utils/url_fetcher.py +35 -35
  62. clarifai/schema/search.py +56 -63
  63. clarifai/urls/helper.py +125 -102
  64. clarifai/utils/cli.py +129 -123
  65. clarifai/utils/config.py +127 -87
  66. clarifai/utils/constants.py +49 -0
  67. clarifai/utils/evaluation/helpers.py +503 -466
  68. clarifai/utils/evaluation/main.py +431 -393
  69. clarifai/utils/evaluation/testset_annotation_parser.py +154 -144
  70. clarifai/utils/logging.py +324 -306
  71. clarifai/utils/misc.py +60 -56
  72. clarifai/utils/model_train.py +165 -146
  73. clarifai/utils/protobuf.py +126 -103
  74. clarifai/versions.py +3 -1
  75. clarifai/workflows/export.py +48 -50
  76. clarifai/workflows/utils.py +39 -36
  77. clarifai/workflows/validate.py +55 -43
  78. {clarifai-11.3.0rc2.dist-info → clarifai-11.4.0.dist-info}/METADATA +16 -6
  79. clarifai-11.4.0.dist-info/RECORD +109 -0
  80. {clarifai-11.3.0rc2.dist-info → clarifai-11.4.0.dist-info}/WHEEL +1 -1
  81. clarifai/__pycache__/__init__.cpython-310.pyc +0 -0
  82. clarifai/__pycache__/__init__.cpython-311.pyc +0 -0
  83. clarifai/__pycache__/__init__.cpython-39.pyc +0 -0
  84. clarifai/__pycache__/errors.cpython-310.pyc +0 -0
  85. clarifai/__pycache__/errors.cpython-311.pyc +0 -0
  86. clarifai/__pycache__/versions.cpython-310.pyc +0 -0
  87. clarifai/__pycache__/versions.cpython-311.pyc +0 -0
  88. clarifai/cli/__pycache__/__init__.cpython-310.pyc +0 -0
  89. clarifai/cli/__pycache__/__init__.cpython-311.pyc +0 -0
  90. clarifai/cli/__pycache__/base.cpython-310.pyc +0 -0
  91. clarifai/cli/__pycache__/base.cpython-311.pyc +0 -0
  92. clarifai/cli/__pycache__/base_cli.cpython-310.pyc +0 -0
  93. clarifai/cli/__pycache__/compute_cluster.cpython-310.pyc +0 -0
  94. clarifai/cli/__pycache__/compute_cluster.cpython-311.pyc +0 -0
  95. clarifai/cli/__pycache__/deployment.cpython-310.pyc +0 -0
  96. clarifai/cli/__pycache__/deployment.cpython-311.pyc +0 -0
  97. clarifai/cli/__pycache__/model.cpython-310.pyc +0 -0
  98. clarifai/cli/__pycache__/model.cpython-311.pyc +0 -0
  99. clarifai/cli/__pycache__/model_cli.cpython-310.pyc +0 -0
  100. clarifai/cli/__pycache__/nodepool.cpython-310.pyc +0 -0
  101. clarifai/cli/__pycache__/nodepool.cpython-311.pyc +0 -0
  102. clarifai/client/__pycache__/__init__.cpython-310.pyc +0 -0
  103. clarifai/client/__pycache__/__init__.cpython-311.pyc +0 -0
  104. clarifai/client/__pycache__/__init__.cpython-39.pyc +0 -0
  105. clarifai/client/__pycache__/app.cpython-310.pyc +0 -0
  106. clarifai/client/__pycache__/app.cpython-311.pyc +0 -0
  107. clarifai/client/__pycache__/app.cpython-39.pyc +0 -0
  108. clarifai/client/__pycache__/base.cpython-310.pyc +0 -0
  109. clarifai/client/__pycache__/base.cpython-311.pyc +0 -0
  110. clarifai/client/__pycache__/compute_cluster.cpython-310.pyc +0 -0
  111. clarifai/client/__pycache__/compute_cluster.cpython-311.pyc +0 -0
  112. clarifai/client/__pycache__/dataset.cpython-310.pyc +0 -0
  113. clarifai/client/__pycache__/dataset.cpython-311.pyc +0 -0
  114. clarifai/client/__pycache__/deployment.cpython-310.pyc +0 -0
  115. clarifai/client/__pycache__/deployment.cpython-311.pyc +0 -0
  116. clarifai/client/__pycache__/input.cpython-310.pyc +0 -0
  117. clarifai/client/__pycache__/input.cpython-311.pyc +0 -0
  118. clarifai/client/__pycache__/lister.cpython-310.pyc +0 -0
  119. clarifai/client/__pycache__/lister.cpython-311.pyc +0 -0
  120. clarifai/client/__pycache__/model.cpython-310.pyc +0 -0
  121. clarifai/client/__pycache__/model.cpython-311.pyc +0 -0
  122. clarifai/client/__pycache__/module.cpython-310.pyc +0 -0
  123. clarifai/client/__pycache__/module.cpython-311.pyc +0 -0
  124. clarifai/client/__pycache__/nodepool.cpython-310.pyc +0 -0
  125. clarifai/client/__pycache__/nodepool.cpython-311.pyc +0 -0
  126. clarifai/client/__pycache__/search.cpython-310.pyc +0 -0
  127. clarifai/client/__pycache__/search.cpython-311.pyc +0 -0
  128. clarifai/client/__pycache__/user.cpython-310.pyc +0 -0
  129. clarifai/client/__pycache__/user.cpython-311.pyc +0 -0
  130. clarifai/client/__pycache__/workflow.cpython-310.pyc +0 -0
  131. clarifai/client/__pycache__/workflow.cpython-311.pyc +0 -0
  132. clarifai/client/auth/__pycache__/__init__.cpython-310.pyc +0 -0
  133. clarifai/client/auth/__pycache__/__init__.cpython-311.pyc +0 -0
  134. clarifai/client/auth/__pycache__/helper.cpython-310.pyc +0 -0
  135. clarifai/client/auth/__pycache__/helper.cpython-311.pyc +0 -0
  136. clarifai/client/auth/__pycache__/register.cpython-310.pyc +0 -0
  137. clarifai/client/auth/__pycache__/register.cpython-311.pyc +0 -0
  138. clarifai/client/auth/__pycache__/stub.cpython-310.pyc +0 -0
  139. clarifai/client/auth/__pycache__/stub.cpython-311.pyc +0 -0
  140. clarifai/client/cli/__init__.py +0 -0
  141. clarifai/client/cli/__pycache__/__init__.cpython-310.pyc +0 -0
  142. clarifai/client/cli/__pycache__/base_cli.cpython-310.pyc +0 -0
  143. clarifai/client/cli/__pycache__/model_cli.cpython-310.pyc +0 -0
  144. clarifai/client/cli/base_cli.py +0 -88
  145. clarifai/client/cli/model_cli.py +0 -29
  146. clarifai/constants/__pycache__/base.cpython-310.pyc +0 -0
  147. clarifai/constants/__pycache__/base.cpython-311.pyc +0 -0
  148. clarifai/constants/__pycache__/dataset.cpython-310.pyc +0 -0
  149. clarifai/constants/__pycache__/dataset.cpython-311.pyc +0 -0
  150. clarifai/constants/__pycache__/input.cpython-310.pyc +0 -0
  151. clarifai/constants/__pycache__/input.cpython-311.pyc +0 -0
  152. clarifai/constants/__pycache__/model.cpython-310.pyc +0 -0
  153. clarifai/constants/__pycache__/model.cpython-311.pyc +0 -0
  154. clarifai/constants/__pycache__/rag.cpython-310.pyc +0 -0
  155. clarifai/constants/__pycache__/rag.cpython-311.pyc +0 -0
  156. clarifai/constants/__pycache__/search.cpython-310.pyc +0 -0
  157. clarifai/constants/__pycache__/search.cpython-311.pyc +0 -0
  158. clarifai/constants/__pycache__/workflow.cpython-310.pyc +0 -0
  159. clarifai/constants/__pycache__/workflow.cpython-311.pyc +0 -0
  160. clarifai/datasets/__pycache__/__init__.cpython-310.pyc +0 -0
  161. clarifai/datasets/__pycache__/__init__.cpython-311.pyc +0 -0
  162. clarifai/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
  163. clarifai/datasets/export/__pycache__/__init__.cpython-310.pyc +0 -0
  164. clarifai/datasets/export/__pycache__/__init__.cpython-311.pyc +0 -0
  165. clarifai/datasets/export/__pycache__/__init__.cpython-39.pyc +0 -0
  166. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-310.pyc +0 -0
  167. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-311.pyc +0 -0
  168. clarifai/datasets/upload/__pycache__/__init__.cpython-310.pyc +0 -0
  169. clarifai/datasets/upload/__pycache__/__init__.cpython-311.pyc +0 -0
  170. clarifai/datasets/upload/__pycache__/__init__.cpython-39.pyc +0 -0
  171. clarifai/datasets/upload/__pycache__/base.cpython-310.pyc +0 -0
  172. clarifai/datasets/upload/__pycache__/base.cpython-311.pyc +0 -0
  173. clarifai/datasets/upload/__pycache__/features.cpython-310.pyc +0 -0
  174. clarifai/datasets/upload/__pycache__/features.cpython-311.pyc +0 -0
  175. clarifai/datasets/upload/__pycache__/image.cpython-310.pyc +0 -0
  176. clarifai/datasets/upload/__pycache__/image.cpython-311.pyc +0 -0
  177. clarifai/datasets/upload/__pycache__/multimodal.cpython-310.pyc +0 -0
  178. clarifai/datasets/upload/__pycache__/multimodal.cpython-311.pyc +0 -0
  179. clarifai/datasets/upload/__pycache__/text.cpython-310.pyc +0 -0
  180. clarifai/datasets/upload/__pycache__/text.cpython-311.pyc +0 -0
  181. clarifai/datasets/upload/__pycache__/utils.cpython-310.pyc +0 -0
  182. clarifai/datasets/upload/__pycache__/utils.cpython-311.pyc +0 -0
  183. clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-311.pyc +0 -0
  184. clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-39.pyc +0 -0
  185. clarifai/datasets/upload/loaders/__pycache__/coco_detection.cpython-311.pyc +0 -0
  186. clarifai/datasets/upload/loaders/__pycache__/imagenet_classification.cpython-311.pyc +0 -0
  187. clarifai/models/__pycache__/__init__.cpython-39.pyc +0 -0
  188. clarifai/modules/__pycache__/__init__.cpython-39.pyc +0 -0
  189. clarifai/rag/__pycache__/__init__.cpython-310.pyc +0 -0
  190. clarifai/rag/__pycache__/__init__.cpython-311.pyc +0 -0
  191. clarifai/rag/__pycache__/__init__.cpython-39.pyc +0 -0
  192. clarifai/rag/__pycache__/rag.cpython-310.pyc +0 -0
  193. clarifai/rag/__pycache__/rag.cpython-311.pyc +0 -0
  194. clarifai/rag/__pycache__/rag.cpython-39.pyc +0 -0
  195. clarifai/rag/__pycache__/utils.cpython-310.pyc +0 -0
  196. clarifai/rag/__pycache__/utils.cpython-311.pyc +0 -0
  197. clarifai/runners/__pycache__/__init__.cpython-310.pyc +0 -0
  198. clarifai/runners/__pycache__/__init__.cpython-311.pyc +0 -0
  199. clarifai/runners/__pycache__/__init__.cpython-39.pyc +0 -0
  200. clarifai/runners/dockerfile_template/Dockerfile.cpu.template +0 -31
  201. clarifai/runners/dockerfile_template/Dockerfile.cuda.template +0 -42
  202. clarifai/runners/dockerfile_template/Dockerfile.nim +0 -71
  203. clarifai/runners/models/__pycache__/__init__.cpython-310.pyc +0 -0
  204. clarifai/runners/models/__pycache__/__init__.cpython-311.pyc +0 -0
  205. clarifai/runners/models/__pycache__/__init__.cpython-39.pyc +0 -0
  206. clarifai/runners/models/__pycache__/base_typed_model.cpython-310.pyc +0 -0
  207. clarifai/runners/models/__pycache__/base_typed_model.cpython-311.pyc +0 -0
  208. clarifai/runners/models/__pycache__/base_typed_model.cpython-39.pyc +0 -0
  209. clarifai/runners/models/__pycache__/model_builder.cpython-311.pyc +0 -0
  210. clarifai/runners/models/__pycache__/model_class.cpython-310.pyc +0 -0
  211. clarifai/runners/models/__pycache__/model_class.cpython-311.pyc +0 -0
  212. clarifai/runners/models/__pycache__/model_run_locally.cpython-310-pytest-7.1.2.pyc +0 -0
  213. clarifai/runners/models/__pycache__/model_run_locally.cpython-310.pyc +0 -0
  214. clarifai/runners/models/__pycache__/model_run_locally.cpython-311.pyc +0 -0
  215. clarifai/runners/models/__pycache__/model_runner.cpython-310.pyc +0 -0
  216. clarifai/runners/models/__pycache__/model_runner.cpython-311.pyc +0 -0
  217. clarifai/runners/models/__pycache__/model_upload.cpython-310.pyc +0 -0
  218. clarifai/runners/models/base_typed_model.py +0 -238
  219. clarifai/runners/models/model_class_refract.py +0 -80
  220. clarifai/runners/models/model_upload.py +0 -607
  221. clarifai/runners/models/temp.py +0 -25
  222. clarifai/runners/utils/__pycache__/__init__.cpython-310.pyc +0 -0
  223. clarifai/runners/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  224. clarifai/runners/utils/__pycache__/__init__.cpython-38.pyc +0 -0
  225. clarifai/runners/utils/__pycache__/__init__.cpython-39.pyc +0 -0
  226. clarifai/runners/utils/__pycache__/buffered_stream.cpython-310.pyc +0 -0
  227. clarifai/runners/utils/__pycache__/buffered_stream.cpython-38.pyc +0 -0
  228. clarifai/runners/utils/__pycache__/buffered_stream.cpython-39.pyc +0 -0
  229. clarifai/runners/utils/__pycache__/const.cpython-310.pyc +0 -0
  230. clarifai/runners/utils/__pycache__/const.cpython-311.pyc +0 -0
  231. clarifai/runners/utils/__pycache__/constants.cpython-310.pyc +0 -0
  232. clarifai/runners/utils/__pycache__/constants.cpython-38.pyc +0 -0
  233. clarifai/runners/utils/__pycache__/constants.cpython-39.pyc +0 -0
  234. clarifai/runners/utils/__pycache__/data_handler.cpython-310.pyc +0 -0
  235. clarifai/runners/utils/__pycache__/data_handler.cpython-311.pyc +0 -0
  236. clarifai/runners/utils/__pycache__/data_handler.cpython-38.pyc +0 -0
  237. clarifai/runners/utils/__pycache__/data_handler.cpython-39.pyc +0 -0
  238. clarifai/runners/utils/__pycache__/data_utils.cpython-310.pyc +0 -0
  239. clarifai/runners/utils/__pycache__/data_utils.cpython-311.pyc +0 -0
  240. clarifai/runners/utils/__pycache__/data_utils.cpython-38.pyc +0 -0
  241. clarifai/runners/utils/__pycache__/data_utils.cpython-39.pyc +0 -0
  242. clarifai/runners/utils/__pycache__/grpc_server.cpython-310.pyc +0 -0
  243. clarifai/runners/utils/__pycache__/grpc_server.cpython-38.pyc +0 -0
  244. clarifai/runners/utils/__pycache__/grpc_server.cpython-39.pyc +0 -0
  245. clarifai/runners/utils/__pycache__/health.cpython-310.pyc +0 -0
  246. clarifai/runners/utils/__pycache__/health.cpython-38.pyc +0 -0
  247. clarifai/runners/utils/__pycache__/health.cpython-39.pyc +0 -0
  248. clarifai/runners/utils/__pycache__/loader.cpython-310.pyc +0 -0
  249. clarifai/runners/utils/__pycache__/loader.cpython-311.pyc +0 -0
  250. clarifai/runners/utils/__pycache__/logging.cpython-310.pyc +0 -0
  251. clarifai/runners/utils/__pycache__/logging.cpython-38.pyc +0 -0
  252. clarifai/runners/utils/__pycache__/logging.cpython-39.pyc +0 -0
  253. clarifai/runners/utils/__pycache__/stream_source.cpython-310.pyc +0 -0
  254. clarifai/runners/utils/__pycache__/stream_source.cpython-39.pyc +0 -0
  255. clarifai/runners/utils/__pycache__/url_fetcher.cpython-310.pyc +0 -0
  256. clarifai/runners/utils/__pycache__/url_fetcher.cpython-311.pyc +0 -0
  257. clarifai/runners/utils/__pycache__/url_fetcher.cpython-38.pyc +0 -0
  258. clarifai/runners/utils/__pycache__/url_fetcher.cpython-39.pyc +0 -0
  259. clarifai/runners/utils/data_handler.py +0 -231
  260. clarifai/runners/utils/data_handler_refract.py +0 -213
  261. clarifai/runners/utils/data_types.py +0 -469
  262. clarifai/runners/utils/logger.py +0 -0
  263. clarifai/runners/utils/openai_format.py +0 -87
  264. clarifai/schema/__pycache__/search.cpython-310.pyc +0 -0
  265. clarifai/schema/__pycache__/search.cpython-311.pyc +0 -0
  266. clarifai/urls/__pycache__/helper.cpython-310.pyc +0 -0
  267. clarifai/urls/__pycache__/helper.cpython-311.pyc +0 -0
  268. clarifai/utils/__pycache__/__init__.cpython-310.pyc +0 -0
  269. clarifai/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  270. clarifai/utils/__pycache__/__init__.cpython-39.pyc +0 -0
  271. clarifai/utils/__pycache__/cli.cpython-310.pyc +0 -0
  272. clarifai/utils/__pycache__/cli.cpython-311.pyc +0 -0
  273. clarifai/utils/__pycache__/config.cpython-311.pyc +0 -0
  274. clarifai/utils/__pycache__/constants.cpython-310.pyc +0 -0
  275. clarifai/utils/__pycache__/constants.cpython-311.pyc +0 -0
  276. clarifai/utils/__pycache__/logging.cpython-310.pyc +0 -0
  277. clarifai/utils/__pycache__/logging.cpython-311.pyc +0 -0
  278. clarifai/utils/__pycache__/misc.cpython-310.pyc +0 -0
  279. clarifai/utils/__pycache__/misc.cpython-311.pyc +0 -0
  280. clarifai/utils/__pycache__/model_train.cpython-310.pyc +0 -0
  281. clarifai/utils/__pycache__/model_train.cpython-311.pyc +0 -0
  282. clarifai/utils/__pycache__/protobuf.cpython-311.pyc +0 -0
  283. clarifai/utils/evaluation/__pycache__/__init__.cpython-311.pyc +0 -0
  284. clarifai/utils/evaluation/__pycache__/__init__.cpython-39.pyc +0 -0
  285. clarifai/utils/evaluation/__pycache__/helpers.cpython-311.pyc +0 -0
  286. clarifai/utils/evaluation/__pycache__/main.cpython-311.pyc +0 -0
  287. clarifai/utils/evaluation/__pycache__/main.cpython-39.pyc +0 -0
  288. clarifai/workflows/__pycache__/__init__.cpython-310.pyc +0 -0
  289. clarifai/workflows/__pycache__/__init__.cpython-311.pyc +0 -0
  290. clarifai/workflows/__pycache__/__init__.cpython-39.pyc +0 -0
  291. clarifai/workflows/__pycache__/export.cpython-310.pyc +0 -0
  292. clarifai/workflows/__pycache__/export.cpython-311.pyc +0 -0
  293. clarifai/workflows/__pycache__/utils.cpython-310.pyc +0 -0
  294. clarifai/workflows/__pycache__/utils.cpython-311.pyc +0 -0
  295. clarifai/workflows/__pycache__/validate.cpython-310.pyc +0 -0
  296. clarifai/workflows/__pycache__/validate.cpython-311.pyc +0 -0
  297. clarifai-11.3.0rc2.dist-info/RECORD +0 -322
  298. {clarifai-11.3.0rc2.dist-info → clarifai-11.4.0.dist-info}/entry_points.txt +0 -0
  299. {clarifai-11.3.0rc2.dist-info → clarifai-11.4.0.dist-info/licenses}/LICENSE +0 -0
  300. {clarifai-11.3.0rc2.dist-info → clarifai-11.4.0.dist-info}/top_level.txt +0 -0
@@ -3,78 +3,85 @@
3
3
  import os
4
4
 
5
5
  from ..base import ClarifaiDataLoader
6
-
7
6
  from ..features import VisualDetectionFeatures
8
7
 
9
- #pycocotools is a dependency for this loader
8
+ # pycocotools is a dependency for this loader
10
9
  try:
11
- from pycocotools.coco import COCO
10
+ from pycocotools.coco import COCO
12
11
  except ImportError:
13
- raise ImportError("Could not import pycocotools package. "
14
- "Please do `pip install 'clarifai[all]'` to import pycocotools.")
12
+ raise ImportError(
13
+ "Could not import pycocotools package. "
14
+ "Please do `pip install 'clarifai[all]'` to import pycocotools."
15
+ )
15
16
 
16
17
 
17
18
  class COCODetectionDataLoader(ClarifaiDataLoader):
18
-
19
- def __init__(self, images_dir, label_filepath):
20
- """
21
- Args:
22
- images_dir: Directory containing the images.
23
- label_filepath: Path to the COCO annotation file.
24
- """
25
- self.images_dir = images_dir
26
- self.label_filepath = label_filepath
27
-
28
- self.map_ids = {}
29
- self.load_data()
30
-
31
- @property
32
- def task(self):
33
- return "visual_detection"
34
-
35
- def load_data(self) -> None:
36
- self.coco = COCO(self.label_filepath)
37
- self.map_ids = {i: img_id for i, img_id in enumerate(list(self.coco.imgs.keys()))}
38
-
39
- def __getitem__(self, index: int):
40
- value = self.coco.imgs[self.map_ids[index]]
41
- image_path = os.path.join(self.images_dir, value['file_name'])
42
- annots = [] # bboxes
43
- concept_ids = []
44
-
45
- input_ann_ids = self.coco.getAnnIds(imgIds=[value['id']])
46
- input_anns = self.coco.loadAnns(input_ann_ids)
47
-
48
- for ann in input_anns:
49
- # get concept info
50
- # note1: concept_name can be human readable
51
- # note2: concept_id can only be alphanumeric, up to 32 characters, with no special chars except `-` and `_`
52
- concept_name = self.coco.cats[ann['category_id']]['name']
53
- concept_id = concept_name.lower().replace(' ', '-')
54
-
55
- # get bbox information
56
- # note1: coco bboxes are `[x_min, y_min, width, height]` in pixels
57
- # note2: clarifai bboxes are `[x_min, y_min, x_max, y_max]` normalized between 0-1.0
58
- coco_bbox = ann['bbox']
59
- clarifai_bbox = {
60
- 'left_col': max(0, coco_bbox[0] / value['width']),
61
- 'top_row': max(0, coco_bbox[1] / value['height']),
62
- 'right_col': min(1, (coco_bbox[0] + coco_bbox[2]) / value['width']),
63
- 'bottom_row': min(1, (coco_bbox[1] + coco_bbox[3]) / value['height'])
64
- }
65
- if (clarifai_bbox['left_col'] >=
66
- clarifai_bbox['right_col']) or (clarifai_bbox['top_row'] >= clarifai_bbox['bottom_row']):
67
- continue
68
- annots.append([
69
- clarifai_bbox['left_col'], clarifai_bbox['top_row'], clarifai_bbox['right_col'],
70
- clarifai_bbox['bottom_row']
71
- ])
72
- concept_ids.append(concept_id)
73
-
74
- assert len(concept_ids) == len(annots), f"Num concepts must match num bbox annotations\
19
+ def __init__(self, images_dir, label_filepath):
20
+ """
21
+ Args:
22
+ images_dir: Directory containing the images.
23
+ label_filepath: Path to the COCO annotation file.
24
+ """
25
+ self.images_dir = images_dir
26
+ self.label_filepath = label_filepath
27
+
28
+ self.map_ids = {}
29
+ self.load_data()
30
+
31
+ @property
32
+ def task(self):
33
+ return "visual_detection"
34
+
35
+ def load_data(self) -> None:
36
+ self.coco = COCO(self.label_filepath)
37
+ self.map_ids = {i: img_id for i, img_id in enumerate(list(self.coco.imgs.keys()))}
38
+
39
+ def __getitem__(self, index: int):
40
+ value = self.coco.imgs[self.map_ids[index]]
41
+ image_path = os.path.join(self.images_dir, value['file_name'])
42
+ annots = [] # bboxes
43
+ concept_ids = []
44
+
45
+ input_ann_ids = self.coco.getAnnIds(imgIds=[value['id']])
46
+ input_anns = self.coco.loadAnns(input_ann_ids)
47
+
48
+ for ann in input_anns:
49
+ # get concept info
50
+ # note1: concept_name can be human readable
51
+ # note2: concept_id can only be alphanumeric, up to 32 characters, with no special chars except `-` and `_`
52
+ concept_name = self.coco.cats[ann['category_id']]['name']
53
+ concept_id = concept_name.lower().replace(' ', '-')
54
+
55
+ # get bbox information
56
+ # note1: coco bboxes are `[x_min, y_min, width, height]` in pixels
57
+ # note2: clarifai bboxes are `[x_min, y_min, x_max, y_max]` normalized between 0-1.0
58
+ coco_bbox = ann['bbox']
59
+ clarifai_bbox = {
60
+ 'left_col': max(0, coco_bbox[0] / value['width']),
61
+ 'top_row': max(0, coco_bbox[1] / value['height']),
62
+ 'right_col': min(1, (coco_bbox[0] + coco_bbox[2]) / value['width']),
63
+ 'bottom_row': min(1, (coco_bbox[1] + coco_bbox[3]) / value['height']),
64
+ }
65
+ if (clarifai_bbox['left_col'] >= clarifai_bbox['right_col']) or (
66
+ clarifai_bbox['top_row'] >= clarifai_bbox['bottom_row']
67
+ ):
68
+ continue
69
+ annots.append(
70
+ [
71
+ clarifai_bbox['left_col'],
72
+ clarifai_bbox['top_row'],
73
+ clarifai_bbox['right_col'],
74
+ clarifai_bbox['bottom_row'],
75
+ ]
76
+ )
77
+ concept_ids.append(concept_id)
78
+
79
+ assert len(concept_ids) == len(annots), (
80
+ f"Num concepts must match num bbox annotations\
75
81
  for a single image. Found {len(concept_ids)} concepts and {len(annots)} bboxes."
82
+ )
76
83
 
77
- return VisualDetectionFeatures(image_path, concept_ids, annots, id=str(value['id']))
84
+ return VisualDetectionFeatures(image_path, concept_ids, annots, id=str(value['id']))
78
85
 
79
- def __len__(self):
80
- return len(self.coco.imgs)
86
+ def __len__(self):
87
+ return len(self.coco.imgs)
@@ -3,60 +3,64 @@
3
3
  import os
4
4
 
5
5
  from clarifai.datasets.upload.base import ClarifaiDataLoader
6
+
6
7
  from ..features import VisualClassificationFeatures
7
8
 
8
9
 
9
10
  class ImageNetDataLoader(ClarifaiDataLoader):
10
- """ImageNet Dataset."""
11
-
12
- def __init__(self, data_dir, split: str = "train"):
13
- """
14
- Initialize dataset params.
15
- Args:
16
- data_dir: the local dataset directory.
17
- split: "train" or "test"
18
- """
19
- self.split = split
20
- self.data_dir = data_dir
21
- self.label_map = dict()
22
- self.concepts = []
23
- self.image_paths = []
24
-
25
- self.load_data()
26
-
27
- @property
28
- def task(self):
29
- return "visual_classification"
30
-
31
- def load_data(self):
32
- #Creating label map
33
- with open(os.path.join(self.data_dir, "LOC_synset_mapping.txt")) as _file:
34
- for _id in _file:
35
- #Removing the spaces,upper quotes and Converting to set to remove repetitions. Then converting to list for compatibility.
36
- self.label_map[_id.split(" ")[0]] = list({
37
- "".join(("".join((label.rstrip().lstrip().split(" ")))).split("'"))
38
- for label in _id[_id.find(" ") + 1:].split(",")
39
- })
40
-
41
- for _folder in os.listdir(os.path.join(self.data_dir, self.split)):
42
- try:
43
- concept = self.label_map[_folder] #concepts
44
- except Exception:
45
- continue
46
- folder_path = os.path.join(self.data_dir, self.split) + "/" + _folder
47
- for _img in os.listdir(folder_path):
48
- if _img.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff')):
49
- self.concepts.append(concept)
50
- self.image_paths.append(folder_path + "/" + _img)
51
-
52
- assert len(self.concepts) == len(self.image_paths)
53
- "Number of concepts and images are not equal"
54
-
55
- def __len__(self):
56
- return len(self.image_paths)
57
-
58
- def __getitem__(self, idx):
59
- return VisualClassificationFeatures(
60
- image_path=self.image_paths[idx],
61
- labels=self.concepts[idx],
62
- id=self.image_paths[idx].split('.')[0].split('/')[-1])
11
+ """ImageNet Dataset."""
12
+
13
+ def __init__(self, data_dir, split: str = "train"):
14
+ """
15
+ Initialize dataset params.
16
+ Args:
17
+ data_dir: the local dataset directory.
18
+ split: "train" or "test"
19
+ """
20
+ self.split = split
21
+ self.data_dir = data_dir
22
+ self.label_map = dict()
23
+ self.concepts = []
24
+ self.image_paths = []
25
+
26
+ self.load_data()
27
+
28
+ @property
29
+ def task(self):
30
+ return "visual_classification"
31
+
32
+ def load_data(self):
33
+ # Creating label map
34
+ with open(os.path.join(self.data_dir, "LOC_synset_mapping.txt")) as _file:
35
+ for _id in _file:
36
+ # Removing the spaces,upper quotes and Converting to set to remove repetitions. Then converting to list for compatibility.
37
+ self.label_map[_id.split(" ")[0]] = list(
38
+ {
39
+ "".join(("".join((label.rstrip().lstrip().split(" ")))).split("'"))
40
+ for label in _id[_id.find(" ") + 1 :].split(",")
41
+ }
42
+ )
43
+
44
+ for _folder in os.listdir(os.path.join(self.data_dir, self.split)):
45
+ try:
46
+ concept = self.label_map[_folder] # concepts
47
+ except Exception:
48
+ continue
49
+ folder_path = os.path.join(self.data_dir, self.split) + "/" + _folder
50
+ for _img in os.listdir(folder_path):
51
+ if _img.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff')):
52
+ self.concepts.append(concept)
53
+ self.image_paths.append(folder_path + "/" + _img)
54
+
55
+ assert len(self.concepts) == len(self.image_paths)
56
+ "Number of concepts and images are not equal"
57
+
58
+ def __len__(self):
59
+ return len(self.image_paths)
60
+
61
+ def __getitem__(self, idx):
62
+ return VisualClassificationFeatures(
63
+ image_path=self.image_paths[idx],
64
+ labels=self.concepts[idx],
65
+ id=self.image_paths[idx].split('.')[0].split('/')[-1],
66
+ )