pybaseutils 2.3.5__tar.gz → 2.3.6__tar.gz

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 (307) hide show
  1. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/PKG-INFO +1 -1
  2. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/__init__.py +1 -1
  3. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/audio/audio_utils.py +23 -14
  4. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dict_uils.py +1 -1
  5. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/image_utils.py +17 -3
  6. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils.egg-info/PKG-INFO +1 -1
  7. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils.egg-info/SOURCES.txt +2 -0
  8. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/demo_labelme_crop.py +15 -7
  9. pybaseutils-2.3.6/test_py/demo3.py +48 -0
  10. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_gif_video.py +2 -2
  11. pybaseutils-2.3.6/test_py/model_process.py +30 -0
  12. pybaseutils-2.3.6/test_py/slowfastnet.py +217 -0
  13. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/web_socket/asr_service.py +1 -1
  14. pybaseutils-2.3.5/test_py/demo3.py +0 -41
  15. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/LICENCE +0 -0
  16. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/README.md +0 -0
  17. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/audio/__init__.py +0 -0
  18. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/audio/pyaudio_utils.py +0 -0
  19. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/audio/vad_utils.py +0 -0
  20. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/base/__init__.py +0 -0
  21. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/base/dict_queue.py +0 -0
  22. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/base/list_queue.py +0 -0
  23. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/base64_utils.py +0 -0
  24. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/batch_utils.py +0 -0
  25. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/build_utils/__init__.py +0 -0
  26. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/build_utils/cython_utils.py +0 -0
  27. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
  28. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cluster/__init__.py +0 -0
  29. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cluster/kmean.py +0 -0
  30. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cluster/maxmin_distance.py +0 -0
  31. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cluster/similarity.py +0 -0
  32. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/color_utils.py +0 -0
  33. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/config_utils.py +0 -0
  34. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/__init__.py +0 -0
  35. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/build_coco.py +0 -0
  36. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/build_cvat.py +0 -0
  37. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/build_labelme.py +0 -0
  38. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/build_voc.py +0 -0
  39. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/concat_coco.py +0 -0
  40. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_coco2labelme.py +0 -0
  41. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_coco2voc.py +0 -0
  42. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_cvat2labelme.py +0 -0
  43. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_labelme2coco.py +0 -0
  44. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_labelme2cvat.py +0 -0
  45. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_labelme2labelme.py +0 -0
  46. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_labelme2voc.py +0 -0
  47. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_labelme2yolo.py +0 -0
  48. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_voc2coco.py +0 -0
  49. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_voc2labelme.py +0 -0
  50. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_voc2voc.py +0 -0
  51. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_voc2yolo.py +0 -0
  52. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_yolo2labelme.py +0 -0
  53. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/convert_yolo2voc.py +0 -0
  54. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/converter/prelabelme.py +0 -0
  55. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/coords_utils.py +0 -0
  56. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cvutils/__init__.py +0 -0
  57. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cvutils/corner_utils.py +0 -0
  58. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cvutils/monitor.py +0 -0
  59. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cvutils/mouse_utils.py +0 -0
  60. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cvutils/nms_utils.py +0 -0
  61. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/cvutils/video_utils.py +0 -0
  62. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/data_utils.py +0 -0
  63. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/__init__.py +0 -0
  64. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/balanced_classes.py +0 -0
  65. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/base_coco.py +0 -0
  66. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/base_dataset.py +0 -0
  67. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/data_resample.py +0 -0
  68. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_coco_det.py +0 -0
  69. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_coco_ins.py +0 -0
  70. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_coco_kps.py +0 -0
  71. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_image_folder.py +0 -0
  72. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_image_text.py +0 -0
  73. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_labelme.py +0 -0
  74. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_labelme_crop.py +0 -0
  75. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_voc.py +0 -0
  76. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/parser_yolo.py +0 -0
  77. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
  78. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/file_utils.py +0 -0
  79. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/QueueTable.py +0 -0
  80. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/__init__.py +0 -0
  81. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/demo.py +0 -0
  82. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/kalman_filter.py +0 -0
  83. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/mean_filter.py +0 -0
  84. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/motion_filter.py +0 -0
  85. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/filter/pose_filter.py +0 -0
  86. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/font_style/__init__.py +0 -0
  87. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/font_utils.py +0 -0
  88. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/geometry_tools.py +0 -0
  89. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/heatmap_utils.py +0 -0
  90. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/http_utils.py +0 -0
  91. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/json_utils.py +0 -0
  92. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/log.py +0 -0
  93. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/log_utils.py +0 -0
  94. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/media/__init__.py +0 -0
  95. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/media/ffmpeg_utils.py +0 -0
  96. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/metrics/__init__.py +0 -0
  97. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/metrics/accuracy.py +0 -0
  98. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/metrics/average_meter.py +0 -0
  99. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/metrics/class_report.py +0 -0
  100. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/metrics/plot_pr.py +0 -0
  101. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/metrics/plot_roc.py +0 -0
  102. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/numpy_utils.py +0 -0
  103. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pandas_utils.py +0 -0
  104. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/plot_utils.py +0 -0
  105. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pose/__init__.py +0 -0
  106. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pose/bones_utils.py +0 -0
  107. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pose/human_pose.py +0 -0
  108. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pose/pose_utils.py +0 -0
  109. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pycpp/__init__.py +0 -0
  110. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pycpp/demo.py +0 -0
  111. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/pycpp/main.py +0 -0
  112. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/server/__init__.py +0 -0
  113. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/server/apm_server.py +0 -0
  114. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/setup_config.py +0 -0
  115. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/singleton_utils.py +0 -0
  116. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/text_utils.py +0 -0
  117. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/thread_utils.py +0 -0
  118. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/time_utils.py +0 -0
  119. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracemalloc_utils.py +0 -0
  120. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracemalloc_utils2.py +0 -0
  121. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/QueueTable.py +0 -0
  122. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/__init__.py +0 -0
  123. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/demo.py +0 -0
  124. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/kalman_filter.py +0 -0
  125. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/mean_filter.py +0 -0
  126. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/motion_filter.py +0 -0
  127. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/tracking/pose_filter.py +0 -0
  128. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/transforms/__init__.py +0 -0
  129. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/transforms/affine_transform.py +0 -0
  130. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/transforms/augment_utils.py +0 -0
  131. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/transforms/face_alignment.py +0 -0
  132. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/transforms/transform_utils.py +0 -0
  133. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/web/__init__.py +0 -0
  134. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/web/app_gradio_image.py +0 -0
  135. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/web/app_stweb_image.py +0 -0
  136. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/web/app_webio_image.py +0 -0
  137. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/web/demo.py +0 -0
  138. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/word_utils.py +0 -0
  139. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/worker.py +0 -0
  140. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils/yaml_utils.py +0 -0
  141. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils.egg-info/dependency_links.txt +0 -0
  142. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils.egg-info/not-zip-safe +0 -0
  143. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/pybaseutils.egg-info/top_level.txt +0 -0
  144. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/setup.cfg +0 -0
  145. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/setup.py +0 -0
  146. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/Image_enhance/__init__.py +0 -0
  147. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/Image_enhance/dmeo01.py +0 -0
  148. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/WebCrawler/__init__.py +0 -0
  149. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/WebCrawler/search_baidu.py +0 -0
  150. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/WebCrawler/search_biying.py +0 -0
  151. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/__init__.py +0 -0
  152. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/__init__.py +0 -0
  153. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/action_dataset.py +0 -0
  154. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/build_cython.py +0 -0
  155. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/build_pyarmor.py +0 -0
  156. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/build_service.py +0 -0
  157. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/convert_cvat2labelme.py +0 -0
  158. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/convert_labelme2coco.py +0 -0
  159. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/convert_labelme2voc.py +0 -0
  160. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/copy_move.py +0 -0
  161. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/demo_labelme_shock.py +0 -0
  162. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/demo_video_aije.py +0 -0
  163. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/demo_voc_crop.py +0 -0
  164. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/demo_voc_vis.py +0 -0
  165. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/get_pair_data.py +0 -0
  166. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/aije/video_convertor.py +0 -0
  167. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/__init__.py +0 -0
  168. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/demo.py +0 -0
  169. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/main.py +0 -0
  170. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/main_read.py +0 -0
  171. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/segment.py +0 -0
  172. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
  173. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio/speechbrain_demo.py +0 -0
  174. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/audio_demo1.py +0 -0
  175. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/camera/__init__.py +0 -0
  176. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/camera/demo.py +0 -0
  177. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/captcha/__init__.py +0 -0
  178. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/captcha/demo.py +0 -0
  179. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/class_attribute.py +0 -0
  180. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/class_names.py +0 -0
  181. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/AffectNet.py +0 -0
  182. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/AsianMovie.py +0 -0
  183. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/BITVehicle2voc.py +0 -0
  184. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/BSTLD2voc.py +0 -0
  185. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/CCPD.py +0 -0
  186. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/CCPD2voc.py +0 -0
  187. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/FL3D_dataset.py +0 -0
  188. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/FreiHAND2coco.py +0 -0
  189. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/MTFL2voc.py +0 -0
  190. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/TT100K.py +0 -0
  191. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/WaterMeters1.py +0 -0
  192. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/WaterMeters2.py +0 -0
  193. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/__init__.py +0 -0
  194. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/concat_coco.py +0 -0
  195. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_coco2voc.py +0 -0
  196. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_cvat2labelme.py +0 -0
  197. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_gesture2hand.py +0 -0
  198. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_labelme2coco.py +0 -0
  199. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_labelme2cvat.py +0 -0
  200. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_labelme2labelme.py +0 -0
  201. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_labelme2voc.py +0 -0
  202. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/convert_voc2labelme.py +0 -0
  203. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/fatigue_driving.py +0 -0
  204. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/fdd_dataset.py +0 -0
  205. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/get_pair_data.py +0 -0
  206. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/handpose2coco.py +0 -0
  207. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/insects_for_aichallenger.py +0 -0
  208. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/tt100k_utils.py +0 -0
  209. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/ua_detrac2voc.py +0 -0
  210. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/ucf101_dataset.py +0 -0
  211. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/converter/voc_sbd2labelme.py +0 -0
  212. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/__init__.py +0 -0
  213. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/build_cython.py +0 -0
  214. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/build_pyarmor.py +0 -0
  215. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/cryptography_demo.py +0 -0
  216. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/fun_sum.py +0 -0
  217. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/main.py +0 -0
  218. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/model_des_enctypt.py +0 -0
  219. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/cython_build/model_enctypt.py +0 -0
  220. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/date_dataset.py +0 -0
  221. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/date_demo.py +0 -0
  222. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/datedataset_bk.py +0 -0
  223. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo1.py +0 -0
  224. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo2.py +0 -0
  225. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo4.py +0 -0
  226. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_async_await1.py +0 -0
  227. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_async_await2.py +0 -0
  228. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_coco_vis.py +0 -0
  229. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_copy_files.py +0 -0
  230. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_copy_files_for_voc.py +0 -0
  231. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_ffmpy.py +0 -0
  232. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_for_annular_to_rect.py +0 -0
  233. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_for_pair_file.py +0 -0
  234. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_for_polygon.py +0 -0
  235. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_for_trt.py +0 -0
  236. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_get_file_label.py +0 -0
  237. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_get_file_list.py +0 -0
  238. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_gif.py +0 -0
  239. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_image_crop.py +0 -0
  240. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_kpts.py +0 -0
  241. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_labelme.py +0 -0
  242. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_labelme_crop.py +0 -0
  243. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_lableme_vis.py +0 -0
  244. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_metrics.py +0 -0
  245. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_mosaic.py +0 -0
  246. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_mouse.py +0 -0
  247. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_nii.py +0 -0
  248. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_pandas.py +0 -0
  249. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_plot.py +0 -0
  250. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_prelabelme.py +0 -0
  251. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_rename.py +0 -0
  252. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_standard_image .py +0 -0
  253. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_standard_video .py +0 -0
  254. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_taichi.py +0 -0
  255. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_video.py +0 -0
  256. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_video_crop.py +0 -0
  257. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_voc_crop.py +0 -0
  258. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_voc_vis.py +0 -0
  259. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_word_similar.py +0 -0
  260. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_worker1.py +0 -0
  261. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/demo_worker2.py +0 -0
  262. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/detector/__init__.py +0 -0
  263. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/detector/demo.py +0 -0
  264. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/detector/detect_face_person.py +0 -0
  265. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/detector/predet_labelme.py +0 -0
  266. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/edit_distance/__init__.py +0 -0
  267. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/edit_distance/demo.py +0 -0
  268. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/edit_distance/text_matching.py +0 -0
  269. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/flask_demo/__init__.py +0 -0
  270. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/flask_demo/app.py +0 -0
  271. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/flask_demo/utils/__init__.py +0 -0
  272. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/flask_demo/utils/utils.py +0 -0
  273. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/get_file_list.py +0 -0
  274. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/gradio_app.py +0 -0
  275. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/gradio_app_v2.py +0 -0
  276. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/image_correction/__init__.py +0 -0
  277. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/image_correction/demo_correction_v1.py +0 -0
  278. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/image_correction/demo_correction_v2.py +0 -0
  279. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/image_correction/demo_correction_v3.py +0 -0
  280. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/kafka_worker.py +0 -0
  281. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/men_tracemalloc.py +0 -0
  282. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/milvus_demo/__init__.py +0 -0
  283. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/milvus_demo/demo01.py +0 -0
  284. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/milvus_demo/demo02.py +0 -0
  285. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/milvus_demo/hello_milvus.py +0 -0
  286. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/milvus_demo/milvus_client.py +0 -0
  287. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/performance.py +0 -0
  288. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/pose/__init__.py +0 -0
  289. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/pose/human_pose.py +0 -0
  290. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/redis_py/__init__.py +0 -0
  291. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/redis_py/knn_search.py +0 -0
  292. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/redis_py/redis_client.py +0 -0
  293. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/registry/__init__.py +0 -0
  294. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/registry/base.py +0 -0
  295. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/registry/component.py +0 -0
  296. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/registry/main.py +0 -0
  297. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/registry/register.py +0 -0
  298. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/single_class/GRU.py +0 -0
  299. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/single_class/TCN.py +0 -0
  300. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/single_class/__init__.py +0 -0
  301. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/single_class/demo.py +0 -0
  302. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/test_fr/__init__.py +0 -0
  303. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/test_fr/demo11.py +0 -0
  304. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/test_fr/idcardocr.py +0 -0
  305. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/web_socket/__init__.py +0 -0
  306. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/web_socket/asr_clients.py +0 -0
  307. {pybaseutils-2.3.5 → pybaseutils-2.3.6}/test_py/web_socket/chat_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybaseutils
