65 lines
2.1 KiB
Bash
65 lines
2.1 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||
|
|
PROJECT_ROOT=$(cd "${SCRIPT_DIR}/../.." && pwd)
|
||
|
|
|
||
|
|
LIST_DIR=${LIST_DIR:-/mnt/mono3d/ydong_data/D01_group_list}
|
||
|
|
LIST_PATTERN=${LIST_PATTERN:-*.txt}
|
||
|
|
OUTPUT_ROOT=${OUTPUT_ROOT:-/mnt/mono3d/ydong_data/Mono3d_camera2_gt_by_group_id}
|
||
|
|
NUM_WORKERS=${NUM_WORKERS:-32}
|
||
|
|
PRODUCT_TYPE=${PRODUCT_TYPE:-2d-3d-association}
|
||
|
|
CAMERA_ID=${CAMERA_ID:-camera2}
|
||
|
|
IMAGE_SUFFIX=${IMAGE_SUFFIX:-jpg}
|
||
|
|
ANNOTATION_STRIDE=${ANNOTATION_STRIDE:-2}
|
||
|
|
SKIP_IMAGES=${SKIP_IMAGES:-0}
|
||
|
|
PYTHON_BIN=${PYTHON_BIN:-python}
|
||
|
|
LOG_DIR=${LOG_DIR:-${OUTPUT_ROOT}/_logs/extract_gt_by_group_id}
|
||
|
|
|
||
|
|
if [[ ! -d "${LIST_DIR}" ]]; then
|
||
|
|
echo "[ERROR] LIST_DIR 不存在: ${LIST_DIR}" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
mkdir -p "${OUTPUT_ROOT}" "${LOG_DIR}"
|
||
|
|
|
||
|
|
mapfile -t LIST_FILES < <(find "${LIST_DIR}" -maxdepth 1 -type f -name "${LIST_PATTERN}" | sort)
|
||
|
|
|
||
|
|
if [[ ${#LIST_FILES[@]} -eq 0 ]]; then
|
||
|
|
echo "[ERROR] 在 ${LIST_DIR} 下未找到匹配 ${LIST_PATTERN} 的列表文件" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
RUN_TAG=$(date +%Y%m%d_%H%M%S)
|
||
|
|
MERGED_UUID_FILE="${LOG_DIR}/merged_group_list_${RUN_TAG}.txt"
|
||
|
|
RUN_LOG="${LOG_DIR}/extract_gt_by_group_id_${RUN_TAG}.log"
|
||
|
|
|
||
|
|
awk 'NF && $1 !~ /^#/ && !seen[$1]++ { print }' "${LIST_FILES[@]}" > "${MERGED_UUID_FILE}"
|
||
|
|
|
||
|
|
TOTAL_LISTS=${#LIST_FILES[@]}
|
||
|
|
TOTAL_GROUPS=$(wc -l < "${MERGED_UUID_FILE}")
|
||
|
|
|
||
|
|
echo "[INFO] list 文件数: ${TOTAL_LISTS}"
|
||
|
|
echo "[INFO] 合并后 group 数: ${TOTAL_GROUPS}"
|
||
|
|
echo "[INFO] workers: ${NUM_WORKERS}"
|
||
|
|
echo "[INFO] image suffix: ${IMAGE_SUFFIX}"
|
||
|
|
echo "[INFO] annotation stride: ${ANNOTATION_STRIDE}"
|
||
|
|
echo "[INFO] skip images: ${SKIP_IMAGES}"
|
||
|
|
echo "[INFO] merged uuid file: ${MERGED_UUID_FILE}"
|
||
|
|
echo "[INFO] run log: ${RUN_LOG}"
|
||
|
|
|
||
|
|
PY_ARGS=()
|
||
|
|
if [[ "${SKIP_IMAGES}" == "1" ]]; then
|
||
|
|
PY_ARGS+=(--skip_images)
|
||
|
|
fi
|
||
|
|
|
||
|
|
"${PYTHON_BIN}" "${PROJECT_ROOT}/tools/pdcl_inference/extract_gt_by_group_id.py" \
|
||
|
|
--uuid_file "${MERGED_UUID_FILE}" \
|
||
|
|
--output "${OUTPUT_ROOT}" \
|
||
|
|
--product_type "${PRODUCT_TYPE}" \
|
||
|
|
--camera_id "${CAMERA_ID}" \
|
||
|
|
--image_suffix "${IMAGE_SUFFIX}" \
|
||
|
|
--annotation_stride "${ANNOTATION_STRIDE}" \
|
||
|
|
--workers "${NUM_WORKERS}" \
|
||
|
|
"${PY_ARGS[@]}" | tee "${RUN_LOG}"
|