utils.py 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. from __future__ import absolute_import
  15. import json
  16. from .. import c_lib_wrap as C
  17. def mask_to_json(result):
  18. r_json = {
  19. "data": result.data,
  20. "shape": result.shape,
  21. }
  22. return json.dumps(r_json)
  23. def detection_to_json(result):
  24. masks = []
  25. for mask in result.masks:
  26. masks.append(mask_to_json(mask))
  27. r_json = {
  28. "boxes": result.boxes,
  29. "scores": result.scores,
  30. "label_ids": result.label_ids,
  31. "masks": masks,
  32. "contain_masks": result.contain_masks,
  33. }
  34. return json.dumps(r_json)
  35. def perception_to_json(result):
  36. r_json = {
  37. "scores": result.scores,
  38. "label_ids": result.label_ids,
  39. "boxes": result.boxes,
  40. "center": result.center,
  41. "observation_angle": result.observation_angle,
  42. "yaw_angle": result.yaw_angle,
  43. "velocity": result.velocity,
  44. }
  45. return json.dumps(r_json)
  46. def classify_to_json(result):
  47. r_json = {
  48. "label_ids": result.label_ids,
  49. "scores": result.scores,
  50. }
  51. return json.dumps(r_json)
  52. def keypoint_to_json(result):
  53. r_json = {
  54. "keypoints": result.keypoints,
  55. "scores": result.scores,
  56. "num_joints": result.num_joints,
  57. }
  58. return json.dumps(r_json)
  59. def ocr_to_json(result):
  60. r_json = {
  61. "boxes": result.boxes,
  62. "text": result.text,
  63. "rec_scores": result.rec_scores,
  64. "cls_scores": result.cls_scores,
  65. "cls_labels": result.cls_labels,
  66. }
  67. return json.dumps(r_json)
  68. def mot_to_json(result):
  69. r_json = {
  70. "boxes": result.boxes,
  71. "ids": result.ids,
  72. "scores": result.scores,
  73. "class_ids": result.class_ids,
  74. }
  75. return json.dumps(r_json)
  76. def face_detection_to_json(result):
  77. r_json = {
  78. "boxes": result.boxes,
  79. "landmarks": result.landmarks,
  80. "scores": result.scores,
  81. "landmarks_per_face": result.landmarks_per_face,
  82. }
  83. return json.dumps(r_json)
  84. def face_alignment_to_json(result):
  85. r_json = {
  86. "landmarks": result.landmarks,
  87. }
  88. return json.dumps(r_json)
  89. def face_recognition_to_json(result):
  90. r_json = {
  91. "embedding": result.embedding,
  92. }
  93. return json.dumps(r_json)
  94. def segmentation_to_json(result):
  95. r_json = {
  96. "label_map": result.label_map,
  97. "score_map": result.score_map,
  98. "shape": result.shape,
  99. "contain_score_map": result.contain_score_map,
  100. }
  101. return json.dumps(r_json)
  102. def matting_to_json(result):
  103. r_json = {
  104. "alpha": result.alpha,
  105. "foreground": result.foreground,
  106. "shape": result.shape,
  107. "contain_foreground": result.contain_foreground,
  108. }
  109. return json.dumps(r_json)
  110. def head_pose_to_json(result):
  111. r_json = {
  112. "euler_angles": result.euler_angles,
  113. }
  114. return json.dumps(r_json)
  115. def fd_result_to_json(result):
  116. if isinstance(result, list):
  117. r_list = []
  118. for r in result:
  119. r_list.append(fd_result_to_json(r))
  120. return r_list
  121. elif isinstance(result, C.vision.DetectionResult):
  122. return detection_to_json(result)
  123. elif isinstance(result, C.vision.Mask):
  124. return mask_to_json(result)
  125. elif isinstance(result, C.vision.ClassifyResult):
  126. return classify_to_json(result)
  127. elif isinstance(result, C.vision.KeyPointDetectionResult):
  128. return keypoint_to_json(result)
  129. elif isinstance(result, C.vision.OCRResult):
  130. return ocr_to_json(result)
  131. elif isinstance(result, C.vision.MOTResult):
  132. return mot_to_json(result)
  133. elif isinstance(result, C.vision.FaceDetectionResult):
  134. return face_detection_to_json(result)
  135. elif isinstance(result, C.vision.FaceAlignmentResult):
  136. return face_alignment_to_json(result)
  137. elif isinstance(result, C.vision.FaceRecognitionResult):
  138. return face_recognition_to_json(result)
  139. elif isinstance(result, C.vision.SegmentationResult):
  140. return segmentation_to_json(result)
  141. elif isinstance(result, C.vision.MattingResult):
  142. return matting_to_json(result)
  143. elif isinstance(result, C.vision.HeadPoseResult):
  144. return head_pose_to_json(result)
  145. elif isinstance(result, C.vision.PerceptionResult):
  146. return perception_to_json(result)
  147. else:
  148. assert False, "{} Conversion to JSON format is not supported".format(
  149. type(result)
  150. )
  151. return {}
  152. def json_to_mask(result):
  153. mask = C.vision.Mask()
  154. mask.data = result["data"]
  155. mask.shape = result["shape"]
  156. return mask
  157. def json_to_detection(result):
  158. masks = []
  159. for mask in result["masks"]:
  160. masks.append(json_to_mask(json.loads(mask)))
  161. det_result = C.vision.DetectionResult()
  162. det_result.boxes = result["boxes"]
  163. det_result.scores = result["scores"]
  164. det_result.label_ids = result["label_ids"]
  165. det_result.masks = masks
  166. det_result.contain_masks = result["contain_masks"]
  167. return det_result
  168. def json_to_perception(result):
  169. perception_result = C.vision.PerceptionResult()
  170. perception_result.scores = result["scores"]
  171. perception_result.label_ids = result["label_ids"]
  172. perception_result.boxes = result["boxes"]
  173. perception_result.center = result["center"]
  174. perception_result.observation_angle = result["observation_angle"]
  175. perception_result.yaw_angle = result["yaw_angle"]
  176. perception_result.velocity = result["velocity"]
  177. return perception_result
  178. def json_to_classify(result):
  179. cls_result = C.vision.ClassifyResult()
  180. cls_result.label_ids = result["label_ids"]
  181. cls_result.scores = result["scores"]
  182. return cls_result
  183. def json_to_keypoint(result):
  184. kp_result = C.vision.KeyPointDetectionResult()
  185. kp_result.keypoints = result["keypoints"]
  186. kp_result.scores = result["scores"]
  187. kp_result.num_joints = result["num_joints"]
  188. return kp_result
  189. def json_to_ocr(result):
  190. ocr_result = C.vision.OCRResult()
  191. ocr_result.boxes = result["boxes"]
  192. ocr_result.text = result["text"]
  193. ocr_result.rec_scores = result["rec_scores"]
  194. ocr_result.cls_scores = result["cls_scores"]
  195. ocr_result.cls_labels = result["cls_labels"]
  196. return ocr_result
  197. def json_to_mot(result):
  198. mot_result = C.vision.MOTResult()
  199. mot_result.boxes = result["boxes"]
  200. mot_result.ids = result["ids"]
  201. mot_result.scores = result["scores"]
  202. mot_result.class_ids = result["class_ids"]
  203. return mot_result
  204. def json_to_face_detection(result):
  205. face_result = C.vision.FaceDetectionResult()
  206. face_result.boxes = result["boxes"]
  207. face_result.landmarks = result["landmarks"]
  208. face_result.scores = result["scores"]
  209. face_result.landmarks_per_face = result["landmarks_per_face"]
  210. return face_result
  211. def json_to_face_alignment(result):
  212. face_result = C.vision.FaceAlignmentResult()
  213. face_result.landmarks = result["landmarks"]
  214. return face_result
  215. def json_to_face_recognition(result):
  216. face_result = C.vision.FaceRecognitionResult()
  217. face_result.embedding = result["embedding"]
  218. return face_result
  219. def json_to_segmentation(result):
  220. seg_result = C.vision.SegmentationResult()
  221. seg_result.label_map = result["label_map"]
  222. seg_result.score_map = result["score_map"]
  223. seg_result.shape = result["shape"]
  224. seg_result.contain_score_map = result["contain_score_map"]
  225. return seg_result
  226. def json_to_matting(result):
  227. matting_result = C.vision.MattingResult()
  228. matting_result.alpha = result["alpha"]
  229. matting_result.foreground = result["foreground"]
  230. matting_result.shape = result["shape"]
  231. matting_result.contain_foreground = result["contain_foreground"]
  232. return matting_result
  233. def json_to_head_pose(result):
  234. hp_result = C.vision.HeadPoseResult()
  235. hp_result.euler_angles = result["euler_angles"]
  236. return hp_result