3
- Version: 2.3.5
3
+ Version: 2.3.6
4
4
  Summary: pybaseutils
5
5
  Home-page: https://github.com/PanJinquan/base-utils
6
6
  Author: PanJinquan
@@ -8,4 +8,4 @@
8
8
  # --------------------------------------------------------
9
9
  """
10
10
 
11
- __version__ = '2.3.5'
11
+ __version__ = '2.3.6'
@@ -32,7 +32,7 @@ def load_pcm(filename):
32
32
 
33
33
  def float32toint16(data_f32):
34
34
  omin = -32768
35
- omax = 32767
35
+ omax = 32768
36
36
  imin = -1.0
37
37
  imax = 1.0
38
38
  # 将数据float32从[-1.0,1.0]映射到int16
@@ -43,7 +43,7 @@ def float32toint16(data_f32):
43
43
 
44
44
  def int16tofloat32(data_int16):
45
45
  imin = -32768
46
- imax = 32767
46
+ imax = 32768
47
47
  omin = -1.0
48
48
  omax = 1.0
49
49
  audio_data = np.array(data_int16, dtype=np.float32)
@@ -148,7 +148,7 @@ def save_pcm_from_numpy(audio_data: np.ndarray, pcm_file, data_type=np.int16):
148
148
  :return:
149
149
  """
