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
@@ -1,150 +1,160 @@
1
1
  from typing import List, Tuple
2
+
2
3
  import numpy as np
3
4
  from clarifai_grpc.grpc.api import resources_pb2 as respb2
4
5
 
5
6
 
6
7
  def parse_eval_annotation_classifier(
7
- eval_metrics: respb2.EvalMetrics) -> Tuple[np.array, np.array, list, List[respb2.Input]]:
8
- test_set = eval_metrics.test_set
9
- # get concept ids
10
- concept_ids = [each.id for each in test_set[0].predicted_concepts]
11
- concept_ids.sort()
12
- # get test set
13
- y_preds = []
14
- y = []
15
- inputs = []
16
- for data in test_set:
17
-
18
- def _to_array(_data):
19
- cps = [0] * len(concept_ids)
20
- for each in _data:
21
- cps[concept_ids.index(each.id)] = each.value
22
- return np.asarray(cps)
23
-
24
- y_preds.append(_to_array(data.predicted_concepts))
25
- y.append(_to_array(data.ground_truth_concepts))
26
- inputs.append(data.input)
27
-
28
- return np.asarray(y), np.asarray(y_preds), concept_ids, inputs
29
-
30
-
31
- def parse_eval_annotation_detector(eval_metrics: respb2.EvalMetrics,
32
- normalized_box: bool = False,
33
- box_style: str = "xyxy"
34
- ) -> Tuple[np.array, np.array, list, List[respb2.Input]]:
35
- BOX_STYLES = ["xyxy", "xywh"]
36
- assert box_style in BOX_STYLES, ValueError(f"Expected box_style in {BOX_STYLES}")
37
-
38
- concept_ids = list(set([each.concept.id for each in eval_metrics.metrics_by_class]))
39
- concept_ids.sort()
40
-
41
- def _get_box_annot(field, img_height, img_width):
42
- xyxy_concept_score = []
43
- for each in field:
44
- box = each.region_info.bounding_box
45
- x1 = box.left_col * img_width
46
- y1 = box.top_row * img_height
47
- x2 = box.right_col * img_width
48
- y2 = box.bottom_row * img_height
49
- score = each.data.concepts[0].value
50
- concept = each.data.concepts[0].id
51
- concept_index = concept_ids.index(concept)
52
- if box_style == "xyxy":
53
- xyxy_concept_score.append([x1, y1, x2, y2, concept_index, score])
54
- else:
55
- w = abs(x1 - x2)
56
- h = abs(y1 - y2)
57
- xyxy_concept_score.append([x1, y1, w, h, concept_index, score])
58
-
59
- return np.asarray(xyxy_concept_score)
60
-
61
- inputs = []
62
- pred_xyxy_concept_score = []
63
- gt_xyxy_concept_score = []
64
- for input_data in eval_metrics.test_set:
65
- _input = input_data.input
66
- img_height = _input.data.image.image_info.height if not normalized_box else 1.
67
- img_width = _input.data.image.image_info.height if not normalized_box else 1.
68
- _pred_xyxy_concept_score = _get_box_annot(
69
- input_data.predicted_annotation.data.regions, img_height=img_height, img_width=img_width)
70
- _gt_xyxy_concept_score = _get_box_annot(
71
- input_data.ground_truth_annotation.data.regions,
72
- img_height=img_height,
73
- img_width=img_width)
74
-
75
- pred_xyxy_concept_score.append(_pred_xyxy_concept_score)
76
- gt_xyxy_concept_score.append(_gt_xyxy_concept_score)
77
- inputs.append(_input)
78
-
79
- return np.asarray(gt_xyxy_concept_score), np.asarray(
80
- pred_xyxy_concept_score), concept_ids, inputs
81
-
82
-
83
- def parse_eval_annotation_detector_coco(eval_metrics: respb2.EvalMetrics,
84
- ) -> Tuple[np.array, np.array, list, List[respb2.Input]]:
85
-
86
- gts, preds, concept_ids, inputs = parse_eval_annotation_detector(
87
- eval_metrics=eval_metrics, normalized_box=False, box_style="xywh")
88
-
89
- def _make_box_annot(data, input_data, accum_id, is_pred=True):
90
- img_id = input_data.id
91
- img_url = input_data.data.image.url
92
- img_height = input_data.data.image.image_info.height
93
- img_width = input_data.data.image.image_info.height
94
- image = {
95
- "id": img_id,
96
- "file_name": img_url,
97
- "width": img_width,
98
- "height": img_height,
99
- }
100
- annotations = []
101
- for i, d in enumerate(data.tolist()):
102
- area = d[2] * d[3]
103
- box = {
104
- "iscrowd": 0,
105
- "ignore": 0,
106
- "image_id": img_id,
107
- "bbox": d[:4],
108
- "area": area,
109
- "segmentation": [],
110
- "category_id": d[4],
111
- "id": accum_id + i,
112
- }
113
- if is_pred:
114
- box["score"] = d[5]
115
- annotations.append(box)
116
-
117
- return image, annotations
118
-
119
- categories = [{
120
- "supercategory": "none",
121
- "id": i,
122
- "name": label
123
- } for i, label in enumerate(concept_ids)]
124
-
125
- accum_pred_ids = 0
126
- accum_gt_ids = 0
127
- pred_images = []
128
- pred_boxes = []
129
- gt_images = []
130
- gt_boxes = []
131
- for ith, input_proto in enumerate(inputs):
132
- pred = preds[ith]
133
- gt = gts[ith]
134
- pred_img, pred_box = _make_box_annot(
135
- pred, accum_id=accum_pred_ids, input_data=input_proto, is_pred=True)
136
- gt_img, gt_box = _make_box_annot(
137
- gt, accum_id=accum_gt_ids, input_data=input_proto, is_pred=False)
138
-
139
- accum_pred_ids += len(pred)
140
- pred_images.append(pred_img)
141
- pred_boxes += pred_box
142
-
143
- accum_gt_ids += len(gt)
144
- gt_images.append(gt_img)
145
- gt_boxes += gt_box
146
-
147
- pred_annots = {"images": pred_images, "annotations": pred_boxes, "categories": categories}
148
- gt_annots = {"images": gt_images, "annotations": gt_boxes, "categories": categories}
149
-
150
- return gt_annots, pred_annots
8
+ eval_metrics: respb2.EvalMetrics,
9
+ ) -> Tuple[np.array, np.array, list, List[respb2.Input]]:
10
+ test_set = eval_metrics.test_set
11
+ # get concept ids
12
+ concept_ids = [each.id for each in test_set[0].predicted_concepts]
13
+ concept_ids.sort()
14
+ # get test set
15
+ y_preds = []
16
+ y = []
17
+ inputs = []
18
+ for data in test_set:
19
+
20
+ def _to_array(_data):
21
+ cps = [0] * len(concept_ids)
22
+ for each in _data:
23
+ cps[concept_ids.index(each.id)] = each.value
24
+ return np.asarray(cps)
25
+
26
+ y_preds.append(_to_array(data.predicted_concepts))
27
+ y.append(_to_array(data.ground_truth_concepts))
28
+ inputs.append(data.input)
29
+
30
+ return np.asarray(y), np.asarray(y_preds), concept_ids, inputs
31
+
32
+
33
+ def parse_eval_annotation_detector(
34
+ eval_metrics: respb2.EvalMetrics, normalized_box: bool = False, box_style: str = "xyxy"
35
+ ) -> Tuple[np.array, np.array, list, List[respb2.Input]]:
36
+ BOX_STYLES = ["xyxy", "xywh"]
37
+ assert box_style in BOX_STYLES, ValueError(f"Expected box_style in {BOX_STYLES}")
38
+
39
+ concept_ids = list(set([each.concept.id for each in eval_metrics.metrics_by_class]))
40
+ concept_ids.sort()
41
+
42
+ def _get_box_annot(field, img_height, img_width):
43
+ xyxy_concept_score = []
44
+ for each in field:
45
+ box = each.region_info.bounding_box
46
+ x1 = box.left_col * img_width
47
+ y1 = box.top_row * img_height
48
+ x2 = box.right_col * img_width
49
+ y2 = box.bottom_row * img_height
50
+ score = each.data.concepts[0].value
51
+ concept = each.data.concepts[0].id
52
+ concept_index = concept_ids.index(concept)
53
+ if box_style == "xyxy":
54
+ xyxy_concept_score.append([x1, y1, x2, y2, concept_index, score])
55
+ else:
56
+ w = abs(x1 - x2)
57
+ h = abs(y1 - y2)
58
+ xyxy_concept_score.append([x1, y1, w, h, concept_index, score])
59
+
60
+ return np.asarray(xyxy_concept_score)
61
+
62
+ inputs = []
63
+ pred_xyxy_concept_score = []
64
+ gt_xyxy_concept_score = []
65
+ for input_data in eval_metrics.test_set:
66
+ _input = input_data.input
67
+ img_height = _input.data.image.image_info.height if not normalized_box else 1.0
68
+ img_width = _input.data.image.image_info.height if not normalized_box else 1.0
69
+ _pred_xyxy_concept_score = _get_box_annot(
70
+ input_data.predicted_annotation.data.regions,
71
+ img_height=img_height,
72
+ img_width=img_width,
73
+ )
74
+ _gt_xyxy_concept_score = _get_box_annot(
75
+ input_data.ground_truth_annotation.data.regions,
76
+ img_height=img_height,
77
+ img_width=img_width,
78
+ )
79
+
80
+ pred_xyxy_concept_score.append(_pred_xyxy_concept_score)
81
+ gt_xyxy_concept_score.append(_gt_xyxy_concept_score)
82
+ inputs.append(_input)
83
+
84
+ return (
85
+ np.asarray(gt_xyxy_concept_score),
86
+ np.asarray(pred_xyxy_concept_score),
87
+ concept_ids,
88
+ inputs,
89
+ )
90
+
91
+
92
+ def parse_eval_annotation_detector_coco(
93
+ eval_metrics: respb2.EvalMetrics,
94
+ ) -> Tuple[np.array, np.array, list, List[respb2.Input]]:
95
+ gts, preds, concept_ids, inputs = parse_eval_annotation_detector(
96
+ eval_metrics=eval_metrics, normalized_box=False, box_style="xywh"
97
+ )
98
+
99
+ def _make_box_annot(data, input_data, accum_id, is_pred=True):
100
+ img_id = input_data.id
101
+ img_url = input_data.data.image.url
102
+ img_height = input_data.data.image.image_info.height
103
+ img_width = input_data.data.image.image_info.height
104
+ image = {
105
+ "id": img_id,
106
+ "file_name": img_url,
107
+ "width": img_width,
108
+ "height": img_height,
109
+ }
110
+ annotations = []
111
+ for i, d in enumerate(data.tolist()):
112
+ area = d[2] * d[3]
113
+ box = {
114
+ "iscrowd": 0,
115
+ "ignore": 0,
116
+ "image_id": img_id,
117
+ "bbox": d[:4],
118
+ "area": area,
119
+ "segmentation": [],
120
+ "category_id": d[4],
121
+ "id": accum_id + i,
122
+ }
123
+ if is_pred:
124
+ box["score"] = d[5]
125
+ annotations.append(box)
126
+
127
+ return image, annotations
128
+
129
+ categories = [
130
+ {"supercategory": "none", "id": i, "name": label} for i, label in enumerate(concept_ids)
131
+ ]
132
+
133
+ accum_pred_ids = 0
134
+ accum_gt_ids = 0
135
+ pred_images = []
136
+ pred_boxes = []
137
+ gt_images = []
138
+ gt_boxes = []
139
+ for ith, input_proto in enumerate(inputs):
140
+ pred = preds[ith]
141
+ gt = gts[ith]
142
+ pred_img, pred_box = _make_box_annot(
143
+ pred, accum_id=accum_pred_ids, input_data=input_proto, is_pred=True
144
+ )
145
+ gt_img, gt_box = _make_box_annot(
146
+ gt, accum_id=accum_gt_ids, input_data=input_proto, is_pred=False
147
+ )
148
+
149
+ accum_pred_ids += len(pred)
150
+ pred_images.append(pred_img)
151
+ pred_boxes += pred_box
152
+
153
+ accum_gt_ids += len(gt)
154
+ gt_images.append(gt_img)
155
+ gt_boxes += gt_box
156
+
157
+ pred_annots = {"images": pred_images, "annotations": pred_boxes, "categories": categories}
158
+ gt_annots = {"images": gt_images, "annotations": gt_boxes, "categories": categories}
159
+
160
+ return gt_annots, pred_annots