File size: 4,016 Bytes
c18b721
 
9d4d402
 
 
 
c18b721
 
 
 
 
 
60603bc
 
958fcc3
 
4f5d096
 
c18b721
 
 
 
a962639
c18b721
 
 
 
 
 
 
 
 
 
 
 
 
 
9d4d402
c18b721
 
 
 
 
 
 
60603bc
 
 
 
 
3022254
 
 
7b0405b
 
 
3022254
 
 
4f5d096
958fcc3
 
 
 
720d5d2
 
 
c18b721
 
 
 
 
 
 
08633e0
 
c18b721
 
 
 
9d4d402
c18b721
 
 
 
 
 
 
 
 
 
eb26a46
c18b721
9d4d402
c18b721
 
 
 
 
3b27ab8
 
c18b721
 
 
 
 
08633e0
c18b721
 
513b119
 
c18b721
 
 
845b45b
c18b721
 
 
845b45b
 
9d4d402
c18b721
513b119
 
c18b721
 
 
 
3b27ab8
 
c18b721
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#! /usr/bin/env bash

function image_classifier() {
    abcli_image_classifier $@
}

function abcli_image_classifier() {
    local task=$(abcli_unpack_keyword "$1" help)

    if [ "$task" == "help" ] ; then
        abcli_help_line "$abcli_cli_name image_classifier describe object_1" \
            "describe model object_1."
        abcli_help_line "$abcli_cli_name image_classifier install" \
            "install image_classifier."
        abcli_help_line "$abcli_cli_name image_classifier predict object_1 [name_1] [object]" \
            "run image_classifier saved/object model name_1 predict on object_1."
        abcli_help_line "$abcli_cli_name image_classifier save [name_1] [object_1] [force]" \
            "[force] save image_classifier [in object_1] [as name_1]."
        abcli_help_line "$abcli_cli_name image_classifier train object_1" \
            "train image_classifier on data object_1."

        if [ "$(abcli_keyword_is $2 verbose)" == true ] ; then
            python3 -m image_classifier --help
        fi
        return
    fi

    if [[ $(type -t abcli_image_classifier_$task) == "function" ]] ; then
        abcli_image_classifier_$task ${@:2}
        return
    fi

    if [ "$task" == "describe" ] ; then
        local model_object_name="$2"

        abcli_download $model_object_name

        python3 -m image_classifier \
            describe \
            --model_path $abcli_object_root/$model_object_name \
            ${@:3}

        return
    fi

    if [ "$task" == "install" ] ; then
        conda install -y -c anaconda seaborn
        return
    fi

    if [ "$task" == "predict" ] ; then
        abcli_huggingface predict \
            image-classifier \
            $2 \
            $(abcli_clarify_arg "$3" image-classifier) \
            ${@:4}
        return
    fi

    if [ "$task" == "save" ] ; then
        abcli_huggingface save \
            image-classifier \
            $(abcli_clarify_arg "$2" image-classifier) \
            ${@:3}
        return
    fi

    abcli_log_error "-fashion_mnist: image-classifier: $task: command not found."
}

function abcli_image_classifier_predict() {
    local model_object=$(abcli_clarify_object "$1")
    local data_object=$(abcli_clarify_object "$2")

    abcli_download object $model_object
    abcli_download object $data_object

    abcli_log "image_classifier($model_object).predict($data_object)"

    if [ ! -f "$abcli_object_root/$data_object/test_images.pyndarray" ] ; then
        python3 -m image_classifier \
            preprocess \
            --infer_annotation 0 \
            --model_path $abcli_object_root/$model_object \
            --objects $abcli_object_root/$data_object \
            --output_path $abcli_object_root/$data_object \
            --purpose predict \
            ${@:3}
    fi

    cp -v ../$data_object/*.pyndarray .
    cp -v ../$model_object/image_classifier/model/class_names.json .

    python3 -m image_classifier \
        predict \
        --data_path $abcli_object_root/$data_object \
        --model_path $abcli_object_root/$model_object \
        --output_path $abcli_object_path \
        ${@:4}

        abcli_tag set . image_classifier,predict
}

function abcli_image_classifier_train() {
    local data_object=$(abcli_clarify_object "$1" $abcli_object_name)

    abcli_download object $data_object

    local options=$2
    local do_color=$(abcli_option_int "$options" "color" 0)
    local do_convnet=$(abcli_option_int "$options" "convnet" 0)
    local do_validate=$(abcli_option_int "$options" "validate" 0)

    local extra_args=""
    if [ "$do_validate" == 1 ] ; then
        local extra_args="--epochs 2"
    fi

    abcli_log "image_classifier.train($data_object): $options"

    python3 -m image_classifier \
        train \
        --color $do_color \
        --convnet $do_convnet \
        --data_path $abcli_object_root/$data_object \
        --model_path $abcli_object_path \
        $extra_args \
        ${@:3}

    abcli_tag set . image_classifier,train
}