150
150
  omin = -32768
151
- omax = 32767
151
+ omax = 32768
152
152
  imin = -1.0
153
153
  imax = 1.0
154
154
  # 将数据float32转换到int16
@@ -159,7 +159,7 @@ def save_pcm_from_numpy(audio_data: np.ndarray, pcm_file, data_type=np.int16):
159
159
  return bytes
160
160
 
161
161
 
162
- def librosa_load(audio_file, sr=None, mono=True):
162
+ def librosa_load(audio_file, sr=None, mono=True, dtype="float32"):
163
163
  """
164
164
  默认将多声道音频文件转换为单声道,并返回一维数组;
165
165
  如果你需要处理多声道音频文件,可以使用 mono=False,参数来保留所有声道,并返回二维数组。
@@ -168,47 +168,55 @@ def librosa_load(audio_file, sr=None, mono=True):
168
168
  :param mono: 设置为true是单通道,否则是双通道
169
169
  :return:
170
170
  """
171
- audio_data, sr = librosa.load(audio_file, sr=sr, mono=mono) # 非常耗时
171
+ # TODO 已经对齐soundfile_load的效果
172
+ audio_data, sr = librosa.load(audio_file, sr=sr, mono=mono) # 非常耗时,返回是float32的数据
173
+ if dtype == "int16": # 将 float32 [-1.0, 1.0] 转换为 int16,
174
+ audio_data = float32toint16(audio_data)
172
175
  return audio_data, sr
