|
| 1 | +name: Update DNN models |
| 2 | +description: Update OpenCV extra DNN models cache |
| 3 | + |
| 4 | +inputs: |
| 5 | + dnn-models: |
| 6 | + required: false |
| 7 | + default: "" |
| 8 | + target-branch-name: |
| 9 | + required: true |
| 10 | + |
| 11 | +runs: |
| 12 | + using: composite |
| 13 | + steps: |
| 14 | + - name: Extra DNN models update |
| 15 | + shell: bash |
| 16 | + working-directory: ${{ github.workspace }} |
| 17 | + run: | |
| 18 | + DOWNLOAD_MODELS_FILE='download_models.py' |
| 19 | + TARGET_BRANCH_NAME='${{ inputs.target-branch-name }}' |
| 20 | +
|
| 21 | + INPUT_DNN_MODELS='${{ inputs.dnn-models }}' |
| 22 | + DNN_MODELS="${INPUT_DNN_MODELS:-${DNN_MODELS:-}}" |
| 23 | + : "${DNN_MODELS:?DNN_MODELS is not set}" |
| 24 | +
|
| 25 | + if [[ -f "${{ github.workspace }}/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE" ]]; then |
| 26 | + OPENCV_EXTRA_DNN="${{ github.workspace }}/opencv_extra/testdata/dnn" |
| 27 | + elif [[ -f "$HOME/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE" ]]; then |
| 28 | + OPENCV_EXTRA_DNN="$HOME/opencv_extra/testdata/dnn" |
| 29 | + else |
| 30 | + echo "Cannot find opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE" |
| 31 | + exit 1 |
| 32 | + fi |
| 33 | +
|
| 34 | + LATEST_SAVED_HASH=$(cat "$DNN_MODELS/dnn/latest-hash-${TARGET_BRANCH_NAME}.txt") |
| 35 | + LATEST_HASH=$(sha256sum "$OPENCV_EXTRA_DNN/$DOWNLOAD_MODELS_FILE" | awk '{print $1}') |
| 36 | +
|
| 37 | + if [[ "$LATEST_HASH" == "$LATEST_SAVED_HASH" ]]; then |
| 38 | + echo "DNN models are up to date" |
| 39 | + echo "OPENCV_DNN_TEST_DATA_PATH=$DNN_MODELS" >> "$GITHUB_ENV" |
| 40 | + else |
| 41 | + echo "Updating DNN models list" |
| 42 | + OPENCV_DNN_TEST_DATA_PATH="${RUNNER_TEMP:-${{ github.workspace }}}/new-dnn-models" |
| 43 | + echo "OPENCV_DNN_TEST_DATA_PATH=$OPENCV_DNN_TEST_DATA_PATH" >> "$GITHUB_ENV" |
| 44 | +
|
| 45 | + mkdir -p "$OPENCV_DNN_TEST_DATA_PATH" |
| 46 | + rsync -a --exclude="$DOWNLOAD_MODELS_FILE" "$DNN_MODELS/" "$OPENCV_DNN_TEST_DATA_PATH/" |
| 47 | + cp "$OPENCV_EXTRA_DNN/$DOWNLOAD_MODELS_FILE" "$OPENCV_DNN_TEST_DATA_PATH/dnn/" |
| 48 | + cd "$OPENCV_DNN_TEST_DATA_PATH/dnn" && python3 download_models.py |
| 49 | + fi |
0 commit comments