Skip to content

Commit f739211

Browse files
authored
DNN model update as custom Github Actions step (#326)
1 parent b594902 commit f739211

23 files changed

Lines changed: 158 additions & 341 deletions
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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

.github/workflows/OCV-Contrib-PR-4.x-ARM64-FastCV.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -104,23 +104,13 @@ jobs:
104104
else
105105
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
106106
fi
107+
107108
- name: Extra DNN models update
109+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
108110
timeout-minutes: 60
109-
run: |
110-
DOWNLOAD_MODELS_FILE='download_models.py'
111-
LATEST_SAVED_HASH=$(cat ${{ env.DNN_MODELS }}/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
112-
LATEST_HASH=$(sha256sum $HOME/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
113-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
114-
echo "DNN models are up to date"
115-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV
116-
else
117-
echo "Updating DNN models list"
118-
echo "OPENCV_DNN_TEST_DATA_PATH=/home/ci/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH='/home/ci/new-dnn-models'
119-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
120-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE ${{ env.DNN_MODELS }}/* $OPENCV_DNN_TEST_DATA_PATH
121-
cp $HOME/opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
122-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
123-
fi
111+
with:
112+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
113+
124114
- name: Configure OpenCV
125115
timeout-minutes: 60
126116
run: |

.github/workflows/OCV-Contrib-PR-4.x-ARM64.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -104,23 +104,13 @@ jobs:
104104
else
105105
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
106106
fi
107+
107108
- name: Extra DNN models update
109+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
108110
timeout-minutes: 60
109-
run: |
110-
DOWNLOAD_MODELS_FILE='download_models.py'
111-
LATEST_SAVED_HASH=$(cat ${{ env.DNN_MODELS }}/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
112-
LATEST_HASH=$(sha256sum $HOME/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
113-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
114-
echo "DNN models are up to date"
115-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV
116-
else
117-
echo "Updating DNN models list"
118-
echo "OPENCV_DNN_TEST_DATA_PATH=/home/ci/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH='/home/ci/new-dnn-models'
119-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
120-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE ${{ env.DNN_MODELS }}/* $OPENCV_DNN_TEST_DATA_PATH
121-
cp $HOME/opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
122-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
123-
fi
111+
with:
112+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
113+
124114
- name: Configure OpenCV
125115
timeout-minutes: 60
126116
run: |

.github/workflows/OCV-Contrib-PR-4.x-macOS-ARM64.yaml

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -94,24 +94,13 @@ jobs:
9494
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
9595
fi
9696
working-directory: ${{ github.workspace }}/opencv_extra
97+
9798
- name: Extra DNN models update
99+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
98100
timeout-minutes: 60
99-
run: |
100-
DOWNLOAD_MODELS_FILE='download_models.py'
101-
LATEST_SAVED_HASH=$(cat $DNN_MODELS/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
102-
LATEST_HASH=$(sha256sum opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
103-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
104-
echo "DNN models are up to date"
105-
echo "OPENCV_DNN_TEST_DATA_PATH=$DNN_MODELS" >> $GITHUB_ENV
106-
else
107-
echo "Updating DNN models list"
108-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ github.workspace }}/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH="${{ github.workspace }}/new-dnn-models"
109-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
110-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE $DNN_MODELS/* $OPENCV_DNN_TEST_DATA_PATH
111-
cp opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
112-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
113-
fi
114-
working-directory: ${{ github.workspace }}
101+
with:
102+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
103+
115104
- name: Configure OpenCV
116105
timeout-minutes: 60
117106
run: |

.github/workflows/OCV-Contrib-PR-4.x-macOS-x86_64.yaml

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -93,24 +93,13 @@ jobs:
9393
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
9494
fi
9595
working-directory: ${{ github.workspace }}/opencv_extra
96+
9697
- name: Extra DNN models update
98+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
9799
timeout-minutes: 60
98-
run: |
99-
DOWNLOAD_MODELS_FILE='download_models.py'
100-
LATEST_SAVED_HASH=$(cat $DNN_MODELS/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
101-
LATEST_HASH=$(sha256sum opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
102-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
103-
echo "DNN models are up to date"
104-
echo "OPENCV_DNN_TEST_DATA_PATH=$DNN_MODELS" >> $GITHUB_ENV
105-
else
106-
echo "Updating DNN models list"
107-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ github.workspace }}/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH="${{ github.workspace }}/new-dnn-models"
108-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
109-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE $DNN_MODELS/* $OPENCV_DNN_TEST_DATA_PATH
110-
cp opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
111-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
112-
fi
113-
working-directory: ${{ github.workspace }}
100+
with:
101+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
102+
114103
- name: Configure OpenCV
115104
timeout-minutes: 60
116105
run: |

.github/workflows/OCV-Contrib-PR-5.x-ARM64-FastCV.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -104,23 +104,13 @@ jobs:
104104
else
105105
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
106106
fi
107+
107108
- name: Extra DNN models update
109+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
108110
timeout-minutes: 60
109-
run: |
110-
DOWNLOAD_MODELS_FILE='download_models.py'
111-
LATEST_SAVED_HASH=$(cat ${{ env.DNN_MODELS }}/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
112-
LATEST_HASH=$(sha256sum $HOME/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
113-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
114-
echo "DNN models are up to date"
115-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV
116-
else
117-
echo "Updating DNN models list"
118-
echo "OPENCV_DNN_TEST_DATA_PATH=/home/ci/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH='/home/ci/new-dnn-models'
119-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
120-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE ${{ env.DNN_MODELS }}/* $OPENCV_DNN_TEST_DATA_PATH
121-
cp $HOME/opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
122-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
123-
fi
111+
with:
112+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
113+
124114
- name: Configure OpenCV
125115
timeout-minutes: 60
126116
run: |

.github/workflows/OCV-Contrib-PR-5.x-ARM64.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -104,23 +104,13 @@ jobs:
104104
else
105105
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
106106
fi
107+
107108
- name: Extra DNN models update
109+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
108110
timeout-minutes: 60
109-
run: |
110-
DOWNLOAD_MODELS_FILE='download_models.py'
111-
LATEST_SAVED_HASH=$(cat ${{ env.DNN_MODELS }}/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
112-
LATEST_HASH=$(sha256sum $HOME/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
113-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
114-
echo "DNN models are up to date"
115-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV
116-
else
117-
echo "Updating DNN models list"
118-
echo "OPENCV_DNN_TEST_DATA_PATH=/home/ci/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH='/home/ci/new-dnn-models'
119-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
120-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE ${{ env.DNN_MODELS }}/* $OPENCV_DNN_TEST_DATA_PATH
121-
cp $HOME/opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
122-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
123-
fi
111+
with:
112+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
113+
124114
- name: Configure OpenCV
125115
timeout-minutes: 60
126116
run: |

.github/workflows/OCV-Contrib-PR-5.x-macOS-ARM64.yaml

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,24 +92,13 @@ jobs:
9292
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
9393
fi
9494
working-directory: ${{ github.workspace }}/opencv_extra
95+
9596
- name: Extra DNN models update
97+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
9698
timeout-minutes: 60
97-
run: |
98-
DOWNLOAD_MODELS_FILE='download_models.py'
99-
LATEST_SAVED_HASH=$(cat $DNN_MODELS/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
100-
LATEST_HASH=$(sha256sum opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
101-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
102-
echo "DNN models are up to date"
103-
echo "OPENCV_DNN_TEST_DATA_PATH=$DNN_MODELS" >> $GITHUB_ENV
104-
else
105-
echo "Updating DNN models list"
106-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ github.workspace }}/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH="${{ github.workspace }}/new-dnn-models"
107-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
108-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE $DNN_MODELS/* $OPENCV_DNN_TEST_DATA_PATH
109-
cp opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
110-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
111-
fi
112-
working-directory: ${{ github.workspace }}
99+
with:
100+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
101+
113102
- name: Configure OpenCV
114103
timeout-minutes: 60
115104
run: |

.github/workflows/OCV-Contrib-PR-5.x-macOS-x86_64.yaml

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,24 +92,13 @@ jobs:
9292
echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}"
9393
fi
9494
working-directory: ${{ github.workspace }}/opencv_extra
95+
9596
- name: Extra DNN models update
97+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
9698
timeout-minutes: 60
97-
run: |
98-
DOWNLOAD_MODELS_FILE='download_models.py'
99-
LATEST_SAVED_HASH=$(cat $DNN_MODELS/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
100-
LATEST_HASH=$(sha256sum opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
101-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
102-
echo "DNN models are up to date"
103-
echo "OPENCV_DNN_TEST_DATA_PATH=$DNN_MODELS" >> $GITHUB_ENV
104-
else
105-
echo "Updating DNN models list"
106-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ github.workspace }}/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH="${{ github.workspace }}/new-dnn-models"
107-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
108-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE $DNN_MODELS/* $OPENCV_DNN_TEST_DATA_PATH
109-
cp opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
110-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
111-
fi
112-
working-directory: ${{ github.workspace }}
99+
with:
100+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
101+
113102
- name: Configure OpenCV
114103
timeout-minutes: 60
115104
run: |

.github/workflows/OCV-Coverage-4.x-U20.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,13 @@ jobs:
6666
- name: Clone opencv_extra
6767
timeout-minutes: 60
6868
run: git clone --single-branch --branch ${{ env.TARGET_BRANCH_NAME }} --reference ${{ env.GIT_CACHE_DOCKER }}/opencv_extra.git https://github.com/opencv/opencv_extra.git /home/ci/opencv_extra
69+
6970
- name: Extra DNN models update
71+
uses: opencv/ci-gha-workflow/.github/actions/update-dnn-models@main
7072
timeout-minutes: 60
71-
run: |
72-
DOWNLOAD_MODELS_FILE='download_models.py'
73-
LATEST_SAVED_HASH=$(cat ${{ env.DNN_MODELS }}/dnn/latest-hash-${{ env.TARGET_BRANCH_NAME }}.txt)
74-
LATEST_HASH=$(sha256sum /home/ci/opencv_extra/testdata/dnn/$DOWNLOAD_MODELS_FILE | awk '{print $1}')
75-
if [[ $LATEST_HASH == $LATEST_SAVED_HASH ]]; then
76-
echo "DNN models are up to date"
77-
echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV
78-
else
79-
echo "Updating DNN models list"
80-
echo "OPENCV_DNN_TEST_DATA_PATH=/home/ci/new-dnn-models" >> $GITHUB_ENV && OPENCV_DNN_TEST_DATA_PATH='/home/ci/new-dnn-models'
81-
mkdir -p "$OPENCV_DNN_TEST_DATA_PATH"
82-
rsync -a --exclude=$DOWNLOAD_MODELS_FILE ${{ env.DNN_MODELS }}/* $OPENCV_DNN_TEST_DATA_PATH
83-
cp /home/ci/opencv_extra/testdata/dnn/download_models.py $OPENCV_DNN_TEST_DATA_PATH/dnn
84-
cd $OPENCV_DNN_TEST_DATA_PATH/dnn && python3 download_models.py
85-
fi
73+
with:
74+
target-branch-name: ${{ env.TARGET_BRANCH_NAME }}
75+
8676
- name: Configure OpenCV
8777
timeout-minutes: 60
8878
run: |

0 commit comments

Comments
 (0)