173
176
 
174
177
 
175
- def soundfile_load(audio_file, sr=None, mono=True):
178
+ def soundfile_load(audio_file, sr=None, mono=True, dtype="float32"):
176
179
  """
177
180
  默认会将多声道音频文件的每个声道分别存储在二维数组的不同列中,因此返回的是一个二维数组
181
+
178
182
  :param audio_file:
179
183
  :param sr: sampling rate 当设置的采样率与音频原始采样率不一致时,会进行重采样,导致非常耗时
180
184
  :param mono: 设置为true是单通道,否则是双通道
181
185
  :return:
182
186
  """
187
+ # TODO 默认情况下,soundfile会将数据归一化到 [-1.0, 1.0] 的浮点数范围内
188
+ # audio_data, orig_sr = sf.read(audio_file, samplerate=None, dtype="int16") # int16不支持重采样
183
189
  audio_data, orig_sr = sf.read(audio_file, samplerate=None, dtype="float32") # 不能直接修改samplerate
184
190
  if mono and audio_data.ndim == 2:
185
191
  audio_data = np.mean(audio_data, axis=-1)
186
192
  if sr is None or orig_sr == sr:
187
193
  sr = orig_sr
188
- else:
194
+ else: # TODO librosa.resample 要求输入是浮点数float32
189
195
  audio_data = librosa.resample(y=audio_data, orig_sr=orig_sr, target_sr=sr) # 使用librosa进行重采样至目标采样率
196
+ if dtype == "int16": # 将 float32 [-1.0, 1.0] 转换为 int16,
197
+ audio_data = float32toint16(audio_data)
190
198
  return audio_data, sr
191
199
 
192
200
 
193
201
  def wavfile_load(audio_file):
194
202
  sr, wav_data = wavfile.read(audio_file) # int16类型
195
- # 转为float64类型
196
- wav_data = wav_data / (32768)
197
- # wav_data:[-0.03305054 -0.03561401 -0.038114697]
198
203
  return wav_data, sr
199
204
 
200
205
 
201
- def read_audio(audio_file, sr=16000, mono=True):
206
+ def read_audio(audio_file, sr=16000, mono=True, dtype="float32", use_sf=True):
202
207
  """
203
208
  默认将多声道音频文件转换为单声道,并返回一维数组;
204
209
  如果你需要处理多声道音频文件,可以使用 mono=False,参数来保留所有声道,并返回二维数组。
205
210
  :param audio_file:
206
211
  :param sr: sampling rate
207
212
  :param mono: 设置为true是单通道,否则是双通道
213
+ :param dtype: 数据类型,int16, float32
208
214
  :return:
209
215
  """
210
- audio_data, sr = librosa_load(audio_file, sr=sr, mono=mono) # 巨慢
211
- # audio_data, sr = soundfile_load(audio_file, sr=sr, mono=mono) # 巨慢
216
+ if use_sf:
217
+ audio_data, sr = soundfile_load(audio_file, sr=sr, mono=mono, dtype=dtype) # 巨慢
218
+ else:
219
+ audio_data, sr = librosa_load(audio_file, sr=sr, mono=mono, dtype=dtype) # 巨慢
212
220
  return audio_data, sr
213
221
 
214
222
 
@@ -216,10 +224,11 @@ def save_audio(audio_file, audio_data, sr=16000):
216
224
  """
217
225
  save audio file
218
226
  :param audio_file:
219
- :param audio_data:
227
+ :param audio_data: float32
220
228
  :param sr: sampling rate
221
229
  :return:
222
230
  """
231
+ assert audio_data.dtype == np.float32, "input data must be float32"
223
232
  sf.write(audio_file, audio_data, samplerate=sr)
224
233
 
225
234
 
@@ -26,7 +26,7 @@ def str2dict(data: str):
26
26
  return None
27
27
 
28
28
 
29
- def dict_slice(data: Dict, slice=()):
29
+ def dict_slice(data: Dict, slice=[]):
30
30
  """
31
31
  字典像列表一样切片
32
32
  :param data:
@@ -136,16 +136,19 @@ def show_batch_image(title, batch_images, index=0):
136
136
  cv_show_image(title, image)
137
137
 
138
138
 
139
- def show_image_plt(title, image):
139
+ def show_image_plt(title, image, use_rgb=True):
140
140
  """
141
141
  use matplotlib to show image
142
142
  调用matplotlib显示RGB图片
143
143
  :param title: 图像标题
144
- :param image: 图像的数据
144
+ :param image: 图像的数据 BGR格式
145
+ :param use_rgb: True:输入image是RGB的图像, False:返输入image是BGR格式的图像
145
146
  :return:
