26f6c70e8b193e567a598fac8eafd9231a6c0964
[platform/core/ml/nnfw.git] / tools / nnpackage_tool / model2nnpkg / model2nnpkg.sh
1 #!/bin/bash
2
3 set -eu
4
5 progname=$(basename "${BASH_SOURCE[0]}")
6 outdir="."
7 name=""
8
9 usage() {
10   echo "Usage: $progname [options] modelfile"
11   echo "Convert modelfile (either tflite or circle) to nnpackage."
12   echo ""
13   echo "Options:"
14   echo "    -h   show this help"
15   echo "    -o   set nnpackage output directory (default=$outdir)"
16   echo "    -p   set nnpackage output name (default=[modelfile name])"
17   echo ""
18   echo "Examples:"
19   echo "    $progname add.tflite                  => create nnpackage 'add' in $outdir/"
20   echo "    $progname -o out add.tflite           => create nnpackage 'add' in out/"
21   echo "    $progname -o out -p addpkg add.tflite => create nnpackage 'addpkg' in out/"
22   exit 1
23 }
24
25 if [ $# -eq 0 ]; then
26   echo "For help, type $progname -h"
27   exit 1
28 fi
29
30 while getopts "ho:p:" OPTION; do
31 case "${OPTION}" in
32     h) usage;;
33     o) outdir=$OPTARG;;
34     p) name=$OPTARG;;
35     ?) exit 1;;
36 esac
37 done
38
39 shift $((OPTIND-1))
40
41 if [ $# -ne 1 ]; then
42   echo "error: wrong argument (no argument or too many arguments)."
43   echo "For help, type $progname -h"
44   exit 1
45 fi
46
47 modelfile=$(basename "$1")
48
49 if [[ "$modelfile" != *.* ]]; then
50   echo "error: modelfile does not have extension."
51   echo "Please provide extension so that $progname can identify what type of model you use."
52   exit 1
53 fi
54
55 if [ ! -e $1 ]; then
56   echo "error: "$1" does not exist."
57   exit 1
58 fi
59
60 if [ -z "$name" ]; then
61   name=${modelfile%.*}
62 fi
63 extension=${modelfile##*.}
64
65 echo "Generating nnpackage "$name" in "$outdir""
66 mkdir -p "$outdir"/"$name"/metadata
67 cat > "$outdir"/"$name"/metadata/MANIFEST <<-EOF
68 {
69   "major-version" : "1",
70   "minor-version" : "0",
71   "patch-version" : "0",
72   "models"      : [ "$modelfile" ],
73   "model-types" : [ "$extension" ]
74 }
75 EOF
76 cp "$1" "$outdir"/"$name"