From db0e234a39363c7873d83f9114687a3c8d58b375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20B=C3=BCy=C3=BCksolak?= Date: Tue, 8 Oct 2024 15:49:59 +0300 Subject: [PATCH] Default true for scale output --- README.md | 4 ++-- README.pdf | Bin 4323261 -> 4323333 bytes gen-demos-max78000.sh | 2 ++ gen-demos-max78002.sh | 4 +++- izer/commandline.py | 4 ++-- izer/state.py | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7b1f6a49..f2ede89e 100644 --- a/README.md +++ b/README.md @@ -2211,7 +2211,7 @@ The following table describes the most important command line arguments for `ai8 | `--no-unload` | Do not create the `cnn_unload()` function | | | `--no-kat` | Do not generate the `check_output()` function (disable known-answer test) | | | `--no-deduplicate-weights` | Do not deduplicate weights and and bias values | | -| `--scale-output` | Use scales from the checkpoint to recover output range while generating `cnn_unload()` function | | +| `--no-scale-output` | Do not use scales from the checkpoint to recover output range while generating `cnn_unload()` function | | ### YAML Network Description @@ -2333,7 +2333,7 @@ The following keywords are required for each `unload` list item: `width`: Data width (optional, defaults to 8) — either 8 or 32 `write_gap`: Gap between data words (optional, defaults to 0) -When `--scale-output` is specified, scales from the checkpoint file are used to recover the output range. If there is a non-zero scale for the 8 bits output, the output will be scaled and kept in 16 bits. If the scale is zero, the output will be 8 bits. For 32 bits output, the output will be kept in 32 bits always. +When `--no-scale-output` is not specified, scales from the checkpoint file are used to recover the output range. If there is a non-zero scale for the 8 bits output, the output will be scaled and kept in 16 bits. If the scale is zero, the output will be 8 bits. For 32 bits output, the output will be kept in 32 bits always. Example: diff --git a/README.pdf b/README.pdf index ad4d21e1a8cb8632b553b61aae4cf521d66ba6d4..b426a1f14acd6667522948ac3ad39e0e7fade739 100644 GIT binary patch delta 30997 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%0AIZe=2*-B`WV9(mJAUFvXqvo0e?s|x%=e;6vX-T zQRl!Zz~|>n%(?fq9v?^j%x5=YNBw64@ZJNBZ*u&j!$Zyds*`__yKh5F z>U6#FSv~U467ugA1i-cUT-Qw-VmX;d7P|d_<+Yp_nR#sZFENSiin z^?x%0WQHIm;qsZ1eJ%fwyHr5hxwF#c>SvbwmljX#l>pnFNJ75=vmZxwM=EmxDn~yz z-AuYZ@KjU;zD5x6$eOc$|-xG9V<18@0bFz8(doAyAJ~4ArNIcU0Qb}lU zs2KBpg~3fT1~qkc;`q;UaTv(M-Chh@Gg7{GbIg1GYhA29AHJGv0Q_TypsAZYRhhfK z|7+cXVwk&(M4)5cOl3I_LwIMsp9$Uxal86Rstz{Y?hRJ9^;bGGchu~YT9?L6ys>U0(jth_qx+8*)l z`lMP$=3GWzwB(m)?;G{@6C_cb?A|L~f!3QMI)nA$O{m#>;OgXDRPpW~!YtTI1SuM9s^?%dfGO zQ<;_DH>{REzFV(w=s)DtKgw&vj9hmt&q-7r^fbx|*k3G~rWzW{Pj=eYm? diff --git a/gen-demos-max78000.sh b/gen-demos-max78000.sh index 53f82f72..737dfd6f 100755 --- a/gen-demos-max78000.sh +++ b/gen-demos-max78000.sh @@ -15,7 +15,9 @@ python ai8xize.py --test-dir $TARGET --prefix kws20_nas --checkpoint-file traine python izer/add_fake_passthrough.py --input-checkpoint-path trained/ai85-faceid_112-qat-q.pth.tar --output-checkpoint-path trained/ai85-fakepass-faceid_112-qat-q.pth.tar --layer-name fakepass --layer-depth 128 --layer-name-after-pt linear --low-memory-footprint "$@" python ai8xize.py --test-dir $TARGET --prefix faceid_112 --checkpoint-file trained/ai85-fakepass-faceid_112-qat-q.pth.tar --config-file networks/ai85-faceid_112.yaml --fifo $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix cats-dogs --checkpoint-file trained/ai85-catsdogs-qat8-q.pth.tar --config-file networks/cats-dogs-hwc.yaml --fifo --softmax $COMMON_ARGS "$@" +python izer/add_fake_passthrough.py --input-checkpoint-path trained/ai85-camvid-unet-large-q.pth.tar --output-checkpoint-path trained/ai85-camvid-unet-large-fakept-q.pth.tar --layer-name pt --layer-depth 56 --layer-name-after-pt upconv3 "$@" python ai8xize.py --test-dir $TARGET --prefix camvid_unet --checkpoint-file trained/ai85-camvid-unet-large-fakept-q.pth.tar --config-file networks/camvid-unet-large-fakept.yaml $COMMON_ARGS --overlap-data --mlator --no-unload --max-checklines 8192 --new-kernel-loader "$@" +python izer/add_fake_passthrough.py --input-checkpoint-path trained/ai85-aisegment-unet-large-q.pth.tar --output-checkpoint-path trained/ai85-aisegment-unet-large-fakept-q.pth.tar --layer-name pt --layer-depth 56 --layer-name-after-pt upconv3 "$@" python ai8xize.py --test-dir $TARGET --prefix aisegment_unet --checkpoint-file trained/ai85-aisegment-unet-large-fakept-q.pth.tar --config-file networks/aisegment-unet-large-fakept.yaml $COMMON_ARGS --overlap-data --mlator --no-unload --max-checklines 8192 --new-kernel-loader "$@" python ai8xize.py --test-dir $TARGET --prefix svhn_tinierssd --checkpoint-file trained/ai85-svhn-tinierssd-qat8-q.pth.tar --config-file networks/svhn-tinierssd.yaml --overlap-data $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix facedet_tinierssd --checkpoint-file trained/ai85-facedet-tinierssd-qat8-q.pth.tar --config-file networks/ai85-facedet-tinierssd.yaml --sample-input tests/sample_vggface2_facedetection.npy --fifo $COMMON_ARGS "$@" diff --git a/gen-demos-max78002.sh b/gen-demos-max78002.sh index e2ca9801..6a3a4076 100755 --- a/gen-demos-max78002.sh +++ b/gen-demos-max78002.sh @@ -14,12 +14,14 @@ python ai8xize.py --test-dir $TARGET --prefix kws20_v3_1 --checkpoint-file train python ai8xize.py --test-dir $TARGET --prefix kws20_v2_1 --checkpoint-file trained/ai87-kws20_v2-qat8-q.pth.tar --config-file networks/ai87-kws20-v2-hwc.yaml --softmax $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix mobilefacenet-112 --checkpoint-file trained/ai87-mobilefacenet-112-qat-q.pth.tar --config-file networks/ai87-mobilefacenet-112.yaml --fifo $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix cats-dogs --checkpoint-file trained/ai85-catsdogs-qat8-q.pth.tar --config-file networks/cats-dogs-hwc-no-fifo.yaml --softmax $COMMON_ARGS "$@" +python izer/add_fake_passthrough.py --input-checkpoint-path trained/ai85-camvid-unet-large-q.pth.tar --output-checkpoint-path trained/ai85-camvid-unet-large-fakept-q.pth.tar --layer-name pt --layer-depth 56 --layer-name-after-pt upconv3 "$@" python ai8xize.py --test-dir $TARGET --prefix camvid_unet --checkpoint-file trained/ai85-camvid-unet-large-fakept-q.pth.tar --config-file networks/camvid-unet-large-fakept.yaml $COMMON_ARGS --overlap-data --mlator --no-unload --max-checklines 8192 "$@" +python izer/add_fake_passthrough.py --input-checkpoint-path trained/ai85-aisegment-unet-large-q.pth.tar --output-checkpoint-path trained/ai85-aisegment-unet-large-fakept-q.pth.tar --layer-name pt --layer-depth 56 --layer-name-after-pt upconv3 "$@" python ai8xize.py --test-dir $TARGET --prefix aisegment_unet --checkpoint-file trained/ai85-aisegment-unet-large-fakept-q.pth.tar --config-file networks/aisegment-unet-large-fakept.yaml $COMMON_ARGS --overlap-data --mlator --no-unload --max-checklines 8192 "$@" python ai8xize.py --test-dir $TARGET --prefix svhn_tinierssd --checkpoint-file trained/ai85-svhn-tinierssd-qat8-q.pth.tar --config-file networks/svhn-tinierssd.yaml --overlap-data $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix cifar-100-effnet2 --checkpoint-file trained/ai87-cifar100-effnet2-qat8-q.pth.tar --config-file networks/ai87-cifar100-effnet2.yaml --softmax $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix cifar-100-mobilenet-v2-0.75 --checkpoint-file trained/ai87-cifar100-mobilenet-v2-0.75-qat8-q.pth.tar --config-file networks/ai87-cifar100-mobilenet-v2-0.75.yaml --softmax $COMMON_ARGS "$@" -python ai8xize.py --test-dir $TARGET --prefix effnetv2_imagenet --scale-output --softmax --checkpoint-file trained/ai87-imagenet-effnet2-q.pth.tar --config-file networks/ai87-imagenet-effnet2.yaml $COMMON_ARGS "$@" +python ai8xize.py --test-dir $TARGET --prefix effnetv2_imagenet --softmax --checkpoint-file trained/ai87-imagenet-effnet2-q.pth.tar --config-file networks/ai87-imagenet-effnet2.yaml $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix facedet_tinierssd --checkpoint-file trained/ai87-facedet-tinierssd-qat8-q.pth.tar --config-file networks/ai87-facedet-tinierssd.yaml --sample-input tests/sample_vggface2_facedetection.npy $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix pascalvoc_fpndetector --checkpoint-file trained/ai87-pascalvoc-fpndetector-qat8-q.pth.tar --config-file networks/ai87-pascalvoc-fpndetector.yaml --fifo --sample-input tests/sample_pascalvoc_256_320.npy --no-unload $COMMON_ARGS "$@" python ai8xize.py --test-dir $TARGET --prefix kinetics --checkpoint-file trained/ai85-kinetics-qat8-q.pth.tar --config-file networks/ai85-kinetics-actiontcn.yaml --overlap-data --softmax --zero-sram $COMMON_ARGS "$@" diff --git a/izer/commandline.py b/izer/commandline.py index c1677fad..a8b26aff 100644 --- a/izer/commandline.py +++ b/izer/commandline.py @@ -464,7 +464,7 @@ def get_parser() -> argparse.Namespace: help='GitHub repository name for update checking') group.add_argument('--yamllint', metavar='S', default='yamllint', help='name of linter for YAML files (default: yamllint)') - group.add_argument('--scale-output', action='store_true', default=False, + group.add_argument('--no-scale-output', action='store_true', default=False, help="scale output with final layer scale factor (default: false)") args = parser.parse_args() @@ -693,7 +693,7 @@ def set_state(args: argparse.Namespace) -> None: state.rtl_preload_weights = args.rtl_preload_weights state.runtest_filename = args.runtest_filename state.sample_filename = args.sample_filename - state.scale_output = args.scale_output + state.scale_output = not args.no_scale_output state.simple1b = args.simple1b state.sleep = args.deepsleep state.slow_load = args.slow_load diff --git a/izer/state.py b/izer/state.py index 6ec0fbff..3809b4b2 100644 --- a/izer/state.py +++ b/izer/state.py @@ -175,7 +175,7 @@ rtl_preload_weights: bool = False rtl_preload: bool = False runtest_filename: str = '' -scale_output: bool = False +scale_output: bool = True sample_filename: str = '' simple1b: bool = False simulated_sequence: List[Any] = []