146
147
  """
147
148
  # plt.figure("show_image")
148
149
  # print(image.dtype)
150
+ if image.shape[-1] == 3 and (not use_rgb):
151
+ image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 将BGR转为RGB
149
152
  channel = len(image.shape)
150
153
  if channel == 3:
151
154
  plt.imshow(image)
@@ -154,6 +157,7 @@ def show_image_plt(title, image):
154
157
  plt.axis('on') # 关掉坐标轴为 off
155
158
  plt.title(title) # 图像题目
156
159
  plt.show()
160
+ return image
157
161
 
158
162
 
159
163
  plot_image = show_image_plt
@@ -537,7 +541,7 @@ def requests_url(url, timeout=None):
537
541
  return stream
538
542
 
539
543
 
540
- def read_images_url(url: str, size=None, norm=False, use_rgb=False, timeout=5):
544
+ def read_image_url(url: str, size=None, norm=False, use_rgb=False, timeout=5):
541
545
  """
542
546
  根据url或者图片路径,读取图片
543
547
  :param url:
@@ -570,6 +574,16 @@ def read_images_url(url: str, size=None, norm=False, use_rgb=False, timeout=5):
570
574
  return image
571
575
 
572
576
 
577
+ def read_images_url(url: str or list, size=None, norm=False, use_rgb=False, timeout=5):
578
+ if isinstance(url, str): return read_image_url(url, size=size, norm=norm, use_rgb=use_rgb, timeout=timeout)
579
+ batch = []
580
+ for path in url:
581
+ image = read_image_url(path, size=size, norm=norm, use_rgb=use_rgb, timeout=timeout)
582
+ if image is None: print("no image:{}".format(path))
583
+ batch.append(image)
584
+ return batch
585
+
586
+
573
587
  def read_image_batch(image_list):
574
588
  """
575
589
  批量读取图片
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybaseutils
3
- Version: 2.3.5
3
+ Version: 2.3.6
4
4
  Summary: pybaseutils
5
5
  Home-page: https://github.com/PanJinquan/base-utils
6
6
  Author: PanJinquan
@@ -187,7 +187,9 @@ test_py/gradio_app.py
187
187
  test_py/gradio_app_v2.py
188
188
  test_py/kafka_worker.py
189
189
  test_py/men_tracemalloc.py
190
+ test_py/model_process.py
190
191
  test_py/performance.py
192
+ test_py/slowfastnet.py
191
193
  test_py/Image_enhance/__init__.py
192
194
  test_py/Image_enhance/dmeo01.py
193
195
  test_py/WebCrawler/__init__.py
@@ -98,11 +98,12 @@ if __name__ == '__main__':
98
98
  对labelme的数据目标进行裁剪,用于制作分类数据集
99
99
  """
100
100
  # 接地引线'
