pybaseutils 2.2.1__tar.gz → 2.2.2__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.
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/PKG-INFO +1 -1
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/__init__.py +1 -1
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_labelme.py +16 -13
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_voc.py +13 -3
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_yolo.py +7 -10
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/heatmap_utils.py +48 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/transforms/augment_utils.py +48 -2
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils.egg-info/PKG-INFO +1 -1
- pybaseutils-2.2.2/test_py/demo2.py +37 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_lableme_vis.py +2 -1
- pybaseutils-2.2.1/test_py/demo2.py +0 -23
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/LICENCE +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/README.md +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/audio/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/audio/audio_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/audio/pyaudio_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/audio/vad_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/base64_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/batch_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/build_utils/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/build_utils/cython_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cluster/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cluster/kmean.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cluster/maxmin_distance.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cluster/similarity.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/color_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/config_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/build_coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/build_cvat.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/build_labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/build_voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/concat_coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_coco2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_coco2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_labelme2coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_labelme2cvat.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_labelme2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_labelme2yolo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_voc2coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_voc2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_voc2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_voc2yolo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/converter/convert_yolo2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/coords_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cvutils/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cvutils/corner_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cvutils/monitor.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cvutils/mouse_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cvutils/nms_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/cvutils/video_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/balanced_classes.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/base_coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/base_dataset.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/data_resample.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_coco_det.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_coco_ins.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_coco_kps.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_image_folder.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/parser_image_text.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/file_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/QueueTable.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/kalman_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/mean_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/motion_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/filter/pose_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/font_style/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/font_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/geometry_tools.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/image_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/json_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/log.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/log_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/logger.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/metrics/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/metrics/accuracy.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/metrics/average_meter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/metrics/class_report.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/metrics/plot_pr.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/metrics/plot_roc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/numpy_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pandas_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/plot_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pose/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pose/bones_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pose/human_pose.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pose/pose_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pycpp/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pycpp/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/pycpp/main.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/server/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/server/apm_server.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/setup_config.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/singleton_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/text_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/thread_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/time_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracemalloc_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracemalloc_utils2.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/QueueTable.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/kalman_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/mean_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/motion_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/tracking/pose_filter.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/transforms/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/transforms/affine_transform.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/transforms/face_alignment.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/transforms/transform_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/word_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/worker.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils/yaml_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils.egg-info/SOURCES.txt +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils.egg-info/dependency_links.txt +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils.egg-info/not-zip-safe +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/pybaseutils.egg-info/top_level.txt +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/setup.cfg +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/setup.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/Image_enhance/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/Image_enhance/dmeo01.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/WebCrawler/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/WebCrawler/search_image.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/WebCrawler/search_image_for_baidu.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/action_dataset.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/build_cython.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/build_pyarmor.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/build_service.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/convert_labelme2coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/convert_labelme2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/copy_move.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/demo_labelme_crop.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/demo_video_aije.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/demo_voc_crop.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/demo_voc_vis.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/get_pair_data.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/aije/video_convertor.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/main.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/main_read.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/segment.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/audio/speechbrain_demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/captcha/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/captcha/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/class_attribute.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/class_names.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/AffectNet.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/AsianMovie.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/BITVehicle2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/BSTLD2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/CCPD.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/CCPD2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/FL3D_dataset.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/FreiHAND2coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/MTFL2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/TT100K.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/WaterMeters1.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/WaterMeters2.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/concat_coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_coco2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_gesture2hand.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_labelme2coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_labelme2cvat.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_labelme2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/convert_voc2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/fatigue_driving.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/fdd_dataset.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/get_pair_data.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/handpose2coco.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/insects_for_aichallenger.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/tt100k_utils.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/ua_detrac2voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/ucf101_dataset.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/converter/voc_sbd2labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/build_cython.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/build_pyarmor.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/cryptography_demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/fun_sum.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/main.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/model_des_enctypt.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/cython_build/model_enctypt.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo1.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo3.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_async_await1.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_async_await2.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_coco_vis.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_copy_files.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_copy_files_for_voc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_ffmpy.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_for_pair_file.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_for_polygon.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_for_trt.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_get_file_label.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_get_file_list.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_gif.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_gif_video.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_image_crop.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_kpts.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_labelme_crop.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_metrics.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_mouse.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_nii.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_pandas.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_plot.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_rename.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_standard_image .py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_standard_video .py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_taichi.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_video.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_video_crop.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_voc_crop.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_voc_vis.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_word_similar.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_worker1.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/demo_worker2.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/detector/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/detector/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/detector/detect_face_person.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/detector/predet_labelme.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/edit_distance/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/edit_distance/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/edit_distance/text_matching.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/flask_demo/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/flask_demo/func.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/flask_demo/server.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/get_file_list.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/image_correction/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/image_correction/demo_correction_v1.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/image_correction/demo_correction_v2.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/image_correction/demo_correction_v3.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/kafka_worker.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/men_tracemalloc.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/milvus_demo/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/milvus_demo/demo01.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/milvus_demo/demo02.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/milvus_demo/hello_milvus.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/milvus_demo/milvus_client.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/performance.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/pose/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/pose/human_pose.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/redis_py/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/redis_py/knn_search.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/redis_py/redis_client.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/registry/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/registry/base.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/registry/component.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/registry/main.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/registry/register.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/single_class/GRU.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/single_class/TCN.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/single_class/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/single_class/demo.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/test_fr/__init__.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/test_fr/demo11.py +0 -0
- {pybaseutils-2.2.1 → pybaseutils-2.2.2}/test_py/test_fr/idcardocr.py +0 -0
|
@@ -115,9 +115,9 @@ class LabelMeDataset(Dataset):
|
|
|
115
115
|
if not os.path.exists(image_file):
|
|
116
116
|
continue
|
|
117
117
|
annotation, width, height = self.load_annotations(anno_file)
|
|
118
|
-
box, label, point, group = self.parser_annotation(annotation, self.class_dict,
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
box, label, point, group, names = self.parser_annotation(annotation, self.class_dict,
|
|
119
|
+
min_points=self.min_points,
|
|
120
|
+
unique=self.unique)
|
|
121
121
|
if len(label) == 0:
|
|
122
122
|
continue
|
|
123
123
|
dst_ids.append(image_id)
|
|
@@ -171,9 +171,9 @@ class LabelMeDataset(Dataset):
|
|
|
171
171
|
annotation, width, height = self.load_annotations(anno_file)
|
|
172
172
|
image = self.read_image(image_file, use_rgb=self.use_rgb)
|
|
173
173
|
shape = image.shape
|
|
174
|
-
boxes, labels, points, groups = self.parser_annotation(annotation, self.class_dict, shape,
|
|
175
|
-
|
|
176
|
-
data = {"image": image, "points": points, "boxes": boxes, "labels": labels, "groups": groups,
|
|
174
|
+
boxes, labels, points, groups, names = self.parser_annotation(annotation, self.class_dict, shape,
|
|
175
|
+
min_points=self.min_points, unique=self.unique)
|
|
176
|
+
data = {"image": image, "points": points, "boxes": boxes, "labels": labels, "groups": groups, "names": names,
|
|
177
177
|
"image_file": image_file, "anno_file": anno_file, "size": [shape[1], shape[0]]}
|
|
178
178
|
return data
|
|
179
179
|
|
|
@@ -186,14 +186,16 @@ class LabelMeDataset(Dataset):
|
|
|
186
186
|
:param min_points: 当标注的轮廓点的个数小于等于min_points,会被剔除;负数不剔除
|
|
187
187
|
:return:
|
|
188
188
|
"""
|
|
189
|
-
bboxes, labels, points, groups = [], [], [], []
|
|
189
|
+
bboxes, labels, points, groups, names = [], [], [], [], []
|
|
190
190
|
for anno in annotation:
|
|
191
|
-
|
|
191
|
+
name = "unique" if unique else anno["label"]
|
|
192
|
+
label = name
|
|
192
193
|
if class_dict:
|
|
193
|
-
if not
|
|
194
|
+
if not name in class_dict:
|
|
194
195
|
continue
|
|
195
196
|
if isinstance(class_dict, dict):
|
|
196
|
-
label = class_dict[
|
|
197
|
+
label = class_dict[name]
|
|
198
|
+
if isinstance(label, str): name = label
|
|
197
199
|
pts = np.asarray(anno["points"], dtype=np.int32)
|
|
198
200
|
if min_points > 0 and len(pts) <= min_points:
|
|
199
201
|
continue
|
|
@@ -204,11 +206,12 @@ class LabelMeDataset(Dataset):
|
|
|
204
206
|
pts[:, 0] = np.clip(pts[:, 0], 0, w - 1)
|
|
205
207
|
pts[:, 1] = np.clip(pts[:, 1], 0, h - 1)
|
|
206
208
|
box = image_utils.polygons2boxes([pts])[0]
|
|
209
|
+
names.append(name)
|
|
207
210
|
labels.append(label)
|
|
208
211
|
bboxes.append(box)
|
|
209
212
|
points.append(pts)
|
|
210
213
|
groups.append(group_id)
|
|
211
|
-
return bboxes, labels, points, groups
|
|
214
|
+
return bboxes, labels, points, groups, names
|
|
212
215
|
|
|
213
216
|
def index2id(self, index):
|
|
214
217
|
"""
|
|
@@ -380,8 +383,8 @@ def parser_labelme(anno_file, class_dict={}, shape=None):
|
|
|
380
383
|
:return:
|
|
381
384
|
"""
|
|
382
385
|
annotation, width, height = LabelMeDataset.load_annotations(anno_file)
|
|
383
|
-
bboxes, labels, points, groups = LabelMeDataset.parser_annotation(annotation, class_dict, shape)
|
|
384
|
-
return bboxes, labels, points, groups
|
|
386
|
+
bboxes, labels, points, groups, names = LabelMeDataset.parser_annotation(annotation, class_dict, shape)
|
|
387
|
+
return bboxes, labels, points, groups, names
|
|
385
388
|
|
|
386
389
|
|
|
387
390
|
def show_target_image(image, bboxes, labels, points, color=(), thickness=1):
|
|
@@ -50,6 +50,7 @@ class VOCDataset(Dataset):
|
|
|
50
50
|
self.class_name, self.class_dict = self.parser_classes(class_name)
|
|
51
51
|
parser = self.parser_paths(filename, data_root, anno_dir, image_dir)
|
|
52
52
|
self.data_root, self.anno_dir, self.image_dir, self.image_ids = parser
|
|
53
|
+
self.image_ids = self.add_image_postfix(self.image_dir, self.image_ids)
|
|
53
54
|
self.seg_dir = seg_dir
|
|
54
55
|
if check or (self.class_dict is None):
|
|
55
56
|
self.image_ids = self.checking(self.image_ids, class_dict=self.class_dict)
|
|
@@ -70,12 +71,23 @@ class VOCDataset(Dataset):
|
|
|
70
71
|
print("Dataset num_classes :{}".format(self.num_classes))
|
|
71
72
|
print("------" * 10)
|
|
72
73
|
|
|
74
|
+
def add_image_postfix(self, image_dir, image_ids):
|
|
75
|
+
"""
|
|
76
|
+
获得图像文件后缀名
|
|
77
|
+
:param image_dir:
|
|
78
|
+
:return:
|
|
79
|
+
"""
|
|
80
|
+
if "." not in image_ids[0]:
|
|
81
|
+
image_list = glob.glob(os.path.join(image_dir, "*"))
|
|
82
|
+
postfix = os.path.basename(image_list[0]).split(".")[1]
|
|
83
|
+
image_ids = [f"{image_id}.{postfix}" for image_id in image_ids]
|
|
84
|
+
return image_ids
|
|
85
|
+
|
|
73
86
|
def __get_image_anno_file(self, image_dir, anno_dir, image_name: str):
|
|
74
87
|
"""
|
|
75
88
|
:param image_dir:
|
|
76
89
|
:param anno_dir:
|
|
77
90
|
:param image_name:
|
|
78
|
-
:param img_postfix:
|
|
79
91
|
:return:
|
|
80
92
|
"""
|
|
81
93
|
img_postfix = image_name.split(".")[-1]
|
|
@@ -92,8 +104,6 @@ class VOCDataset(Dataset):
|
|
|
92
104
|
"""
|
|
93
105
|
print("Please wait, it's in checking")
|
|
94
106
|
dst_ids = []
|
|
95
|
-
# image_ids = image_ids[:100]
|
|
96
|
-
# image_ids = image_ids[100:]
|
|
97
107
|
class_set = []
|
|
98
108
|
for image_id in tqdm(image_ids):
|
|
99
109
|
image_file, annotation_file = self.get_image_anno_file(image_id)
|
|
@@ -68,7 +68,7 @@ class YOLODataset(Dataset):
|
|
|
68
68
|
self.class_name, self.class_dict = self.parser_classes(class_name)
|
|
69
69
|
parser = self.parser_paths(filename, data_root, anno_dir, image_dir)
|
|
70
70
|
self.data_root, self.anno_dir, self.image_dir, self.image_ids = parser
|
|
71
|
-
self.
|
|
71
|
+
self.image_ids = self.add_image_postfix(self.image_dir, self.image_ids)
|
|
72
72
|
self.classes = list(self.class_dict.values()) if self.class_dict else None
|
|
73
73
|
self.num_classes = max(list(self.class_dict.values())) + 1 if self.class_dict else None
|
|
74
74
|
self.class_weights = None
|
|
@@ -114,18 +114,17 @@ class YOLODataset(Dataset):
|
|
|
114
114
|
class_dict = None
|
|
115
115
|
return class_name, class_dict
|
|
116
116
|
|
|
117
|
-
def
|
|
117
|
+
def add_image_postfix(self, image_dir, image_ids):
|
|
118
118
|
"""
|
|
119
119
|
获得图像文件后缀名
|
|
120
120
|
:param image_dir:
|
|
121
121
|
:return:
|
|
122
122
|
"""
|
|
123
|
-
if "." in
|
|
124
|
-
postfix = ""
|
|
125
|
-
else:
|
|
123
|
+
if "." not in image_ids[0]:
|
|
126
124
|
image_list = glob.glob(os.path.join(image_dir, "*"))
|
|
127
125
|
postfix = os.path.basename(image_list[0]).split(".")[1]
|
|
128
|
-
|
|
126
|
+
image_ids = [f"{image_id}.{postfix}" for image_id in image_ids]
|
|
127
|
+
return image_ids
|
|
129
128
|
|
|
130
129
|
def get_image_anno_file(self, index):
|
|
131
130
|
"""
|
|
@@ -135,16 +134,14 @@ class YOLODataset(Dataset):
|
|
|
135
134
|
image_id = self.index2id(index)
|
|
136
135
|
image_file, annotation_file, image_id = self.__get_image_anno_file(self.image_dir,
|
|
137
136
|
self.anno_dir,
|
|
138
|
-
image_id
|
|
139
|
-
self.postfix)
|
|
137
|
+
image_id)
|
|
140
138
|
return image_file, annotation_file, image_id
|
|
141
139
|
|
|
142
|
-
def __get_image_anno_file(self, image_dir, anno_dir, image_name: str
|
|
140
|
+
def __get_image_anno_file(self, image_dir, anno_dir, image_name: str):
|
|
143
141
|
"""
|
|
144
142
|
:param image_dir:
|
|
145
143
|
:param anno_dir:
|
|
146
144
|
:param image_id:
|
|
147
|
-
:param img_postfix:
|
|
148
145
|
:return:
|
|
149
146
|
"""
|
|
150
147
|
img_postfix = image_name.split(".")[-1]
|
|
@@ -9,6 +9,54 @@ import numpy as np
|
|
|
9
9
|
import numpy.matlib
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
def generate_heatmap(joints, input_size, heatmap_size, sigma=2):
|
|
13
|
+
"""
|
|
14
|
+
:param joints: [num_joints, 3]
|
|
15
|
+
:param joints_vis: [num_joints, 3]
|
|
16
|
+
:return: target, target_weight(1: visible, 0: invisible)
|
|
17
|
+
"""
|
|
18
|
+
num_joints = int(len(joints))
|
|
19
|
+
target_weight = np.ones((num_joints), dtype=np.float32)
|
|
20
|
+
target_heatmap = []
|
|
21
|
+
tmp_size = sigma * 3
|
|
22
|
+
for joint_id in range(num_joints):
|
|
23
|
+
target = np.zeros((heatmap_size[1], heatmap_size[0]), dtype=np.float32)
|
|
24
|
+
y_r = input_size[1] / heatmap_size[1]
|
|
25
|
+
x_r = input_size[0] / heatmap_size[0]
|
|
26
|
+
# feat_stride = image_size / self.heatmap_size
|
|
27
|
+
mu_x = int(joints[joint_id][0] / x_r + 0.5) # y
|
|
28
|
+
mu_y = int(joints[joint_id][1] / y_r + 0.5) # x
|
|
29
|
+
x, y = joints[joint_id][0], joints[joint_id][1]
|
|
30
|
+
# Check that any part of the gaussian is in-bounds
|
|
31
|
+
ul = [int(mu_x - tmp_size), int(mu_y - tmp_size)]
|
|
32
|
+
br = [int(mu_x + tmp_size + 1), int(mu_y + tmp_size + 1)]
|
|
33
|
+
if ul[0] >= heatmap_size[0] or ul[1] >= heatmap_size[1] or br[0] < 0 or br[1] < 0:
|
|
34
|
+
target_weight[joint_id] = 0
|
|
35
|
+
elif x < 0 or x > input_size[0] or y < 0 or y > input_size[1]:
|
|
36
|
+
target_weight[joint_id] = 0
|
|
37
|
+
else:
|
|
38
|
+
target_weight[joint_id] = 1.0
|
|
39
|
+
# # Generate gaussian
|
|
40
|
+
size = 2 * tmp_size + 1
|
|
41
|
+
x = np.arange(0, size, 1, np.float32)
|
|
42
|
+
y = x[:, np.newaxis]
|
|
43
|
+
x0 = y0 = size // 2
|
|
44
|
+
# The gaussian is not normalized, we want the center value to equal 1
|
|
45
|
+
g = np.exp(- ((x - x0) ** 2 + (y - y0) ** 2) / (2 * sigma ** 2))
|
|
46
|
+
# Usable gaussian range
|
|
47
|
+
g_x = max(0, -ul[0]), min(br[0], heatmap_size[0]) - ul[0]
|
|
48
|
+
g_y = max(0, -ul[1]), min(br[1], heatmap_size[1]) - ul[1]
|
|
49
|
+
# Image range
|
|
50
|
+
img_x = max(0, ul[0]), min(br[0], heatmap_size[0])
|
|
51
|
+
img_y = max(0, ul[1]), min(br[1], heatmap_size[1])
|
|
52
|
+
target[img_y[0]:img_y[1], img_x[0]:img_x[1]] = np.maximum(
|
|
53
|
+
target[img_y[0]:img_y[1], img_x[0]:img_x[1]],
|
|
54
|
+
g[g_y[0]:g_y[1], g_x[0]:g_x[1]])
|
|
55
|
+
target_heatmap.append(target)
|
|
56
|
+
target_heatmap = np.asarray(target_heatmap)
|
|
57
|
+
return target_heatmap, target_weight
|
|
58
|
+
|
|
59
|
+
|
|
12
60
|
def create_gaussian_mask(width, height, center, radius=5):
|
|
13
61
|
"""
|
|
14
62
|
生成二维高斯分布蒙版,width, height很大时,速度很慢
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*-coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
3
|
@Author : PKing
|
|
4
|
-
@E-mail :
|
|
4
|
+
@E-mail :
|
|
5
5
|
@Date : 2024-07-25 08:33:57
|
|
6
6
|
@Brief : https://imgaug.readthedocs.io/en/latest/index.html
|
|
7
7
|
"""
|
|
@@ -9,7 +9,10 @@ import os
|
|
|
9
9
|
import cv2
|
|
10
10
|
import numpy as np
|
|
11
11
|
from typing import List, Tuple
|
|
12
|
+
import torch
|
|
12
13
|
from imgaug import augmenters as iaa
|
|
14
|
+
from imgaug import parameters as iap
|
|
15
|
+
import imgaug.augmenters.meta as meta
|
|
13
16
|
from pybaseutils import file_utils, image_utils
|
|
14
17
|
from imgaug.augmentables.segmaps import SegmentationMapsOnImage
|
|
15
18
|
from imgaug.augmentables.kps import KeypointsOnImage
|
|
@@ -45,6 +48,49 @@ class Compose(object):
|
|
|
45
48
|
return image
|
|
46
49
|
|
|
47
50
|
|
|
51
|
+
class Transpose(meta.Augmenter):
|
|
52
|
+
def __init__(self, p=1, seed=None, name=None, random_state="deprecated", deterministic="deprecated"):
|
|
53
|
+
super(Transpose, self).__init__(
|
|
54
|
+
seed=seed, name=name,
|
|
55
|
+
random_state=random_state, deterministic=deterministic)
|
|
56
|
+
self.p = iap.handle_probability_param(p, "p")
|
|
57
|
+
|
|
58
|
+
def get_parameters(self):
|
|
59
|
+
"""See :func:`~imgaug.augmenters.meta.Augmenter.get_parameters`."""
|
|
60
|
+
return [self.p]
|
|
61
|
+
|
|
62
|
+
def _augment_images(self, images, random_state, parents, hooks):
|
|
63
|
+
images = [self.task(img) for img in images]
|
|
64
|
+
return images
|
|
65
|
+
|
|
66
|
+
def task(self, image, **kwargs):
|
|
67
|
+
image = image.transpose(2, 0, 1)
|
|
68
|
+
return image
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class Normalize(meta.Augmenter):
|
|
72
|
+
def __init__(self, mean, std, p=1, seed=None, name=None, random_state="deprecated", deterministic="deprecated"):
|
|
73
|
+
self.mean = mean
|
|
74
|
+
self.std = std
|
|
75
|
+
super(Normalize, self).__init__(
|
|
76
|
+
seed=seed, name=name,
|
|
77
|
+
random_state=random_state, deterministic=deterministic)
|
|
78
|
+
self.p = iap.handle_probability_param(p, "p")
|
|
79
|
+
|
|
80
|
+
def get_parameters(self):
|
|
81
|
+
"""See :func:`~imgaug.augmenters.meta.Augmenter.get_parameters`."""
|
|
82
|
+
return [self.p]
|
|
83
|
+
|
|
84
|
+
def _augment_images(self, images, random_state, parents, hooks):
|
|
85
|
+
images = [self.task(img) for img in images]
|
|
86
|
+
return images
|
|
87
|
+
|
|
88
|
+
def task(self, image, **kwargs):
|
|
89
|
+
image = np.asarray(image, dtype=np.float32) / 255.0
|
|
90
|
+
image = (image - self.mean) / self.std
|
|
91
|
+
return image
|
|
92
|
+
|
|
93
|
+
|
|
48
94
|
def augment_example(input_size=(224, 224)):
|
|
49
95
|
transforms = [
|
|
50
96
|
iaa.Resize({"width": int(input_size[0] * 1.2), "height": "keep-aspect-ratio"}),
|
|
@@ -112,7 +158,7 @@ def demo_for_keypoint():
|
|
|
112
158
|
image = image_utils.read_image("../../data/test.png")
|
|
113
159
|
mask = image_utils.read_image("../../data/mask.png")
|
|
114
160
|
mask = image_utils.get_image_mask(mask)
|
|
115
|
-
contours = image_utils.find_mask_contours(mask)
|
|
161
|
+
contours = image_utils.find_mask_contours(mask) # [(N,2)]
|
|
116
162
|
auimg, contours = augment(image=image, keypoints=contours)
|
|
117
163
|
h, w = auimg.shape[:2]
|
|
118
164
|
mask = image_utils.draw_mask_contours(contours, size=(w, h))
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*-coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
@Author : PKing
|
|
4
|
+
@E-mail : 390737991@qq.com
|
|
5
|
+
@Date : 2022-12-31 11:37:30
|
|
6
|
+
@Brief : https://blog.csdn.net/qdPython/article/details/121381363
|
|
7
|
+
"""
|
|
8
|
+
import os
|
|
9
|
+
import cv2
|
|
10
|
+
import random
|
|
11
|
+
import types
|
|
12
|
+
import torch
|
|
13
|
+
import numpy as np
|
|
14
|
+
from typing import Callable
|
|
15
|
+
from pybaseutils import image_utils, file_utils, text_utils
|
|
16
|
+
from pybaseutils.cvutils import video_utils
|
|
17
|
+
import cv2
|
|
18
|
+
import re
|
|
19
|
+
|
|
20
|
+
if __name__ == '__main__':
|
|
21
|
+
file = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-action-cvlm-v2/action-names.txt"
|
|
22
|
+
files = file_utils.read_data(file, split=None)
|
|
23
|
+
names = []
|
|
24
|
+
for file in files:
|
|
25
|
+
name = os.path.basename(file)
|
|
26
|
+
names.append(name)
|
|
27
|
+
names = list(set(names))
|
|
28
|
+
names = text_utils.find_match_texts(texts=names, pattern=["手拿*"])
|
|
29
|
+
names = list(set(names))
|
|
30
|
+
print(names)
|
|
31
|
+
names = ['手拿钳形电流表', '手拿相序表', '手拿护目镜', '手拿万用表', '手拿尖嘴钳', '手拿螺丝刀', '手拿万能表', '手拿扳手',
|
|
32
|
+
'手拿安全帽', '手拿安全带', '手拿安全围网', '手拿安全绳', '手拿吊物绳', '手拿抹布', '手拿熔断器熔管', '手拿工具袋',
|
|
33
|
+
'手拿采集器', '手拿瓷横担绝缘子', '手拿玻璃绝缘子', '手拿棉纱手套', '手拿绝缘手套,手拿橡胶手套,手拿其他手套',
|
|
34
|
+
'手拿长筒靴', '手拿绝缘垫', '手拿垫子', '手拿熔断器', '手拿卡线器', '手拿紧线器', '手拿验电器', '手拿验电笔', '手拿遮拦杆',
|
|
35
|
+
'手拿核相器', '手拿钢丝绳', '手拿美工刀', '手拿脚扣', '手拿兆欧表', '手拿绝缘胶布', '手拿绝缘杆', '手拿绝缘棒',
|
|
36
|
+
'手拿绝缘挡板', '手拿从此进入指示牌,手拿从此进出标示牌,手拿止步高压危险指示牌,手拿止步高压危险表示牌,手拿止步高压危险标示牌,手拿在此工作标示牌,手拿禁止合闸线路有人工作标示牌']
|
|
37
|
+
print(len(names))
|
|
@@ -25,7 +25,8 @@ if __name__ == "__main__":
|
|
|
25
25
|
# anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-outdoor-det-fix/dataset-v23/json"
|
|
26
26
|
anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-indoor-det/dataset-test/json"
|
|
27
27
|
anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v25/json"
|
|
28
|
-
anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-
|
|
28
|
+
anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-negetive/dataset-v02/json"
|
|
29
|
+
anno_dir = "/home/PKing/Downloads/aije-negetive/dataset-v01/sample"
|
|
29
30
|
names = None
|
|
30
31
|
# names = ['身穿工作服,未穿工作服', '手,手穿绝缘手套,手穿棉纱手套,手穿其他手套']
|
|
31
32
|
dataset = parser_labelme.LabelMeDatasets(filename=None,
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# -*-coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
@Author : PKing
|
|
4
|
-
@E-mail : 390737991@qq.com
|
|
5
|
-
@Date : 2022-12-31 11:37:30
|
|
6
|
-
@Brief : https://blog.csdn.net/qdPython/article/details/121381363
|
|
7
|
-
"""
|
|
8
|
-
import cv2
|
|
9
|
-
import random
|
|
10
|
-
import types
|
|
11
|
-
import torch
|
|
12
|
-
import numpy as np
|
|
13
|
-
from typing import Callable
|
|
14
|
-
from pybaseutils import image_utils, file_utils, text_utils
|
|
15
|
-
from pybaseutils.cvutils import video_utils
|
|
16
|
-
import cv2
|
|
17
|
-
import re
|
|
18
|
-
|
|
19
|
-
if __name__ == '__main__':
|
|
20
|
-
accs = np.asarray([0.6205, 0.5752, 0.9296, 0.9906, 0.4833, 0.0756, 0.000001, 0, 0, 0.8205, 0.9205])
|
|
21
|
-
print(accs,np.mean(accs))
|
|
22
|
-
accs = accs[accs > 0]
|
|
23
|
-
print(accs,np.mean(accs))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|