From c4036cd80da2562a9fd7d57900b3217a19efeed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Tue, 1 Nov 2022 11:59:29 +0000 Subject: [PATCH 01/34] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20mnasnet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/mnasnet/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/.keep diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/.keep b/ACL_TensorFlow/contrib/cv/mnasnet/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From 48d737c2631ddb8a2c9e518bd4f5e60df196dea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Tue, 1 Nov 2022 12:00:03 +0000 Subject: [PATCH 02/34] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/mnasnet/README/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/README/.keep diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README/.keep b/ACL_TensorFlow/contrib/cv/mnasnet/README/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From 98ec17e6f578683d442a7b18e7f8f016bea109ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Tue, 1 Nov 2022 12:00:29 +0000 Subject: [PATCH 03/34] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20ACL=5FTenso?= =?UTF-8?q?rFlow/contrib/cv/mnasnet/README=20=E4=B8=BA=20ACL=5FTensorFlow/?= =?UTF-8?q?contrib/cv/mnasnet/README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/mnasnet/{README => README.md}/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ACL_TensorFlow/contrib/cv/mnasnet/{README => README.md}/.keep (100%) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README/.keep b/ACL_TensorFlow/contrib/cv/mnasnet/README.md/.keep similarity index 100% rename from ACL_TensorFlow/contrib/cv/mnasnet/README/.keep rename to ACL_TensorFlow/contrib/cv/mnasnet/README.md/.keep -- Gitee From cb8aaf64993926d6cad8fcd6de20af51c97513a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Tue, 1 Nov 2022 12:01:03 +0000 Subject: [PATCH 04/34] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20ckpt2pb.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep b/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From 32ea018771695a6c730927d653e69e4f0959f57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 01:04:24 +0000 Subject: [PATCH 05/34] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20AC?= =?UTF-8?q?L=5FTensorFlow/contrib/cv/mnasnet/README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/mnasnet/README.md/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/README.md/.keep diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md/.keep b/ACL_TensorFlow/contrib/cv/mnasnet/README.md/.keep deleted file mode 100644 index e69de29bb..000000000 -- Gitee From 5033e10fef6620760d3dd33efa09efe937601f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 01:09:50 +0000 Subject: [PATCH 06/34] add ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/README.md diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md new file mode 100644 index 000000000..42061c01a --- /dev/null +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -0,0 +1 @@ +README.md \ No newline at end of file -- Gitee From 430b938b7b79a9b0d5a9fe0ab1ba81d50abeb09e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 01:10:15 +0000 Subject: [PATCH 07/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 123 +++++++++++++++++++- 1 file changed, 122 insertions(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 42061c01a..e632d9a6a 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -1 +1,122 @@ -README.md \ No newline at end of file +# ATC SparseNet +Sparsely Aggregated Convolutional Networks [[PDF](https://arxiv.org/abs/1801.05895)] + +[Ligeng Zhu](https://lzhu.me), [Ruizhi Deng](http://www.sfu.ca/~ruizhid/), [Michael Maire](http://ttic.uchicago.edu/~mmaire/), [Zhiwei Deng](http://www.sfu.ca/~zhiweid/), [Greg Mori](http://www.cs.sfu.ca/~mori/), [Ping Tan](https://www.cs.sfu.ca/~pingtan/) + +# 1. test dataset to bin +[CIFAR10](https://pan.baidu.com/s/1drCJNhNs5Ek6Mm92TGfEYw) +Password:zmof + +[Test Dataset](https://pan.baidu.com/s/1-KBREYkGgBfr9yV96O4xkw) +Password:on6n + + + +
Data augmentation: +standard +mirroring +shifting +
+ + + +
Preprocessing: normalize the data by the channel mean and standard deviation +
+ +download **Test Dataset** and use **img2bin.py** process dataset to bin file. + +[Test Dataset Bin File](https://pan.baidu.com/s/1tQxnY7MF75CYoS9ZhgaSKA) +Password:dcjn + +# 2. pb to om +Command: +```bash +. /usr/local/Ascend/ascend-toolkit/set_env.sh +export DDK_PATH=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002 +export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002/acllib/lib64/stub +pb_path=/home/HwHiAiUser/AscendProjects/SparseNet/pb/SparseNet_freeze.pb +batchSize=64 +output_om_path=/home/HwHiAiUser/AscendProjects/SparseNet/freezed_SparseNet_batchSize_${batchSize} +atc --model=${pb_path} --framework=3 --output=${output_om_path} --soc_version=Ascend310 --input_shape="input:${batchSize},32,32,3" --input_format=NHWC --log=debug --debug_dir=/home/HwHiAiUser/AscendProjects/SparseNet/debug_info --out_nodes="output:0" +``` +[Pb](https://pan.baidu.com/s/17m7o1BUAkdOuGKTd2_SZrg) +Password:mvqu + +[OM](https://pan.baidu.com/s/1NczbTg7XPzhjsdj-AnyvAQ) +Password:wtp9 + +# 3. compile masame +Reference to https://gitee.com/ascend/tools/tree/ccl/msame, compile **msame** + +Compile masame command: +```bash +. /usr/local/Ascend/ascend-toolkit/set_env.sh +export ASCEND_SLOG_PRINT_TO_STDOUT=1 +export DDK_PATH=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002 +export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002/acllib/lib64/stub +cd /root/msame/ +bash build.sh g++ /root/msame/out +``` + +# 4. inference +Inference command: +```bash +cd /root/msame/out +batchSize=64 +model_path=/home/HwHiAiUser/AscendProjects/SparseNet/freezed_SparseNet_batchSize_${batchSize}.om +input_path=/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_${batchSize} +output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output +./msame --model ${model_path} --input ${input_path} --output ${output_path} --outfmt TXT +``` + + + +[Inference Sys Output](https://pan.baidu.com/s/1J0rwcydSh5f_bpq_Fvjpog) +Password:hfb0 + +Part of **Inference sys output**: +```bash +[INFO] get max dynamic batch size success +[INFO] output data success +[INFO] destroy model input success +[INFO] start to process file:/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_64/110_batch_6976_7040.bin +[INFO] model execute success +Inference time: 235.143ms +``` + +[Inference Result](https://pan.baidu.com/s/1J0rwcydSh5f_bpq_Fvjpog) +Password:x88i + +# 5. calculate Top-1 error + +get **inference result** and use **calculate_kpi.py** get the **top-1 err**. + +Top-1 error: +```bash +OM-Top1-err: 0.0643 +GPU-Top1-err: 0.050 +NPU-Top1-err: 0.048 +``` + +# SparseNet implementation + + +``` +@article{DBLP:journals/corr/abs-1801-05895, + author = {Ligeng Zhu and + Ruizhi Deng and + Michael Maire and + Zhiwei Deng and + Greg Mori and + Ping Tan}, + title = {Sparsely Aggregated Convolutional Networks}, + journal = {CoRR}, + volume = {abs/1801.05895}, + year = {2018}, + url = {http://arxiv.org/abs/1801.05895}, + archivePrefix = {arXiv}, + eprint = {1801.05895}, + biburl = {https://dblp.org/rec/bib/journals/corr/abs-1801-05895}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} +``` -- Gitee From 230f5b2ae58c7ef98868434cc91411c6dedca902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 01:10:45 +0000 Subject: [PATCH 08/34] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20AC?= =?UTF-8?q?L=5FTensorFlow/contrib/cv/mnasnet/ckpt2pb.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep b/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py/.keep deleted file mode 100644 index e69de29bb..000000000 -- Gitee From 8643152e7fb3c2d1e3c805f708bf0587e9cd6c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 01:32:08 +0000 Subject: [PATCH 09/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 30 ++++----------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index e632d9a6a..9a750531e 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -1,32 +1,12 @@ -# ATC SparseNet -Sparsely Aggregated Convolutional Networks [[PDF](https://arxiv.org/abs/1801.05895)] +# ATC mnasnet -[Ligeng Zhu](https://lzhu.me), [Ruizhi Deng](http://www.sfu.ca/~ruizhid/), [Michael Maire](http://ttic.uchicago.edu/~mmaire/), [Zhiwei Deng](http://www.sfu.ca/~zhiweid/), [Greg Mori](http://www.cs.sfu.ca/~mori/), [Ping Tan](https://www.cs.sfu.ca/~pingtan/) -# 1. test dataset to bin -[CIFAR10](https://pan.baidu.com/s/1drCJNhNs5Ek6Mm92TGfEYw) -Password:zmof +# 1. original model -[Test Dataset](https://pan.baidu.com/s/1-KBREYkGgBfr9yV96O4xkw) -Password:on6n +download **ckpt** and use **img2bin.py** process ckpt to pb. - - -
Data augmentation: -standard -mirroring -shifting -
- - - -
Preprocessing: normalize the data by the channel mean and standard deviation -
- -download **Test Dataset** and use **img2bin.py** process dataset to bin file. - -[Test Dataset Bin File](https://pan.baidu.com/s/1tQxnY7MF75CYoS9ZhgaSKA) -Password:dcjn +[ckpt](https://pan.baidu.com/s/1-E3SQAxShCYcIVdkxbg19w) +Password:e3el # 2. pb to om Command: -- Gitee From a072a2fa7146dfd5be435d643f22443e531bf43b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 03:06:38 +0000 Subject: [PATCH 10/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 9a750531e..fcd26ca12 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -3,27 +3,21 @@ # 1. original model -download **ckpt** and use **img2bin.py** process ckpt to pb. +download **ckpt** and use **ckpt2pb.py** process ckpt to pb. [ckpt](https://pan.baidu.com/s/1-E3SQAxShCYcIVdkxbg19w) Password:e3el # 2. pb to om Command: -```bash -. /usr/local/Ascend/ascend-toolkit/set_env.sh -export DDK_PATH=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002 -export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002/acllib/lib64/stub -pb_path=/home/HwHiAiUser/AscendProjects/SparseNet/pb/SparseNet_freeze.pb -batchSize=64 -output_om_path=/home/HwHiAiUser/AscendProjects/SparseNet/freezed_SparseNet_batchSize_${batchSize} -atc --model=${pb_path} --framework=3 --output=${output_om_path} --soc_version=Ascend310 --input_shape="input:${batchSize},32,32,3" --input_format=NHWC --log=debug --debug_dir=/home/HwHiAiUser/AscendProjects/SparseNet/debug_info --out_nodes="output:0" ``` -[Pb](https://pan.baidu.com/s/17m7o1BUAkdOuGKTd2_SZrg) -Password:mvqu +atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1, 224, 224, 3" --output=./mnasnet --soc_version=Ascend910" +``` +[Pb](https://pan.baidu.com/s/1fUGFDZxi-6iit56PGN7sKg) +Password:qcvn -[OM](https://pan.baidu.com/s/1NczbTg7XPzhjsdj-AnyvAQ) -Password:wtp9 +[OM](https://pan.baidu.com/s/1Z6IqgDpjC3h4sqhcX9ej8g) +Password:vghg # 3. compile masame Reference to https://gitee.com/ascend/tools/tree/ccl/msame, compile **msame** -- Gitee From fb771ccc529024419acea5b14a1f421d9e8ac573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 03:34:49 +0000 Subject: [PATCH 11/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index fcd26ca12..7c2d099a4 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -20,16 +20,16 @@ Password:qcvn Password:vghg # 3. compile masame -Reference to https://gitee.com/ascend/tools/tree/ccl/msame, compile **msame** +Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** Compile masame command: ```bash -. /usr/local/Ascend/ascend-toolkit/set_env.sh -export ASCEND_SLOG_PRINT_TO_STDOUT=1 -export DDK_PATH=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002 -export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/5.0.4.alpha002/acllib/lib64/stub -cd /root/msame/ -bash build.sh g++ /root/msame/out +. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh +export DDK_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/latest +export NPU_HOST_LIB=/home/HwHiAiUser/Ascend/ascend-toolkit/latest/runtime/lib64/stub +cd $HOME/AscendProjects/tools/msame/ +./build.sh g++ $HOME/AscendProjects/tools/msame/out + ``` # 4. inference -- Gitee From 9c16beedbedb05f4eb938221ec2b3d400954d48c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 07:42:34 +0000 Subject: [PATCH 12/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 33 --------------------- 1 file changed, 33 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 7c2d099a4..c3f6c9ca2 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -61,36 +61,3 @@ Inference time: 235.143ms [Inference Result](https://pan.baidu.com/s/1J0rwcydSh5f_bpq_Fvjpog) Password:x88i -# 5. calculate Top-1 error - -get **inference result** and use **calculate_kpi.py** get the **top-1 err**. - -Top-1 error: -```bash -OM-Top1-err: 0.0643 -GPU-Top1-err: 0.050 -NPU-Top1-err: 0.048 -``` - -# SparseNet implementation - - -``` -@article{DBLP:journals/corr/abs-1801-05895, - author = {Ligeng Zhu and - Ruizhi Deng and - Michael Maire and - Zhiwei Deng and - Greg Mori and - Ping Tan}, - title = {Sparsely Aggregated Convolutional Networks}, - journal = {CoRR}, - volume = {abs/1801.05895}, - year = {2018}, - url = {http://arxiv.org/abs/1801.05895}, - archivePrefix = {arXiv}, - eprint = {1801.05895}, - biburl = {https://dblp.org/rec/bib/journals/corr/abs-1801-05895}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} -``` -- Gitee From 4d48ec9caa21706417fc63e3c33d3d5e23d2c2ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 07:45:11 +0000 Subject: [PATCH 13/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index c3f6c9ca2..65d00be76 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -45,9 +45,6 @@ output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output -[Inference Sys Output](https://pan.baidu.com/s/1J0rwcydSh5f_bpq_Fvjpog) -Password:hfb0 - Part of **Inference sys output**: ```bash [INFO] get max dynamic batch size success @@ -58,6 +55,8 @@ Part of **Inference sys output**: Inference time: 235.143ms ``` -[Inference Result](https://pan.baidu.com/s/1J0rwcydSh5f_bpq_Fvjpog) -Password:x88i +Part of **Inference sys output**: +```bash + +``` -- Gitee From e95e4ab07b8c781d1b189a76cbc4697094b41473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 07:50:13 +0000 Subject: [PATCH 14/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 65d00be76..a05dbb5a3 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -1,6 +1,7 @@ # ATC mnasnet +Platform-Aware Neural Architecture Search for Mobile [[PDF](https://arxiv.org/abs/1807.11626)] - +Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le # 1. original model download **ckpt** and use **ckpt2pb.py** process ckpt to pb. -- Gitee From 97405144df96a732646e6487b9f9e830fca73630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 08:14:12 +0000 Subject: [PATCH 15/34] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20edsr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ACL_TensorFlow/contrib/cv/edsr/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ACL_TensorFlow/contrib/cv/edsr/.keep diff --git a/ACL_TensorFlow/contrib/cv/edsr/.keep b/ACL_TensorFlow/contrib/cv/edsr/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From 483a433a58e347e46846c5a9b17ccff8d39bc953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 08:15:23 +0000 Subject: [PATCH 16/34] add ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ACL_TensorFlow/contrib/cv/edsr/README.md diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md new file mode 100644 index 000000000..e69de29bb -- Gitee From ce60c39189313142f2b3b7f5d352213e379a8a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 08:15:47 +0000 Subject: [PATCH 17/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 63 ++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index e69de29bb..a05dbb5a3 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -0,0 +1,63 @@ +# ATC mnasnet +Platform-Aware Neural Architecture Search for Mobile [[PDF](https://arxiv.org/abs/1807.11626)] + +Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le +# 1. original model + +download **ckpt** and use **ckpt2pb.py** process ckpt to pb. + +[ckpt](https://pan.baidu.com/s/1-E3SQAxShCYcIVdkxbg19w) +Password:e3el + +# 2. pb to om +Command: +``` +atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1, 224, 224, 3" --output=./mnasnet --soc_version=Ascend910" +``` +[Pb](https://pan.baidu.com/s/1fUGFDZxi-6iit56PGN7sKg) +Password:qcvn + +[OM](https://pan.baidu.com/s/1Z6IqgDpjC3h4sqhcX9ej8g) +Password:vghg + +# 3. compile masame +Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** + +Compile masame command: +```bash +. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh +export DDK_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/latest +export NPU_HOST_LIB=/home/HwHiAiUser/Ascend/ascend-toolkit/latest/runtime/lib64/stub +cd $HOME/AscendProjects/tools/msame/ +./build.sh g++ $HOME/AscendProjects/tools/msame/out + +``` + +# 4. inference +Inference command: +```bash +cd /root/msame/out +batchSize=64 +model_path=/home/HwHiAiUser/AscendProjects/SparseNet/freezed_SparseNet_batchSize_${batchSize}.om +input_path=/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_${batchSize} +output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output +./msame --model ${model_path} --input ${input_path} --output ${output_path} --outfmt TXT +``` + + + +Part of **Inference sys output**: +```bash +[INFO] get max dynamic batch size success +[INFO] output data success +[INFO] destroy model input success +[INFO] start to process file:/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_64/110_batch_6976_7040.bin +[INFO] model execute success +Inference time: 235.143ms +``` + + +Part of **Inference sys output**: +```bash + +``` -- Gitee From 6222846e2ab15cc983b4e96fee5cd669fff82f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Wed, 2 Nov 2022 09:11:56 +0000 Subject: [PATCH 18/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index a05dbb5a3..9ea183e69 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -1,7 +1,16 @@ # ATC mnasnet -Platform-Aware Neural Architecture Search for Mobile [[PDF](https://arxiv.org/abs/1807.11626)] -Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le + +- references: + + ["Platform-Aware Neural Architecture Search for Mobile"](https://arxiv.org/abs/1807.11626) + + +- training model: + + [MnasNet_ID0728_for_TensorFlow](https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/MnasNet_ID0728_for_TensorFlow) + + # 1. original model download **ckpt** and use **ckpt2pb.py** process ckpt to pb. -- Gitee From 93184f43e3b18a0f480ec0cde6d15112a1327bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 01:06:43 +0000 Subject: [PATCH 19/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 28 +++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 9ea183e69..70a6489ca 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -11,7 +11,7 @@ [MnasNet_ID0728_for_TensorFlow](https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/MnasNet_ID0728_for_TensorFlow) -# 1. original model +# 1. ckpt to pb download **ckpt** and use **ckpt2pb.py** process ckpt to pb. @@ -21,7 +21,7 @@ Password:e3el # 2. pb to om Command: ``` -atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1, 224, 224, 3" --output=./mnasnet --soc_version=Ascend910" +atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1,224,224,3" --output=./mnasnet --soc_version=Ascend910" ``` [Pb](https://pan.baidu.com/s/1fUGFDZxi-6iit56PGN7sKg) Password:qcvn @@ -57,12 +57,30 @@ output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output Part of **Inference sys output**: ```bash +[INFO] acl init success +[INFO] open device 0 success +[INFO] create context success +[INFO] create stream success +[INFO] get run mode success +[INFO] load model ./mnasnet.om success +[INFO] create model description success +[INFO] get input dynamic gear count success +[INFO] create model output success +./output11/2022112_17_42_45_913229 +[INFO] start to process file:./pic.bin +[INFO] model execute success +Inference time: 1.302ms [INFO] get max dynamic batch size success [INFO] output data success +Inference average time: 1.302000 ms [INFO] destroy model input success -[INFO] start to process file:/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_64/110_batch_6976_7040.bin -[INFO] model execute success -Inference time: 235.143ms +[INFO] unload model success, model Id is 1 +[INFO] Execute sample success +[INFO] end to destroy stream +[INFO] end to destroy context +[INFO] end to reset device is 0 +[INFO] end to finalize acl + ``` -- Gitee From 881332eb1d1552cb910f5ec313e325264dee0de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 01:16:48 +0000 Subject: [PATCH 20/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 70a6489ca..cc406d234 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -86,5 +86,5 @@ Inference average time: 1.302000 ms Part of **Inference sys output**: ```bash - +0.000487804 0.000569344 0.000521183 0.0006423 0.000464678 0.00140095 0.000912189 0.000928402 0.00101662 0.000784874 0.000334501 0.000647545 0.000609398 0.000686646 0.000246763 0.000668049 0.000214338 0.000707626 ``` -- Gitee From 8aebfe559ce8785e7b64dd633481172f6fadea1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 02:17:05 +0000 Subject: [PATCH 21/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index cc406d234..f26effc67 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -45,11 +45,10 @@ cd $HOME/AscendProjects/tools/msame/ # 4. inference Inference command: ```bash -cd /root/msame/out -batchSize=64 -model_path=/home/HwHiAiUser/AscendProjects/SparseNet/freezed_SparseNet_batchSize_${batchSize}.om -input_path=/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_${batchSize} -output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output +cd $HOME/AscendProjects/tools/msame/out +model_path=/home/HwHiAiUser/AscendProjects/MnasNet/mnasnet.om +input_path=/home/HwHiAiUser/AscendProjects/MnasNet/pic.bin +output_path=/home/HwHiAiUser/AscendProjects/MnasNet/output ./msame --model ${model_path} --input ${input_path} --output ${output_path} --outfmt TXT ``` @@ -66,13 +65,13 @@ Part of **Inference sys output**: [INFO] create model description success [INFO] get input dynamic gear count success [INFO] create model output success -./output11/2022112_17_42_45_913229 +./output1/2022113_9_31_13_612340 [INFO] start to process file:./pic.bin [INFO] model execute success -Inference time: 1.302ms +Inference time: 1.359ms [INFO] get max dynamic batch size success [INFO] output data success -Inference average time: 1.302000 ms +Inference average time: 1.359000 ms [INFO] destroy model input success [INFO] unload model success, model Id is 1 [INFO] Execute sample success @@ -86,5 +85,5 @@ Inference average time: 1.302000 ms Part of **Inference sys output**: ```bash -0.000487804 0.000569344 0.000521183 0.0006423 0.000464678 0.00140095 0.000912189 0.000928402 0.00101662 0.000784874 0.000334501 0.000647545 0.000609398 0.000686646 0.000246763 0.000668049 0.000214338 0.000707626 +0.000629902 0.000514507 0.000611782 0.000699043 0.000445127 0.00120354 0.00102234 0.00104713 0.0011034 0.000992775 0.000550747 0.00101948 0.00100136 0.000835419 0.000398874 0.000741005 0.000406742 0.00107861 ``` -- Gitee From c73560df7644ec5eb8875e29903149ce04f69b61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 02:22:04 +0000 Subject: [PATCH 22/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index f26effc67..d38af96c2 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -1,4 +1,4 @@ -# ATC mnasnet +# ATC MnasNet - references: @@ -23,11 +23,11 @@ Command: ``` atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1,224,224,3" --output=./mnasnet --soc_version=Ascend910" ``` -[Pb](https://pan.baidu.com/s/1fUGFDZxi-6iit56PGN7sKg) -Password:qcvn +[Pb](https://pan.baidu.com/s/1YhB_1zjYb2dz_h8P_kIGUQ) +Password:m6mx -[OM](https://pan.baidu.com/s/1Z6IqgDpjC3h4sqhcX9ej8g) -Password:vghg +[OM](https://pan.baidu.com/s/1mKV8wkUBz3KiF8hpxUh9mA) +Password:zdo1 # 3. compile masame Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** -- Gitee From f5aec19277824722e39eeda10c41f6ba1a3ddd13 Mon Sep 17 00:00:00 2001 From: zhang-anqi11 <956513066@qq.com> Date: Thu, 3 Nov 2022 10:38:12 +0800 Subject: [PATCH 23/34] mnasnet --- ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py | 40 +++++++++++++++++++ ACL_TensorFlow/contrib/cv/mnasnet/pic.bin | Bin 0 -> 602112 bytes 2 files changed, 40 insertions(+) create mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py create mode 100644 ACL_TensorFlow/contrib/cv/mnasnet/pic.bin diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py b/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py new file mode 100644 index 000000000..de67137c8 --- /dev/null +++ b/ACL_TensorFlow/contrib/cv/mnasnet/ckpt2pb.py @@ -0,0 +1,40 @@ +import tensorflow as tf +from tensorflow.python.framework import graph_util +import mnasnet_models + +ckpt_path = "./models/model.ckpt-10009" + +def main(): + + tf.reset_default_graph() + + inputs1 = tf.placeholder(tf.float32, shape=[1, 224, 224, 3], name="input1") + + with tf.Session() as sess: + params = {'dropout_rate': 0.2, 'data_format': 'channels_last', 'num_classes': 1000, 'use_keras': True} + #params = {} + logits, _ = mnasnet_models.build_mnasnet_model(inputs1, "mnasnet-a1", training=True, override_params=params) + probs = tf.nn.softmax(logits) + probs = tf.squeeze(probs, name='pred_prob') + + graph = tf.get_default_graph() + input_graph_def = graph.as_graph_def() + + sess.run(tf.global_variables_initializer()) + + saver = tf.train.Saver() + saver.restore(sess, ckpt_path) #恢复图并得到数据 + + output_graph_def = graph_util.convert_variables_to_constants( # 模型持久化,将变量值固定 + sess=sess, + input_graph_def=input_graph_def, + output_node_names=['pred_prob']) # 如果有多个输出节点,以逗号隔开 + # 保存模型 + with tf.gfile.GFile("./pb_model/mnasnet.pb", "wb") as f: + f.write(output_graph_def.SerializeToString()) # 序列化输出 + print("%d ops in the final graph." % len(output_graph_def.node)) # 得到当前图有几个操作节点 + + print("done") + +if __name__ == '__main__': + main() diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/pic.bin b/ACL_TensorFlow/contrib/cv/mnasnet/pic.bin new file mode 100644 index 0000000000000000000000000000000000000000..320a9c30e9cbc06f6adc99eb749df696d9a9f411 GIT binary patch literal 602112 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

al~eFTPN8fje+OS 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

T?*2w+He0)oEjP{ufB!Ig#BqH5eQA8Y7hjsK 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 Date: Thu, 3 Nov 2022 02:33:55 +0000 Subject: [PATCH 24/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index d38af96c2..8dbe6af17 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -29,7 +29,7 @@ Password:m6mx [OM](https://pan.baidu.com/s/1mKV8wkUBz3KiF8hpxUh9mA) Password:zdo1 -# 3. compile masame +# 3. compile msame Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** Compile masame command: -- Gitee From 81dbf8b0b22cff39a0ef8a57a6e66b775776afdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 02:36:35 +0000 Subject: [PATCH 25/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 8dbe6af17..79cc06a97 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -65,7 +65,7 @@ Part of **Inference sys output**: [INFO] create model description success [INFO] get input dynamic gear count success [INFO] create model output success -./output1/2022113_9_31_13_612340 +./output/2022113_9_31_13_612340 [INFO] start to process file:./pic.bin [INFO] model execute success Inference time: 1.359ms -- Gitee From 0e87c36c807e029e5de398b49311220fcb78de48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 06:53:41 +0000 Subject: [PATCH 26/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 64 +++++++++++++++++------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index a05dbb5a3..684c4f3cd 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -1,8 +1,17 @@ -# ATC mnasnet -Platform-Aware Neural Architecture Search for Mobile [[PDF](https://arxiv.org/abs/1807.11626)] +# ATC EDSR -Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le -# 1. original model + +- references: + + ["Enhanced Deep Residual Networks for Single Image Super-Resolution"](https://arxiv.org/abs/1707.02921) + + +- training model: + + [EDSR_ID1263_for_TensorFlow](https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/EDSR_ID1263_for_TensorFlow) + + +# 1. ckpt to pb download **ckpt** and use **ckpt2pb.py** process ckpt to pb. @@ -12,15 +21,15 @@ Password:e3el # 2. pb to om Command: ``` -atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1, 224, 224, 3" --output=./mnasnet --soc_version=Ascend910" +atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1,224,224,3" --output=./mnasnet --soc_version=Ascend910" ``` -[Pb](https://pan.baidu.com/s/1fUGFDZxi-6iit56PGN7sKg) -Password:qcvn +[Pb](https://pan.baidu.com/s/1YhB_1zjYb2dz_h8P_kIGUQ) +Password:m6mx -[OM](https://pan.baidu.com/s/1Z6IqgDpjC3h4sqhcX9ej8g) -Password:vghg +[OM](https://pan.baidu.com/s/1mKV8wkUBz3KiF8hpxUh9mA) +Password:zdo1 -# 3. compile masame +# 3. compile msame Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** Compile masame command: @@ -36,11 +45,10 @@ cd $HOME/AscendProjects/tools/msame/ # 4. inference Inference command: ```bash -cd /root/msame/out -batchSize=64 -model_path=/home/HwHiAiUser/AscendProjects/SparseNet/freezed_SparseNet_batchSize_${batchSize}.om -input_path=/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_${batchSize} -output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output +cd $HOME/AscendProjects/tools/msame/out +model_path=/home/HwHiAiUser/AscendProjects/MnasNet/mnasnet.om +input_path=/home/HwHiAiUser/AscendProjects/MnasNet/pic.bin +output_path=/home/HwHiAiUser/AscendProjects/MnasNet/output ./msame --model ${model_path} --input ${input_path} --output ${output_path} --outfmt TXT ``` @@ -48,16 +56,34 @@ output_path=/home/HwHiAiUser/AscendProjects/SparseNet/output Part of **Inference sys output**: ```bash +[INFO] acl init success +[INFO] open device 0 success +[INFO] create context success +[INFO] create stream success +[INFO] get run mode success +[INFO] load model ./mnasnet.om success +[INFO] create model description success +[INFO] get input dynamic gear count success +[INFO] create model output success +./output/2022113_9_31_13_612340 +[INFO] start to process file:./pic.bin +[INFO] model execute success +Inference time: 1.359ms [INFO] get max dynamic batch size success [INFO] output data success +Inference average time: 1.359000 ms [INFO] destroy model input success -[INFO] start to process file:/home/HwHiAiUser/AscendProjects/SparseNet/test_bin_batchSize_64/110_batch_6976_7040.bin -[INFO] model execute success -Inference time: 235.143ms +[INFO] unload model success, model Id is 1 +[INFO] Execute sample success +[INFO] end to destroy stream +[INFO] end to destroy context +[INFO] end to reset device is 0 +[INFO] end to finalize acl + ``` Part of **Inference sys output**: ```bash - +0.000629902 0.000514507 0.000611782 0.000699043 0.000445127 0.00120354 0.00102234 0.00104713 0.0011034 0.000992775 0.000550747 0.00101948 0.00100136 0.000835419 0.000398874 0.000741005 0.000406742 0.00107861 ``` -- Gitee From 511884ed74c88d0353e0d6faec5f2d3d7d1383d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 07:18:09 +0000 Subject: [PATCH 27/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 38 +++++++++++------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index 684c4f3cd..f67ec84d3 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -15,19 +15,19 @@ download **ckpt** and use **ckpt2pb.py** process ckpt to pb. -[ckpt](https://pan.baidu.com/s/1-E3SQAxShCYcIVdkxbg19w) -Password:e3el +[ckpt](https://pan.baidu.com/s/17vlOrwXbygdce8l8OHErCA) +Password:x0j4 # 2. pb to om Command: ``` -atc --model=./mnasnet.pb --framework=3 --input_shape="input1:1,224,224,3" --output=./mnasnet --soc_version=Ascend910" +atc --model=./edsr.pb --framework=3 --input_shape="LR:1,48,48,3" --output=./edsr --soc_version=Ascend310 ``` -[Pb](https://pan.baidu.com/s/1YhB_1zjYb2dz_h8P_kIGUQ) -Password:m6mx +[Pb](https://pan.baidu.com/s/1vxU_Q3qorOlPvDJYQ9tTsw) +Password:1wbo -[OM](https://pan.baidu.com/s/1mKV8wkUBz3KiF8hpxUh9mA) -Password:zdo1 +[OM](https://pan.baidu.com/s/1QeQSRdckigMAbBRnXooRJA) +Password:djqe # 3. compile msame Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** @@ -46,9 +46,9 @@ cd $HOME/AscendProjects/tools/msame/ Inference command: ```bash cd $HOME/AscendProjects/tools/msame/out -model_path=/home/HwHiAiUser/AscendProjects/MnasNet/mnasnet.om -input_path=/home/HwHiAiUser/AscendProjects/MnasNet/pic.bin -output_path=/home/HwHiAiUser/AscendProjects/MnasNet/output +model_path=/home/HwHiAiUser/AscendProjects/EDSR/edsr.om +input_path=/home/HwHiAiUser/AscendProjects/EDSR/testpic.bin +output_path=/home/HwHiAiUser/AscendProjects/EDSR/output ./msame --model ${model_path} --input ${input_path} --output ${output_path} --outfmt TXT ``` @@ -61,17 +61,17 @@ Part of **Inference sys output**: [INFO] create context success [INFO] create stream success [INFO] get run mode success -[INFO] load model ./mnasnet.om success +[INFO] load model ./edsr.om success [INFO] create model description success [INFO] get input dynamic gear count success [INFO] create model output success -./output/2022113_9_31_13_612340 -[INFO] start to process file:./pic.bin +./output/2022113_15_10_1_472972 +[INFO] start to process file:./testpic.bin [INFO] model execute success -Inference time: 1.359ms +Inference time: 20.962ms [INFO] get max dynamic batch size success [INFO] output data success -Inference average time: 1.359000 ms +Inference average time: 20.962000 ms [INFO] destroy model input success [INFO] unload model success, model Id is 1 [INFO] Execute sample success @@ -79,11 +79,9 @@ Inference average time: 1.359000 ms [INFO] end to destroy context [INFO] end to reset device is 0 [INFO] end to finalize acl - ``` +[Inference Result](https://pan.baidu.com/s/1PrIrKap_V0C_qe_bLNC7bA) +Password:y2ic + -Part of **Inference sys output**: -```bash -0.000629902 0.000514507 0.000611782 0.000699043 0.000445127 0.00120354 0.00102234 0.00104713 0.0011034 0.000992775 0.000550747 0.00101948 0.00100136 0.000835419 0.000398874 0.000741005 0.000406742 0.00107861 -``` -- Gitee From 1f7c35e473d58b7fc557068166e0eda615691359 Mon Sep 17 00:00:00 2001 From: zhang-anqi11 <956513066@qq.com> Date: Thu, 3 Nov 2022 15:29:27 +0800 Subject: [PATCH 28/34] edsr readme --- ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py | 118 ++++++ ACL_TensorFlow/contrib/cv/edsr/edsr.py | 157 ++++++++ ACL_TensorFlow/contrib/cv/edsr/run.py | 411 +++++++++++++++++++++ ACL_TensorFlow/contrib/cv/edsr/testpic.bin | Bin 0 -> 27648 bytes 4 files changed, 686 insertions(+) create mode 100644 ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py create mode 100644 ACL_TensorFlow/contrib/cv/edsr/edsr.py create mode 100644 ACL_TensorFlow/contrib/cv/edsr/run.py create mode 100644 ACL_TensorFlow/contrib/cv/edsr/testpic.bin diff --git a/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py b/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py new file mode 100644 index 000000000..e0fd75785 --- /dev/null +++ b/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py @@ -0,0 +1,118 @@ +# Copyright 2017 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import tensorflow as tf +import run +import os +import argparse +from cfg import make_config +#from tensorflow.core.protobuf.rewriter_config_pb2 import RewriterConfig +from tensorflow.python.tools import freeze_graph + +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # gets rid of avx/fma warning + +flags = tf.flags +FLAGS = flags.FLAGS + +## Required parameters +flags.DEFINE_string("result", "result", "The result directory where the model checkpoints will be written.") +flags.DEFINE_string("dataset", "dataset", "dataset path") +flags.DEFINE_string("obs_dir", "obs://edsr/log", "obs result path, not need on gpu and apulis platform") + +## Other parametersresult +flags.DEFINE_float("lr", 0.0001, "The initial learning rate for Adam.") +flags.DEFINE_integer("num_blocks", 32, "number of resBlocks") +flags.DEFINE_integer("num_filters", 256, "number of filters") +flags.DEFINE_boolean("from_scrach", True, "train from scrach") +flags.DEFINE_integer("scale", 2, "Upscale an image with desired scale") +flags.DEFINE_integer("batch_size", 16, "batch size for one NPU") +flags.DEFINE_integer("train_steps", 100, "total epochs for training") +flags.DEFINE_integer("save_step", 5, "epochs for saving checkpoint") +flags.DEFINE_integer("decay_step", 500, "update the learning_rate value every decay_steps times") +flags.DEFINE_float("decay_rate", 0.9, "momentum used in optimizer") +flags.DEFINE_string("resume_path", None, "checkpoint path") +flags.DEFINE_string("chip", "npu", "Run on which chip, (npu or gpu or cpu)") +flags.DEFINE_string("platform", "apulis", + "Run on apulis/modelarts platform. Modelarts Platform has some extra data copy operations") + +## The following params only useful on NPU chip mode +flags.DEFINE_boolean("npu_dump_data", False, "dump data for precision or not") +flags.DEFINE_boolean("npu_dump_graph", False, "dump graph or not") +flags.DEFINE_boolean("npu_profiling", False, "profiling for performance or not") +flags.DEFINE_boolean("npu_auto_tune", False, "auto tune or not. And you must set tune_bank_path param.") + +checkpoint = "./model/x2edsr_ckpt" + +if __name__ == "__main__": + + # INIT + scale = FLAGS.scale + meanbgr = [103.1545782, 111.561547, 114.35629928] + + # Set checkpoint paths for different scales and models + ckpt_path = "" + if scale == 2: + ckpt_path = os.path.join(FLAGS.result, "x2") + elif scale == 3: + ckpt_path = os.path.join(FLAGS.result, "x3") + elif scale == 4: + ckpt_path = os.path.join(FLAGS.result, "x3") + else: + print("No checkpoint directory. Choose scale 2, 3 or 4. Or add checkpoint directory for this scale.") + exit() + + config = make_config(FLAGS) + # Create run instance + run = run.run(config, ckpt_path, FLAGS.scale, FLAGS.batch_size, FLAGS.train_steps, FLAGS.num_blocks, + FLAGS.num_filters, FLAGS.lr, FLAGS.from_scrach, meanbgr) + + + tf.reset_default_graph() + LR = tf.placeholder(tf.float32, shape=[None, 48, 48, 3], name="LR") + out = run.test_model(LR) + #out_nchw = tf.identity(out, name='out_nchw') + with tf.Session(config=config) as sess: + + graph_def = tf.get_default_graph().as_graph_def(add_shapes=True) + node_list = [n.name for n in graph_def.node] + for node in node_list: + print("node_name", node) + tf.train.write_graph(sess.graph_def, './pb_model', 'model.pb') + freeze_graph.freeze_graph( + input_graph='./pb_model/model.pb', + input_saver='', + input_binary=False, + input_checkpoint=checkpoint, + output_node_names='NCHW_output', + restore_op_name='save/restore_all', + filename_tensor_name='save/Const:0', + output_graph='./pb_model/edsr.pb', + clear_devices=False, + initializer_nodes='') + print("done") \ No newline at end of file diff --git a/ACL_TensorFlow/contrib/cv/edsr/edsr.py b/ACL_TensorFlow/contrib/cv/edsr/edsr.py new file mode 100644 index 000000000..510b6a849 --- /dev/null +++ b/ACL_TensorFlow/contrib/cv/edsr/edsr.py @@ -0,0 +1,157 @@ +# Copyright 2017 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from __future__ import print_function + +import cv2 +import tensorflow as tf +import numpy as np +import os + +class Edsr: + + def __init__(self, B, F, scale): + self.B = B + self.F = F + self.scale = scale + self.global_step = tf.placeholder(tf.int32, shape=[], name="global_step") + self.scaling_factor = 0.1 + self.bias_initializer = tf.constant_initializer(value=0.0) + self.PS = 3 * (scale*scale) #channels x scale^2 + self.xavier = tf.contrib.layers.xavier_initializer() + + # -- Filters & Biases -- + self.resFilters = list() + self.resBiases = list() + + for i in range(0, B*2): + self.resFilters.append( tf.get_variable("resFilter%d" % (i), shape=[3,3,F,F], initializer=self.xavier)) + self.resBiases.append(tf.get_variable(name="resBias%d" % (i), shape=[F], initializer=self.bias_initializer)) + + self.filter_one = tf.get_variable("resFilter_one", shape=[3,3,3,F], initializer=self.xavier) + self.filter_two = tf.get_variable("resFilter_two", shape=[3,3,F,F], initializer=self.xavier) + self.filter_three = tf.get_variable("resFilter_three", shape=[3,3,F,self.PS], initializer=self.xavier) + + self.bias_one = tf.get_variable(shape=[F], initializer=self.bias_initializer, name="BiasOne") + self.bias_two = tf.get_variable(shape=[F], initializer=self.bias_initializer, name="BiasTwo") + self.bias_three = tf.get_variable(shape=[self.PS], initializer=self.bias_initializer, name="BiasThree") + + + def model(self, x, y, lr): + """ + Implementation of EDSR: https://arxiv.org/abs/1707.02921. + """ + + # -- Model architecture -- + + # first conv + x = tf.nn.conv2d(x, filter=self.filter_one, strides=[1, 1, 1, 1], padding='SAME') + x = x + self.bias_one + out1 = tf.identity(x) + + # all residual blocks + for i in range(self.B): + x = self.resBlock(x, (i*2)) + + # last conv + x = tf.nn.conv2d(x, filter=self.filter_two, strides=[1, 1, 1, 1], padding='SAME') + x = x + self.bias_two + x = x + out1 + + # upsample via sub-pixel, equivalent to depth to space + x = tf.nn.conv2d(x, filter=self.filter_three, strides=[1, 1, 1, 1], padding='SAME') + x = x + self.bias_three + out = tf.nn.depth_to_space(x, self.scale, data_format='NHWC', name="NHWC_output") + + # -- -- + + # some outputs + out_nchw = tf.transpose(out, [0, 3, 1, 2], name="NCHW_output") + psnr = tf.image.psnr(out, y, max_val=255.0) + loss = tf.losses.absolute_difference(out, y) #L1 + ssim = tf.image.ssim(out, y, max_val=255.0) + + # (decaying) learning rate + lr = tf.train.exponential_decay(lr, + self.global_step, + decay_steps=15000, + decay_rate=0.95, + staircase=True) + # gradient clipping + optimizer = tf.train.AdamOptimizer(learning_rate=lr, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam') + gradients, variables = zip(*optimizer.compute_gradients(loss)) + gradients, _ = tf.clip_by_global_norm(gradients, 5.0) + train_op = optimizer.apply_gradients(zip(gradients, variables)) + + return out, loss, train_op, psnr, ssim, lr + + def model_pb(self, x): + """ + Implementation of EDSR: https://arxiv.org/abs/1707.02921. + """ + + # -- Model architecture -- + + # first conv + x = tf.nn.conv2d(x, filter=self.filter_one, strides=[1, 1, 1, 1], padding='SAME') + x = x + self.bias_one + out1 = tf.identity(x) + + # all residual blocks + for i in range(self.B): + x = self.resBlock(x, (i*2)) + + # last conv + x = tf.nn.conv2d(x, filter=self.filter_two, strides=[1, 1, 1, 1], padding='SAME') + x = x + self.bias_two + x = x + out1 + + # upsample via sub-pixel, equivalent to depth to space + x = tf.nn.conv2d(x, filter=self.filter_three, strides=[1, 1, 1, 1], padding='SAME') + x = x + self.bias_three + out = tf.nn.depth_to_space(x, self.scale, data_format='NHWC', name="NHWC_output") + + # -- -- + + # some outputs + out_nchw = tf.transpose(out, [0, 3, 1, 2], name="NCHW_output") + + return out_nchw + + + def resBlock(self, inpt, f_nr): + x = tf.nn.conv2d(inpt, filter=self.resFilters[f_nr], strides=[1, 1, 1, 1], padding='SAME') + x = x + self.resBiases[f_nr] + x = tf.nn.relu(x) + + x = tf.nn.conv2d(x, filter=self.resFilters[f_nr+1], strides=[1, 1, 1, 1], padding='SAME') + x = x + self.resBiases[f_nr+1] + x = x * self.scaling_factor + + return inpt + x \ No newline at end of file diff --git a/ACL_TensorFlow/contrib/cv/edsr/run.py b/ACL_TensorFlow/contrib/cv/edsr/run.py new file mode 100644 index 000000000..2c7434f31 --- /dev/null +++ b/ACL_TensorFlow/contrib/cv/edsr/run.py @@ -0,0 +1,411 @@ +# Copyright 2017 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import tensorflow as tf +import os +import cv2 +import numpy as np +import math +import data_utils +import edsr +from tqdm import tqdm +from tensorflow.python.tools import freeze_graph +from tensorflow.python.tools import optimize_for_inference_lib +from tensorflow.tools.graph_transforms import TransformGraph + +class run: + def __init__(self, config, ckpt_path, scale, batch, epochs, B, F, lr, load_flag, meanBGR): + self.config = config + self.ckpt_path = ckpt_path + self.scale = scale + self.batch = batch + self.epochs = epochs + self.B = B + self.F = F + self.lr = lr + self.load_flag = load_flag + self.mean = meanBGR + + + def test_model(self, x): + + # Edsr model + print("\nRunning EDSR.") + edsrObj = edsr.Edsr(self.B, self.F, self.scale) + out = edsrObj.model_pb(x) + + + def train(self, imagefolder, validfolder): + + # Create training dataset + train_image_paths = data_utils.getpaths(imagefolder) + train_dataset = tf.data.Dataset.from_generator(generator=data_utils.make_dataset, + output_types=(tf.float32, tf.float32), + output_shapes=(tf.TensorShape([None, None, 3]), tf.TensorShape([None, None, 3])), + args=[train_image_paths, self.scale, self.mean]) + train_dataset = train_dataset.padded_batch(self.batch, padded_shapes=([None, None, 3],[None, None, 3])) + + # Create validation dataset + val_image_paths = data_utils.getpaths(validfolder) + val_dataset = tf.data.Dataset.from_generator(generator=data_utils.make_val_dataset, + output_types=(tf.float32, tf.float32), + output_shapes=(tf.TensorShape([None, None, 3]), tf.TensorShape([None, None, 3])), + args=[val_image_paths, self.scale, self.mean]) + val_dataset = val_dataset.padded_batch(1, padded_shapes=([None, None, 3],[None, None, 3])) + + # Make the iterator and its initializers + train_val_iterator = tf.data.Iterator.from_structure(train_dataset.output_types, train_dataset.output_shapes) + train_initializer = train_val_iterator.make_initializer(train_dataset) + val_initializer = train_val_iterator.make_initializer(val_dataset) + + handle = tf.placeholder(tf.string, shape=[]) + iterator = tf.data.Iterator.from_string_handle(handle, train_dataset.output_types, train_dataset.output_shapes) + LR, HR = iterator.get_next() + + # Edsr model + print("\nRunning EDSR.") + edsrObj = edsr.Edsr(self.B, self.F, self.scale) + out, loss, train_op, psnr, ssim, lr = edsrObj.model(x=LR, y=HR, lr=self.lr) + + # -- Training session + with tf.Session(config=self.config) as sess: + + train_writer = tf.summary.FileWriter('./logs/train', sess.graph) + sess.run(tf.global_variables_initializer()) + + saver = tf.train.Saver() + + # Create check points directory if not existed, and load previous model if specified. + # if not os.path.exists(self.ckpt_path): + # os.makedirs(self.ckpt_path) + # else: + # if os.path.isfile(self.ckpt_path + "edsr_ckpt" + ".meta"): + # if self.load_flag: + # saver.restore(sess, tf.train.latest_checkpoint(self.ckpt_path)) + # print("\nLoaded checkpoint.") + # if not self.load_flag: + # print("No checkpoint loaded. Training from scratch.") + # else: + # if os.path.isfile("./CKPT_dir/x2/" + "edsr_ckpt" + ".meta"): + # saver.restore(sess, tf.train.latest_checkpoint("./CKPT_dir/x2/")) + # print("Previous checkpoint does not exists. Will load model from x2") + # else: + # print("No checkpoint loaded. Training from scratch.") + + global_step = 0 + tf.convert_to_tensor(global_step) + + train_val_handle = sess.run(train_val_iterator.string_handle()) + + print("Training...") + for e in range(1, self.epochs+1): + + sess.run(train_initializer) + step, train_loss = 0, 0 + + try: + for _ in tqdm(range(len(train_image_paths))): + o, l, t, l_rate = sess.run([out, loss, train_op, lr], feed_dict={handle:train_val_handle, + edsrObj.global_step: global_step}) + train_loss += l + step += 1 + global_step += 1 + if step % 1000 == 0: + save_path = saver.save(sess, self.ckpt_path + "edsr_ckpt") + print("Step nr: [{}/{}] - Loss: {:.5f} - Lr: {:.7f}".format(step, "?", float(train_loss/step), l_rate)) + save_path = saver.save(sess, self.ckpt_path + "edsr_ckpt") + print("Step nr: [{}/{}] - Loss: {:.5f} - Lr: {:.7f}".format(step, "?", float(train_loss / step), + l_rate)) + except tf.errors.OutOfRangeError: + pass + if e % 5 == 0: + # Perform end-of-epoch calculations here. + sess.run(val_initializer) + tot_val_psnr, tot_val_ssim, val_im_cntr = 0, 0, 0 + try: + for _ in tqdm(range(len(val_image_paths))): + val_psnr, val_ssim = sess.run([psnr, ssim], feed_dict={handle:train_val_handle}) + + tot_val_psnr += val_psnr[0] + tot_val_ssim += val_ssim[0] + val_im_cntr += 1 + except tf.errors.OutOfRangeError: + pass + + print("Epoch nr: [{}/{}] - Loss: {:.5f} - val PSNR: {:.3f} - val SSIM: {:.3f}\n".format(e, + self.epochs, + float(train_loss/step), + (tot_val_psnr / val_im_cntr), + (tot_val_ssim / val_im_cntr))) + saver.save(sess, os.path.join(self.ckpt_path, "model")) + + print("Training finished.") + train_writer.close() + + def upscale(self, path): + """ + Upscales an image via model. This loads a checkpoint, not a .pb file. + """ + fullimg = cv2.imread(path, 3) + + floatimg = fullimg.astype(np.float32) - self.mean + + LR_input_ = floatimg.reshape(1, floatimg.shape[0], floatimg.shape[1], 3) + + with tf.Session(config=self.config) as sess: + print("\nUpscale image by a factor of {}:\n".format(self.scale)) + # load the model + ckpt_name = self.ckpt_path + "edsr_ckpt" + ".meta" + saver = tf.train.import_meta_graph(ckpt_name) + saver.restore(sess, tf.train.latest_checkpoint(self.ckpt_path)) + graph_def = sess.graph + LR_tensor = graph_def.get_tensor_by_name("IteratorGetNext:0") + HR_tensor = graph_def.get_tensor_by_name("NHWC_output:0") + + output = sess.run(HR_tensor, feed_dict={LR_tensor: LR_input_}) + + Y = output[0] + HR_image = (Y + self.mean).clip(min=0, max=255) + HR_image = (HR_image).astype(np.uint8) + + bicubic_image = cv2.resize(fullimg, None, fx=self.scale, fy=self.scale, interpolation=cv2.INTER_CUBIC) + + cv2.imshow('Original image', fullimg) + cv2.imshow('EDSR upscaled image', HR_image) + cv2.imshow('Bicubic upscaled image', bicubic_image) + cv2.waitKey(0) + + sess.close() + + def test(self, path): + """ + Test single image and calculate psnr. This loads a checkpoint, not a .pb file. + """ + fullimg = cv2.imread(path, 3) + width = fullimg.shape[0] + height = fullimg.shape[1] + + cropped = fullimg[0:(width - (width % self.scale)), 0:(height - (height % self.scale)), :] + img = cv2.resize(cropped, None, fx=1. / self.scale, fy=1. / self.scale, interpolation=cv2.INTER_CUBIC) + floatimg = img.astype(np.float32) - self.mean + + LR_input_ = floatimg.reshape(1, floatimg.shape[0], floatimg.shape[1], 3) + + with tf.Session(config=self.config) as sess: + print("\nTest model with psnr:\n") + # load the model + ckpt_name = self.ckpt_path + "edsr_ckpt" + ".meta" + saver = tf.train.import_meta_graph(ckpt_name) + saver.restore(sess, tf.train.latest_checkpoint(self.ckpt_path)) + graph_def = sess.graph + LR_tensor = graph_def.get_tensor_by_name("IteratorGetNext:0") + HR_tensor = graph_def.get_tensor_by_name("NHWC_output:0") + + output = sess.run(HR_tensor, feed_dict={LR_tensor: LR_input_}) + + Y = output[0] + HR_image = (Y + self.mean).clip(min=0, max=255) + HR_image = (HR_image).astype(np.uint8) + + bicubic_image = cv2.resize(img, None, fx=self.scale, fy=self.scale, interpolation=cv2.INTER_CUBIC) + + print(np.amax(Y), np.amax(LR_input_)) + print("PSNR of EDSR upscaled image: {}".format(self.psnr(cropped, HR_image))) + print("PSNR of bicubic upscaled image: {}".format(self.psnr(cropped, bicubic_image))) + + cv2.imshow('Original image', fullimg) + cv2.imshow('EDSR upscaled image', HR_image) + cv2.imshow('Bicubic upscaled image', bicubic_image) + + cv2.imwrite("./images/EdsrOutput.png", HR_image) + cv2.imwrite("./images/BicubicOutput.png", bicubic_image) + cv2.imwrite("./images/original.png", fullimg) + cv2.imwrite("./images/input.png", img) + + cv2.waitKey(0) + cv2.destroyAllWindows() + + sess.close() + + def load_pb(self, path_to_pb): + with tf.gfile.GFile(path_to_pb, "rb") as f: + graph_def = tf.GraphDef() + graph_def.ParseFromString(f.read()) + with tf.Graph().as_default() as graph: + tf.import_graph_def(graph_def, name='') + return graph + + def testFromPb(self, path): + """ + Test single image and calculate psnr. This loads a .pb file. + """ + # Read model + pbPath = "./models/EDSR_x{}.pb".format(self.scale) + + # Get graph + graph = self.load_pb(pbPath) + + fullimg = cv2.imread(path, 3) + width = fullimg.shape[0] + height = fullimg.shape[1] + + cropped = fullimg[0:(width - (width % self.scale)), 0:(height - (height % self.scale)), :] + img = cv2.resize(cropped, None, fx=1. / self.scale, fy=1. / self.scale, interpolation=cv2.INTER_CUBIC) + floatimg = img.astype(np.float32) - self.mean + + LR_input_ = floatimg.reshape(1, floatimg.shape[0], floatimg.shape[1], 3) + + LR_tensor = graph.get_tensor_by_name("IteratorGetNext:0") + HR_tensor = graph.get_tensor_by_name("NHWC_output:0") + + with tf.Session(graph=graph) as sess: + print("Loading pb...") + output = sess.run(HR_tensor, feed_dict={LR_tensor: LR_input_}) + Y = output[0] + HR_image = (Y + self.mean).clip(min=0, max=255) + HR_image = (HR_image).astype(np.uint8) + + bicubic_image = cv2.resize(img, None, fx=self.scale, fy=self.scale, interpolation=cv2.INTER_CUBIC) + + print(np.amax(Y), np.amax(LR_input_)) + print("PSNR of EDSR upscaled image: {}".format(self.psnr(cropped, HR_image))) + print("PSNR of bicubic upscaled image: {}".format(self.psnr(cropped, bicubic_image))) + + cv2.imshow('Original image', fullimg) + cv2.imshow('EDSR upscaled image', HR_image) + cv2.imshow('Bicubic upscaled image', bicubic_image) + + cv2.imwrite("./images/EdsrOutput.png", HR_image) + cv2.imwrite("./images/BicubicOutput.png", bicubic_image) + cv2.imwrite("./images/original.png", fullimg) + cv2.imwrite("./images/input.png", img) + + cv2.waitKey(0) + cv2.destroyAllWindows() + print("Done.") + + sess.close() + + def upscaleFromPb(self, path): + """ + Upscale single image by desired model. This loads a .pb file. + """ + # Read model + pbPath = "./models/EDSR_x{}.pb".format(self.scale) + + # Get graph + graph = self.load_pb(pbPath) + + fullimg = cv2.imread(path, 3) + floatimg = fullimg.astype(np.float32) - self.mean + LR_input_ = floatimg.reshape(1, floatimg.shape[0], floatimg.shape[1], 3) + + LR_tensor = graph.get_tensor_by_name("IteratorGetNext:0") + HR_tensor = graph.get_tensor_by_name("NHWC_output:0") + + with tf.Session(graph=graph) as sess: + print("Loading pb...") + output = sess.run(HR_tensor, feed_dict={LR_tensor: LR_input_}) + Y = output[0] + HR_image = (Y + self.mean).clip(min=0, max=255) + HR_image = (HR_image).astype(np.uint8) + + bicubic_image = cv2.resize(fullimg, None, fx=self.scale, fy=self.scale, interpolation=cv2.INTER_CUBIC) + + cv2.imshow('Original image', fullimg) + cv2.imshow('EDSR upscaled image', HR_image) + cv2.imshow('Bicubic upscaled image', bicubic_image) + + cv2.waitKey(0) + cv2.destroyAllWindows() + + sess.close() + + def export(self, quant): + print("Exporting model...") + + export_dir = "./models/" + if not os.path.exists(export_dir): + os.makedirs(export_dir) + + export_file = "EDSRorig_x{}.pb".format(self.scale) + + graph = tf.get_default_graph() + with graph.as_default(): + with tf.Session(config=self.config) as sess: + + ### Restore checkpoint + ckpt_name = self.ckpt_path + "edsr_ckpt" + ".meta" + saver = tf.train.import_meta_graph(ckpt_name) + saver.restore(sess, tf.train.latest_checkpoint(self.ckpt_path)) + + # Return a serialized GraphDef representation of this graph + graph_def = sess.graph.as_graph_def() + + # All variables to constants + graph_def = tf.graph_util.convert_variables_to_constants(sess, graph_def, ['NCHW_output']) + + # Optimize for inference + graph_def = optimize_for_inference_lib.optimize_for_inference(graph_def, ["IteratorGetNext"], + ["NCHW_output"], # ["NHWC_output"], + tf.float32.as_datatype_enum) + + # Implement certain file shrinking transforms. 2 is recommended. + transforms = ["sort_by_execution_order"] + if quant == 1: + print("Rounding weights for export.") + transforms = ["sort_by_execution_order", "round_weights"] + export_file = "EDSR_x{}_q1.pb".format(self.scale) + if quant == 2: + print("Quantizing for export.") + transforms = ["sort_by_execution_order", "quantize_weights"] + export_file = "EDSR_x{}.pb".format(self.scale) + if quant == 3: + print("Round weights and quantizing for export.") + transforms = ["sort_by_execution_order", "round_weights", "quantize_weights"] + export_file = "EDSR_x{}_q3.pb".format(self.scale) + + graph_def = TransformGraph(graph_def, ["IteratorGetNext"], + ["NCHW_output"], + transforms) + + print("Exported file = {}".format(export_dir+export_file)) + with tf.gfile.GFile(export_dir + export_file, 'wb') as f: + f.write(graph_def.SerializeToString()) + + tf.train.write_graph(graph_def, ".", 'train.pbtxt') + + sess.close() + + def psnr(self, img1, img2): + mse = np.mean( (img1 - img2) ** 2 ) + if mse == 0: + return 100 + PIXEL_MAX = 255.0 + return (20 * math.log10(PIXEL_MAX / math.sqrt(mse))) \ No newline at end of file diff --git a/ACL_TensorFlow/contrib/cv/edsr/testpic.bin b/ACL_TensorFlow/contrib/cv/edsr/testpic.bin new file mode 100644 index 0000000000000000000000000000000000000000..b7277b3b9501c47dbd8a30451a87a86d1ed18efa GIT binary patch literal 27648 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 Date: Thu, 3 Nov 2022 07:24:05 +0000 Subject: [PATCH 29/34] update ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py b/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py index e0fd75785..08397e6a8 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py +++ b/ACL_TensorFlow/contrib/cv/edsr/ckpt2pb.py @@ -67,7 +67,7 @@ flags.DEFINE_boolean("npu_dump_graph", False, "dump graph or not") flags.DEFINE_boolean("npu_profiling", False, "profiling for performance or not") flags.DEFINE_boolean("npu_auto_tune", False, "auto tune or not. And you must set tune_bank_path param.") -checkpoint = "./model/x2edsr_ckpt" +checkpoint = "./model/edsr_ckpt" if __name__ == "__main__": -- Gitee From 09a9f13a5b2b8663f3a0198cc2924e4b55fc6f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 08:20:59 +0000 Subject: [PATCH 30/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index f67ec84d3..5ca8996af 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -15,6 +15,8 @@ download **ckpt** and use **ckpt2pb.py** process ckpt to pb. +Note:Before the model transformation, the run.py and edsr.py files in the training code need to be replaced with those in the current directory. + [ckpt](https://pan.baidu.com/s/17vlOrwXbygdce8l8OHErCA) Password:x0j4 -- Gitee From d9a07f2679c9e7379e1f818539a10151eb8138b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 08:22:33 +0000 Subject: [PATCH 31/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index 5ca8996af..13fbdcbdc 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -15,7 +15,7 @@ download **ckpt** and use **ckpt2pb.py** process ckpt to pb. -Note:Before the model transformation, the run.py and edsr.py files in the training code need to be replaced with those in the current directory. +Note:Before the model transformation, the **run.py** and **edsr.py** files in the training code need to be replaced with those in the current directory. [ckpt](https://pan.baidu.com/s/17vlOrwXbygdce8l8OHErCA) Password:x0j4 -- Gitee From 4f46457b9347e51917795398cd659d58979749c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 08:23:57 +0000 Subject: [PATCH 32/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index 13fbdcbdc..f9b60edee 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -15,7 +15,7 @@ download **ckpt** and use **ckpt2pb.py** process ckpt to pb. -Note:Before the model transformation, the **run.py** and **edsr.py** files in the training code need to be replaced with those in the current directory. + **Note** :Before the model transformation, the **run.py** and **edsr.py** files in the training code need to be replaced with those in the current directory. [ckpt](https://pan.baidu.com/s/17vlOrwXbygdce8l8OHErCA) Password:x0j4 -- Gitee From 8df2d564aef346ac9cce5e05a3d85a4d4d92de8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 08:24:51 +0000 Subject: [PATCH 33/34] update ACL_TensorFlow/contrib/cv/edsr/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/edsr/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/edsr/README.md b/ACL_TensorFlow/contrib/cv/edsr/README.md index f9b60edee..2d70a935f 100644 --- a/ACL_TensorFlow/contrib/cv/edsr/README.md +++ b/ACL_TensorFlow/contrib/cv/edsr/README.md @@ -34,7 +34,7 @@ Password:djqe # 3. compile msame Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** -Compile masame command: +Compile msame command: ```bash . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh export DDK_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/latest -- Gitee From cfd922b4a50b3ae4eb9da2f6e2b6b310e79a0930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=89=E7=90=AA?= <956513066@qq.com> Date: Thu, 3 Nov 2022 08:25:17 +0000 Subject: [PATCH 34/34] update ACL_TensorFlow/contrib/cv/mnasnet/README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张安琪 <956513066@qq.com> --- ACL_TensorFlow/contrib/cv/mnasnet/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ACL_TensorFlow/contrib/cv/mnasnet/README.md b/ACL_TensorFlow/contrib/cv/mnasnet/README.md index 79cc06a97..d1fc92a50 100644 --- a/ACL_TensorFlow/contrib/cv/mnasnet/README.md +++ b/ACL_TensorFlow/contrib/cv/mnasnet/README.md @@ -32,7 +32,7 @@ Password:zdo1 # 3. compile msame Reference to https://gitee.com/ascend/tools/tree/master/msame, compile **msame** -Compile masame command: +Compile msame command: ```bash . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh export DDK_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/latest -- Gitee