bone_2026/run.sh

91 lines
3.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
#
# DXA Quality Assessment — единая точка входа.
#
# Использование: ./run.sh <команда> [аргументы]
# ./run.sh train [доп. аргументы для src.dxa.train]
# ./run.sh infer <вход> <выход.xlsx|.csv> [доп. аргументы]
# ./run.sh serve [порт]
# ./run.sh test
#
# Скрипт намеренно не содержит своей реализации обучения и инференса: вся
# логика живёт в Python-модулях, а здесь только вызовы. Дублирование цикла
# обучения (как было раньше) приводило к расхождению правил между режимами.
set -euo pipefail
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
PYTHON=${PYTHON:-python3}
DATA_ROOT=${DATA_ROOT:-dataset_hack}
ANNOTATION_PATH=${ANNOTATION_PATH:-"dataset_hack/НД_для_обучения/разметка.xlsx"}
MODEL_PATH=${MODEL_PATH:-models/dxa_model.pth}
PORT=${PORT:-8000}
command=${1:-help}
shift || true
case "$command" in
train)
echo -e "${YELLOW}Обучение классификатора качества DXA${NC}"
"$PYTHON" -m src.dxa.train \
--data-root "$DATA_ROOT" \
--annotation-path "$ANNOTATION_PATH" \
--output-dir "$(dirname "$MODEL_PATH")" \
"$@"
echo -e "${GREEN}Готово. Чекпоинт: ${MODEL_PATH}${NC}"
;;
infer)
input_path=${1:-dataset_hack/Для теста}
output_path=${2:-results.xlsx}
shift 2 2>/dev/null || true
echo -e "${YELLOW}Пакетная обработка${NC}"
echo " вход: $input_path"
echo " выход: $output_path"
"$PYTHON" -m src.dxa.inference \
--input-path "$input_path" \
--output-path "$output_path" \
--model-path "$MODEL_PATH" \
"$@"
echo -e "${GREEN}Готово: ${output_path}${NC}"
;;
serve)
echo -e "${YELLOW}Запуск API на порту ${PORT}${NC}"
DXA_MODEL_PATH="$MODEL_PATH" \
"$PYTHON" -m uvicorn src.main:app --host 0.0.0.0 --port "$PORT"
;;
test)
echo -e "${YELLOW}Запуск тестов${NC}"
"$PYTHON" -m pytest tests/ -q
;;
help|*)
cat <<'USAGE'
DXA Quality Assessment — управление запуском
Команды:
train [аргументы] Обучить классификатор качества.
Пример: ./run.sh train --epochs 100 --head mlp
infer <вход> <выход> [арг.] Пакетная обработка DICOM (файл или каталог).
Пример: ./run.sh infer "dataset_hack/Для теста" results.xlsx
Дополнительно: --zip-out masks.zip
serve [порт] Запустить HTTP API и веб-интерфейс.
test Запустить тесты.
Переменные окружения:
DATA_ROOT Каталог датасета (по умолчанию dataset_hack)
ANNOTATION_PATH Excel с разметкой (только для отчёта о расхождениях)
MODEL_PATH Путь к чекпоинту (по умолчанию models/dxa_model.pth)
PORT Порт API (по умолчанию 8000)
PYTHON Интерпретатор (по умолчанию python3)
Типовой порядок работы:
./run.sh train # обучить модель
./run.sh infer dataset_hack results.xlsx
./run.sh serve # веб-интерфейс на http://localhost:8000
USAGE
;;
esac