101
- names = ['保护屏标示牌', '显示屏', '通道切换开关', '信号复归按钮', '红色圆形标签,黄色圆形标签','地极端子','地极标签',
101
+ names = ['保护屏标示牌', '显示屏', '通道切换开关', '信号复归按钮', '红色圆形标签,黄色圆形标签', '地极端子',
102
+ '地极标签',
102
103
  '红色压板开关合上,红色压板开关断开,白色压板开关合上,白色压板开关断开', '重合闸把手停用,重合闸把手单重',
103
- '本体端子箱关闭,本体端子箱打开', '主变端子箱关闭,主变端子箱打开','分接开关箱关闭,分接开关箱打开',
104
- '主变压器标示牌','端子箱标示牌','油温表','绕组温度表','油位指示标示牌','本体阀门','呼吸器油杯',
105
- '沉降观察点标示牌','冷却器控制箱打开,冷却器控制箱关闭','冷却器','风扇','潜油泵','油流指示器','喷淋启动装置'
104
+ '本体端子箱关闭,本体端子箱打开', '主变端子箱关闭,主变端子箱打开', '分接开关箱关闭,分接开关箱打开',
105
+ '主变压器标示牌', '端子箱标示牌', '油温表', '绕组温度表', '油位指示标示牌', '本体阀门', '呼吸器油杯',
106
+ '沉降观察点标示牌', '冷却器控制箱打开,冷却器控制箱关闭', '冷却器', '风扇', '潜油泵', '油流指示器', '喷淋启动装置'
106
107
  ]
107
108
  target_name = ['身穿工作服', '未穿工作服',
108
109
  '绝缘鞋', '脚穿绝缘鞋', '长筒靴', '脚穿长筒靴', '其他鞋', '脚穿其他鞋',
@@ -118,13 +119,20 @@ if __name__ == '__main__':
118
119
  "红色圆形标签", "黄色圆形标签",
119
120
  "白色压板开关合上", "白色压板开关断开", "红色压板开关合上", "红色压板开关断开",
120
121
  "重合闸把手停用", "重合闸把手单重",
121
- '本体端子箱关闭','本体端子箱打开', '主变端子箱关闭','主变端子箱打开', '分接开关箱关闭','分接开关箱打开',
122
- '冷却器控制箱打开','冷却器控制箱关闭'
122
+ '本体端子箱关闭', '本体端子箱打开',
123
+ '主变端子箱关闭', '主变端子箱打开',
124
+ '分接开关箱关闭', '分接开关箱打开',
125
+ '冷却器控制箱打开', '冷却器控制箱关闭',
126
+ '万用表线头', '万用表红色线头', '万用表黑色线头'
123
127
  ]
124
128
  # 还差核相的数据
125
129
  datasets = [
126
130
  # TODO 训练集
127
- '/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/02-东莞-220KV主变压器日常巡视/dataset-v02/images',
131
+ '/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/02-东莞-220KV主变压器日常巡视/dataset-test01/images',
132
+ '/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/02-东莞-220KV主变压器日常巡视/dataset-test02/images',
133
+ '/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/01-东莞-投退重合闸操作/dataset-test01/images',
134
+ '/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/01-东莞-投退重合闸操作/dataset-test02/images',
135
+
128
136
  ]
129
137
  # dataroot = '/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det'
130
138
  # datasets = get_sub_dataset(dataroot)
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ # --------------------------------------------------------
4
+ # @Author : Pan
5
+ # @E-mail :
6
+ # @Date : 2025-07-08 14:10:15
7
+ # @Brief :
8
+ # --------------------------------------------------------
9
+ """
10
+ import cv2
11
+ import numpy as np
12
+ from pybaseutils import file_utils, image_utils
13
+
14
+ import cv2
15
+
16
+ # 打开默认摄像头(0表示第一个摄像头)
17
+ rtsp_url = "rtsp://username:password@192.168.1.64:554/stream1"
18
+ # cap = cv2.VideoCapture("192.168.2.52livestream")
19
+ # cap = cv2.VideoCapture("rtsp://0.0.0.0:8554/")
20
+ # cap = cv2.VideoCapture("rtsp://192.168.2.52:8554/")
21
+ cap = cv2.VideoCapture("rtsp://admin:dm-ai12345@192.168.2.222")
22
+
23
+ # 检查摄像头是否成功打开
24
+ if not cap.isOpened():
25
+ print("无法打开摄像头")
26
+ exit()
27
+
28
+ print("按 'q' 键退出")
29
+
30
+ while True:
31
+ # 读取一帧
32
+ ret, frame = cap.read()
33
+
34
+ # 如果读取成功,ret为True
35
+ if not ret:
36
+ print("无法读取帧")
37
+ break
38
+
39
+ # 显示帧
40
+ cv2.imshow('Camera', frame)
41
+
42
+ # 按'q'键退出
43
+ if cv2.waitKey(1) & 0xFF == ord('q'):
44
+ break
45
+
46
+ # 释放资源
47
+ cap.release()
48
+ cv2.destroyAllWindows()
@@ -38,8 +38,8 @@ def android_gif():
38
38
 
39
39
 
40
40
  def python_gif():
41
- video_file = "/home/PKing/nasdata/Project/3D/Car-Distance-Speed-Estimation/data/output/video0_004.mp4"
42
- video_utils.video2gif(video_file, interval=6, func=resize_fun, fps=4, end=6, use_pil=True, vis=True)
41
+ video_file = "/home/PKing/nasdata/Project/3D/Car-Distance-Speed-Estimation/data/output/video1_003.mp4"
42
+ video_utils.video2gif(video_file, interval=6, func=resize_fun, fps=4,start=3,end=10, use_pil=True, vis=True)
43
43
 
44
44
 
45
45
  def image_gif():
@@ -0,0 +1,30 @@
1
+ # -*- coding:utf-8 -*-
2
+ """
3
+ 提供模型相关方法
4
+ """
5
+ import logging
6
+ import threading
7
+ import time
8
+ import asyncio
9
+ from pybaseutils import json_utils
10
+
11
+
12
+ class EvaluationMethod():
13
+ """
14
+ Evaluation核心实现方法类
15
+ """
16
+
17
+ def __init__(self):
18
+ self.msg = "ok"
19
+
20
+ async def calligraphy_hard_evaluation(self, params):
21
+ results = {"result": params, "msg": self.msg}
22
+ return results
23
+
24
+
25
+ if __name__ == '__main__':
26
+ w = EvaluationMethod()
27
+ params = {"data": []}
28
+ # 使用 asyncio.run() 来运行异步方法
29
+ result = asyncio.run(w.calligraphy_hard_evaluation(params))
30
+ print(result)
@@ -0,0 +1,217 @@
1
+ import torch
2
+ import torch.nn as nn
3
+ import torch.nn.functional as F
4
+ from torch.autograd import Variable
5
+
6
+ __all__ = ['resnet50', 'resnet101','resnet152', 'resnet200']
7
+
8
+
9
+
10
+ class Bottleneck(nn.Module):
11
+ expansion = 4
12
+
13
+ def __init__(self, inplanes, planes, stride=1, downsample=None, head_conv=1):
14
+ super(Bottleneck, self).__init__()
15
+ if head_conv == 1:
16
+ self.conv1 = nn.Conv3d(inplanes, planes, kernel_size=1, bias=False)
17
+ self.bn1 = nn.BatchNorm3d(planes)
18
+ elif head_conv == 3:
19
+ self.conv1 = nn.Conv3d(inplanes, planes, kernel_size=(3, 1, 1), bias=False, padding=(1, 0, 0))
20
+ self.bn1 = nn.BatchNorm3d(planes)
21
+ else:
22
+ raise ValueError("Unsupported head_conv!")
23
+ self.conv2 = nn.Conv3d(
24
+ planes, planes, kernel_size=(1, 3, 3), stride=(1,stride,stride), padding=(0, 1, 1), bias=False)
25
+ self.bn2 = nn.BatchNorm3d(planes)
26
+ self.conv3 = nn.Conv3d(planes, planes * 4, kernel_size=1, bias=False)
27
+ self.bn3 = nn.BatchNorm3d(planes * 4)
28
+ self.relu = nn.ReLU(inplace=True)
29
+ self.downsample = downsample
30
+ self.stride = stride
31
+
32
+ def forward(self, x):
33
+ residual = x
34
+
35
+ out = self.conv1(x)
36
+ out = self.bn1(out)
37
+ out = self.relu(out)
38
+
39
+ out = self.conv2(out)
40
+ out = self.bn2(out)
41
+ out = self.relu(out)
42
+
43
+ out = self.conv3(out)
44
+ out = self.bn3(out)
45
+
46
+ if self.downsample is not None:
47
+ residual = self.downsample(x)
48
+ out += residual
49
+ out = self.relu(out)
50
+
51
+ return out
52
+
53
+
54
+ class SlowFast(nn.Module):
55
+ def __init__(self, block=Bottleneck, layers=[3, 4, 6, 3], class_num=10, dropout=0.5 ):
56
+ super(SlowFast, self).__init__()
57
+
58
+ self.fast_inplanes = 8
59
+ self.fast_conv1 = nn.Conv3d(3, 8, kernel_size=(5, 7, 7), stride=(1, 2, 2), padding=(2, 3, 3), bias=False)
60
+ self.fast_bn1 = nn.BatchNorm3d(8)
61
+ self.fast_relu = nn.ReLU(inplace=True)
62
+ self.fast_maxpool = nn.MaxPool3d(kernel_size=(1, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1))
63
+ self.fast_res2 = self._make_layer_fast(block, 8, layers[0], head_conv=3)
64
+ self.fast_res3 = self._make_layer_fast(
65
+ block, 16, layers[1], stride=2, head_conv=3)
66
+ self.fast_res4 = self._make_layer_fast(
67
+ block, 32, layers[2], stride=2, head_conv=3)
68
+ self.fast_res5 = self._make_layer_fast(
69
+ block, 64, layers[3], stride=2, head_conv=3)
70
+
71
+ self.lateral_p1 = nn.Conv3d(8, 8*2, kernel_size=(5, 1, 1), stride=(8, 1 ,1), bias=False, padding=(2, 0, 0))
72
+ self.lateral_res2 = nn.Conv3d(32,32*2, kernel_size=(5, 1, 1), stride=(8, 1 ,1), bias=False, padding=(2, 0, 0))
73
+ self.lateral_res3 = nn.Conv3d(64,64*2, kernel_size=(5, 1, 1), stride=(8, 1 ,1), bias=False, padding=(2, 0, 0))
74
+ self.lateral_res4 = nn.Conv3d(128,128*2, kernel_size=(5, 1, 1), stride=(8, 1 ,1), bias=False, padding=(2, 0, 0))
75
+
76
+ self.slow_inplanes = 64+64//8*2
77
+ self.slow_conv1 = nn.Conv3d(3, 64, kernel_size=(1, 7, 7), stride=(1, 2, 2), padding=(0, 3, 3), bias=False)
78
+ self.slow_bn1 = nn.BatchNorm3d(64)
79
+ self.slow_relu = nn.ReLU(inplace=True)
80
+ self.slow_maxpool = nn.MaxPool3d(kernel_size=(1, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1))
81
+ self.slow_res2 = self._make_layer_slow(block, 64, layers[0], head_conv=1)
82
+ self.slow_res3 = self._make_layer_slow(
83
+ block, 128, layers[1], stride=2, head_conv=1)
84
+ self.slow_res4 = self._make_layer_slow(
85
+ block, 256, layers[2], stride=2, head_conv=3)
86
+ self.slow_res5 = self._make_layer_slow(
87
+ block, 512, layers[3], stride=2, head_conv=3)
88
+ self.dp = nn.Dropout(dropout)
89
+ self.fc = nn.Linear(self.fast_inplanes+2048, class_num, bias=False)
90
+ def forward(self, input):
91
+ fast, lateral = self.FastPath(input[:, :, ::2, :, :])
92
+ slow = self.SlowPath(input[:, :, ::16, :, :], lateral)
93
+ x = torch.cat([slow, fast], dim=1)
94
+ x = self.dp(x)
95
+ x = self.fc(x)
96
+ return x
97
+
98
+
99
+
100
+ def SlowPath(self, input, lateral):
101
+ x = self.slow_conv1(input)
102
+ x = self.slow_bn1(x)
103
+ x = self.slow_relu(x)
104
+ x = self.slow_maxpool(x)
105
+ x = torch.cat([x, lateral[0]],dim=1)
106
+ x = self.slow_res2(x)
107
+ x = torch.cat([x, lateral[1]],dim=1)
108
+ x = self.slow_res3(x)
109
+ x = torch.cat([x, lateral[2]],dim=1)
110
+ x = self.slow_res4(x)
111
+ x = torch.cat([x, lateral[3]],dim=1)
112
+ x = self.slow_res5(x)
113
+ x = nn.AdaptiveAvgPool3d(1)(x)
114
+ x = x.view(-1, x.size(1))
115
+ return x
116
+
117
+ def FastPath(self, input):
118
+ lateral = []
119
+ x = self.fast_conv1(input)
120
+ x = self.fast_bn1(x)
121
+ x = self.fast_relu(x)
122
+ pool1 = self.fast_maxpool(x)
123
+ lateral_p = self.lateral_p1(pool1)
124
+ lateral.append(lateral_p)
125
+
126
+ res2 = self.fast_res2(pool1)
127
+ lateral_res2 = self.lateral_res2(res2)
128
+ lateral.append(lateral_res2)
129
+
130
+ res3 = self.fast_res3(res2)
131
+ lateral_res3 = self.lateral_res3(res3)
132
+ lateral.append(lateral_res3)
133
+
134
+ res4 = self.fast_res4(res3)
135
+ lateral_res4 = self.lateral_res4(res4)
136
+ lateral.append(lateral_res4)
137
+
138
+ res5 = self.fast_res5(res4)
139
+ x = nn.AdaptiveAvgPool3d(1)(res5)
140
+ x = x.view(-1, x.size(1))
141
+
142
+ return x, lateral
143
+
144
+ def _make_layer_fast(self, block, planes, blocks, stride=1, head_conv=1):
145
+ downsample = None
146
+ if stride != 1 or self.fast_inplanes != planes * block.expansion:
147
+ downsample = nn.Sequential(
148
+ nn.Conv3d(
149
+ self.fast_inplanes,
150
+ planes * block.expansion,
151
+ kernel_size=1,
152
+ stride=(1,stride,stride),
153
+ bias=False), nn.BatchNorm3d(planes * block.expansion))
154
+
155
+ layers = []
156
+ layers.append(block(self.fast_inplanes, planes, stride, downsample, head_conv=head_conv))
157
+ self.fast_inplanes = planes * block.expansion
158
+ for i in range(1, blocks):
159
+ layers.append(block(self.fast_inplanes, planes, head_conv=head_conv))
160
+ return nn.Sequential(*layers)
161
+
162
+ def _make_layer_slow(self, block, planes, blocks, stride=1, head_conv=1):
163
+ downsample = None
164
+ if stride != 1 or self.slow_inplanes != planes * block.expansion:
165
+ downsample = nn.Sequential(
166
+ nn.Conv3d(
167
+ self.slow_inplanes,
168
+ planes * block.expansion,
169
+ kernel_size=1,
170
+ stride=(1,stride,stride),
171
+ bias=False), nn.BatchNorm3d(planes * block.expansion))
172
+
173
+ layers = []
174
+ layers.append(block(self.slow_inplanes, planes, stride, downsample, head_conv=head_conv))
175
+ self.slow_inplanes = planes * block.expansion
176
+ for i in range(1, blocks):
177
+ layers.append(block(self.slow_inplanes, planes, head_conv=head_conv))
178
+
179
+ self.slow_inplanes = planes * block.expansion + planes * block.expansion//8*2
180
+ return nn.Sequential(*layers)
181
+
182
+
183
+
184
+
185
+ def resnet50(**kwargs):
186
+ """Constructs a ResNet-50 model.
187
+ """
188
+ model = SlowFast(Bottleneck, [3, 4, 6, 3], **kwargs)
189
+ return model
190
+
191
+
192
+ def resnet101(**kwargs):
193
+ """Constructs a ResNet-101 model.
194
+ """
195
+ model = SlowFast(Bottleneck, [3, 4, 23, 3], **kwargs)
196
+ return model
197
+
198
+
199
+ def resnet152(**kwargs):
200
+ """Constructs a ResNet-101 model.
201
+ """
202
+ model = SlowFast(Bottleneck, [3, 8, 36, 3], **kwargs)
203
+ return model
204
+
205
+
206
+ def resnet200(**kwargs):
207
+ """Constructs a ResNet-101 model.
208
+ """
209
+ model = SlowFast(Bottleneck, [3, 24, 36, 3], **kwargs)
210
+ return model
211
+
212
+ if __name__ == "__main__":
213
+ num_classes = 101
214
+ input_tensor = torch.autograd.Variable(torch.rand(1, 3, 64, 224, 224))
215
+ model = resnet50(class_num=num_classes)
216
+ output = model(input_tensor)
217
+ print(output.size())
@@ -64,7 +64,7 @@ class MainSocketHandler(tornado.websocket.WebSocketHandler):
64
64
 
65
65
  def on_message(self, data):
66
66
  self.time = time.time() # 更新最后活跃时间
67
- print(f"收到来自{self.cid}的消息")
67
+ print(f"收到来自{self.cid}的消息,data={data[:10]}")
68
68
  # 使用FunASR进行流式识别
69
69
  result = model.generate(input=data, cache=cache, is_final=False, chunk_size=chunk_size,
70
70
  encoder_chunk_look_back=encoder_chunk_look_back,
@@ -1,41 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- # --------------------------------------------------------
4
- # @Author : Pan
5
- # @E-mail :
6
- # @Date : 2025-07-08 14:10:15
7
- # @Brief :
8
- # --------------------------------------------------------
9
- """
10
- import cv2
11
- import numpy as np
12
- from pybaseutils import file_utils, image_utils
13
-
14
- import os
15
- from pybaseutils.dataloader import parser_coco_kps
16
-
17
- import os
18
- from pybaseutils.dataloader import parser_voc
19
-
20
- if __name__ == "__main__":
21
- # 修改为自己数据集的路径
22
- data_root = "/home/PKing/nasdata/tmp/tmp/pen/笔尖指尖标注方法"
23
- class_name = []
24
- dataset = parser_voc.VOCDataset(filename=None,
25
- data_root=data_root,
26
- anno_dir=None,
27
- image_dir=None,
28
- class_name=class_name,
29
- transform=None,
30
- use_rgb=False,
31
- check=False,
32
- shuffle=False)
33
- print("have num:{}".format(len(dataset)))
34
- class_name = dataset.class_name
35
- for i in range(len(dataset)):
36
- data = dataset.__getitem__(i)
37
- image, targets, image_id = data["image"], data["target"], data["image_id"]
38
- print(image_id)
39
- bboxes, labels = targets[:, 0:4], targets[:, 4:5]
40
- parser_voc.show_target_image(image, bboxes, labels, normal=False, transpose=False,
41
- class_name=class_name, use_rgb=False, thickness=3, fontScale=1.2)
File without changes
File without changes