Closed FenixFly closed 10 months ago
@FenixFly, если все правильно посмотрела, то теперь результаты качества работы шести классификационных моделей соответствуют тем, что мы получали средствами OpenVINO. Так ведь? Две работали правильно, с efficientnet-b0 разобрались, что была проблема в слое предобработки, а остальными моделями в чем была проблема?
Еще ты писал, что надо проапдейтить результаты для efficientnet-b0 в табличке валидации. Это будет сделано здесь? Надо финализировать этот PR и выложить на вики ссылки с результатами.
@FenixFly, если все правильно посмотрела, то теперь результаты качества работы шести классификационных моделей соответствуют тем, что мы получали средствами OpenVINO. Так ведь? Две работали правильно, с efficientnet-b0 разобрались, что была проблема в слое предобработки, а остальными моделями в чем была проблема?
Еще ты писал, что надо проапдейтить результаты для efficientnet-b0 в табличке валидации. Это будет сделано здесь? Надо финализировать этот PR и выложить на вики ссылки с результатами.
Да, результаты теперь соответствуют. Я взял параметры нормализации от оригинальных моделей в Accuracy Checker и поэтому проценты совпали. Так, например в resnet-50-pytorch в инференс фреймворке добавилась нормализация std 255, в googlenet-v1 нормализацию mean [104.0,117.0,123.0] а не [0.408,0.459,0.482]. В densenet std: 58.8235294117647 а не [58.395,57.12,57.375], в squeezenet mean [104.0,117.0,123.0] а не [0.408,0.459,0.482]. Я начал делать коррекцию строк с efficientnet-b0 в отдельном пул-реквесте, но пока до конца далеко и еще я отдал свою личипай Юрию, поэтому последний столбец таблицы обновить не могу. Если остались строки запуска инференса для всех моделей, это сильно ускорило бы обновление таблицы (например чтобы знать где использовался параметр софтмакса на конце или нет).
@FenixFly, если все правильно посмотрела, то теперь результаты качества работы шести классификационных моделей соответствуют тем, что мы получали средствами OpenVINO. Так ведь? Две работали правильно, с efficientnet-b0 разобрались, что была проблема в слое предобработки, а остальными моделями в чем была проблема? Еще ты писал, что надо проапдейтить результаты для efficientnet-b0 в табличке валидации. Это будет сделано здесь? Надо финализировать этот PR и выложить на вики ссылки с результатами.
Да, результаты теперь соответствуют. Я взял параметры нормализации от оригинальных моделей в Accuracy Checker и поэтому проценты совпали. Так, например в resnet-50-pytorch в инференс фреймворке добавилась нормализация std 255, в googlenet-v1 нормализацию mean [104.0,117.0,123.0] а не [0.408,0.459,0.482]. В densenet std: 58.8235294117647 а не [58.395,57.12,57.375], в squeezenet mean [104.0,117.0,123.0] а не [0.408,0.459,0.482]. Я начал делать коррекцию строк с efficientnet-b0 в отдельном пул-реквесте, но пока до конца далеко и еще я отдал свою личипай Юрию, поэтому последний столбец таблицы обновить не могу. Если остались строки запуска инференса для всех моделей, это сильно ускорило бы обновление таблицы (например чтобы знать где использовался параметр софтмакса на конце или нет).
Подозреваю, что результаты с mean и std сильно не изменятся, потому что в реализации tvm есть ключ --norm, по факту это масштабирование на 255. Строки пришлю попозже, когда доберусь до ноутбука.
@FenixFly, командные строки ниже.
python inference_tvm.py -mn efficientnet-b0 \
-m /home/itmm/Documents/kustikova_v/public/efficientnet-b0/efficientnet-b0/tvm_bs4/efficientnet-b0.json \
-w /home/itmm/Documents/kustikova_v/public/efficientnet-b0/efficientnet-b0/tvm_bs4/efficientnet-b0.params \
-i /home/itmm/Documents/kustikova_v/data/ -b 4 -l labels/image_net_synset.txt -is 4 224 224 3 --not_softmax \
--input_name sub -t classification --channel_swap 0 1 2 \
--layout NHWC --mean 0.485 0.456 0.406 --std 0.229 0.224 0.225
python inference_tvm.py -mn densenet-121-tf \
-m /home/itmm/Documents/kustikova_v/public/densenet-121-tf/tvm_bs4/densenet-121-tf.json \
-w /home/itmm/Documents/kustikova_v/public/densenet-121-tf/tvm_bs4/densenet-121-tf.params \
-i /home/itmm/Documents/kustikova_v/data/ \
-b 4 -l labels/image_net_synset.txt -is 4 224 224 3 \
--not_softmax -t classification --channel_swap 0 1 2 \
--layout NHWC --mean 123.68 116.78 103.94 \
--std 58.395 57.12 57.375 --input_name input_1
python inference_tvm.py -mn googlenetv1 \
-m /home/itmm/Documents/kustikova_v/public/googlenet-v1/tvm_bs4/googlenetv1.json \
-w /home/itmm/Documents/kustikova_v/public/googlenet-v1/tvm_bs4/googlenetv1.params \
-i /home/itmm/Documents/kustikova_v/data/ -b 4 -l labels/image_net_synset.txt \
-is 4 3 224 224 --not_softmax -t classification \
--channel_swap 2 1 0 --layout NCHW --input_name data \
--mean 0.408 0.459 0.482
python inference_tvm.py -mn googlenet-v4-tf \
-m /home/itmm/Documents/kustikova_v/public/googlenet-v4-tf/tvm_bs4/googlenet-v4-tf.json \
-w /home/itmm/Documents/kustikova_v/public/googlenet-v4-tf/tvm_bs4/googlenet-v4-tf.params \
-i /home/itmm/Documents/kustikova_v/data/ \
-b 4 -l labels/image_net_synset_first_class_base.txt \
--task classification --layout NHWC --not_softmax \
--channel_swap 0 1 2 --mean 127.5 127.5 127.5 \
--std 127.5 127.5 127.5 --input_shape 4 299 299 3 \
--input_name "input:0"
python inference_tvm.py -mn resnet50 \
-m /home/itmm/Documents/kustikova_v/public/resnet-50-pytorch/tvm_bs4/resnet50.json \
-w /home/itmm/Documents/kustikova_v/public/resnet-50-pytorch/tvm_bs4/resnet50.params \
-i /home/itmm/Documents/kustikova_v/data/ -b 4 \
--labels labels/image_net_synset.txt \
--input_shape 4 3 224 224 -ni 1 --task classification \
--norm --mean 0.485 0.456 0.406 --std 0.229 0.224 0.225 \
--input_name data --channel_swap 0 1 2 --layout NCHW
python inference_tvm.py -mn squeezenet1.1 \
-m /home/itmm/Documents/kustikova_v/public/squeezenet1.1/tvm_bs4/squeezenet1.1.json \
-w /home/itmm/Documents/kustikova_v/public/squeezenet1.1/tvm_bs4/squeezenet1.1.params \
-i /home/itmm/Documents/kustikova_v/data/ -b 4 \
-t classification -is 4 3 227 227 -l labels/image_net_synset.txt \
--layout NCHW --not_softmax --channel_swap 0 1 2 \
--input_name data --mean 0.408 0.459 0.482
@FenixFly, командные строки ниже.
python inference_tvm.py -mn efficientnet-b0 \ -m /home/itmm/Documents/kustikova_v/public/efficientnet-b0/efficientnet-b0/tvm_bs4/efficientnet-b0.json \ -w /home/itmm/Documents/kustikova_v/public/efficientnet-b0/efficientnet-b0/tvm_bs4/efficientnet-b0.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 -l labels/image_net_synset.txt -is 4 224 224 3 --not_softmax \ --input_name sub -t classification --channel_swap 0 1 2 \ --layout NHWC --mean 0.485 0.456 0.406 --std 0.229 0.224 0.225 python inference_tvm.py -mn densenet-121-tf \ -m /home/itmm/Documents/kustikova_v/public/densenet-121-tf/tvm_bs4/densenet-121-tf.json \ -w /home/itmm/Documents/kustikova_v/public/densenet-121-tf/tvm_bs4/densenet-121-tf.params \ -i /home/itmm/Documents/kustikova_v/data/ \ -b 4 -l labels/image_net_synset.txt -is 4 224 224 3 \ --not_softmax -t classification --channel_swap 0 1 2 \ --layout NHWC --mean 123.68 116.78 103.94 \ --std 58.395 57.12 57.375 --input_name input_1 python inference_tvm.py -mn googlenetv1 \ -m /home/itmm/Documents/kustikova_v/public/googlenet-v1/tvm_bs4/googlenetv1.json \ -w /home/itmm/Documents/kustikova_v/public/googlenet-v1/tvm_bs4/googlenetv1.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 -l labels/image_net_synset.txt \ -is 4 3 224 224 --not_softmax -t classification \ --channel_swap 2 1 0 --layout NCHW --input_name data \ --mean 0.408 0.459 0.482 python inference_tvm.py -mn googlenet-v4-tf \ -m /home/itmm/Documents/kustikova_v/public/googlenet-v4-tf/tvm_bs4/googlenet-v4-tf.json \ -w /home/itmm/Documents/kustikova_v/public/googlenet-v4-tf/tvm_bs4/googlenet-v4-tf.params \ -i /home/itmm/Documents/kustikova_v/data/ \ -b 4 -l labels/image_net_synset_first_class_base.txt \ --task classification --layout NHWC --not_softmax \ --channel_swap 0 1 2 --mean 127.5 127.5 127.5 \ --std 127.5 127.5 127.5 --input_shape 4 299 299 3 \ --input_name "input:0" python inference_tvm.py -mn resnet50 \ -m /home/itmm/Documents/kustikova_v/public/resnet-50-pytorch/tvm_bs4/resnet50.json \ -w /home/itmm/Documents/kustikova_v/public/resnet-50-pytorch/tvm_bs4/resnet50.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 \ --labels labels/image_net_synset.txt \ --input_shape 4 3 224 224 -ni 1 --task classification \ --norm --mean 0.485 0.456 0.406 --std 0.229 0.224 0.225 \ --input_name data --channel_swap 0 1 2 --layout NCHW python inference_tvm.py -mn squeezenet1.1 \ -m /home/itmm/Documents/kustikova_v/public/squeezenet1.1/tvm_bs4/squeezenet1.1.json \ -w /home/itmm/Documents/kustikova_v/public/squeezenet1.1/tvm_bs4/squeezenet1.1.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 \ -t classification -is 4 3 227 227 -l labels/image_net_synset.txt \ --layout NCHW --not_softmax --channel_swap 0 1 2 \ --input_name data --mean 0.408 0.459 0.482
@valentina-kustikova модель efficientnet-b0 - это фреймворк TensorFlow. Для сбора в таблице в столбце оригинальный фреймворк запускался inference_tensorflow.py или inference_onnx.py? Потому что в следующем столбце по запуску оригинальной модели в TVM скорее всего запускался inference_tvm_onnx.py а вот информации по запуску оригинальной модели в оригинальном фреймворке я не нашел
@FenixFly, командные строки ниже.
python inference_tvm.py -mn efficientnet-b0 \ -m /home/itmm/Documents/kustikova_v/public/efficientnet-b0/efficientnet-b0/tvm_bs4/efficientnet-b0.json \ -w /home/itmm/Documents/kustikova_v/public/efficientnet-b0/efficientnet-b0/tvm_bs4/efficientnet-b0.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 -l labels/image_net_synset.txt -is 4 224 224 3 --not_softmax \ --input_name sub -t classification --channel_swap 0 1 2 \ --layout NHWC --mean 0.485 0.456 0.406 --std 0.229 0.224 0.225 python inference_tvm.py -mn densenet-121-tf \ -m /home/itmm/Documents/kustikova_v/public/densenet-121-tf/tvm_bs4/densenet-121-tf.json \ -w /home/itmm/Documents/kustikova_v/public/densenet-121-tf/tvm_bs4/densenet-121-tf.params \ -i /home/itmm/Documents/kustikova_v/data/ \ -b 4 -l labels/image_net_synset.txt -is 4 224 224 3 \ --not_softmax -t classification --channel_swap 0 1 2 \ --layout NHWC --mean 123.68 116.78 103.94 \ --std 58.395 57.12 57.375 --input_name input_1 python inference_tvm.py -mn googlenetv1 \ -m /home/itmm/Documents/kustikova_v/public/googlenet-v1/tvm_bs4/googlenetv1.json \ -w /home/itmm/Documents/kustikova_v/public/googlenet-v1/tvm_bs4/googlenetv1.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 -l labels/image_net_synset.txt \ -is 4 3 224 224 --not_softmax -t classification \ --channel_swap 2 1 0 --layout NCHW --input_name data \ --mean 0.408 0.459 0.482 python inference_tvm.py -mn googlenet-v4-tf \ -m /home/itmm/Documents/kustikova_v/public/googlenet-v4-tf/tvm_bs4/googlenet-v4-tf.json \ -w /home/itmm/Documents/kustikova_v/public/googlenet-v4-tf/tvm_bs4/googlenet-v4-tf.params \ -i /home/itmm/Documents/kustikova_v/data/ \ -b 4 -l labels/image_net_synset_first_class_base.txt \ --task classification --layout NHWC --not_softmax \ --channel_swap 0 1 2 --mean 127.5 127.5 127.5 \ --std 127.5 127.5 127.5 --input_shape 4 299 299 3 \ --input_name "input:0" python inference_tvm.py -mn resnet50 \ -m /home/itmm/Documents/kustikova_v/public/resnet-50-pytorch/tvm_bs4/resnet50.json \ -w /home/itmm/Documents/kustikova_v/public/resnet-50-pytorch/tvm_bs4/resnet50.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 \ --labels labels/image_net_synset.txt \ --input_shape 4 3 224 224 -ni 1 --task classification \ --norm --mean 0.485 0.456 0.406 --std 0.229 0.224 0.225 \ --input_name data --channel_swap 0 1 2 --layout NCHW python inference_tvm.py -mn squeezenet1.1 \ -m /home/itmm/Documents/kustikova_v/public/squeezenet1.1/tvm_bs4/squeezenet1.1.json \ -w /home/itmm/Documents/kustikova_v/public/squeezenet1.1/tvm_bs4/squeezenet1.1.params \ -i /home/itmm/Documents/kustikova_v/data/ -b 4 \ -t classification -is 4 3 227 227 -l labels/image_net_synset.txt \ --layout NCHW --not_softmax --channel_swap 0 1 2 \ --input_name data --mean 0.408 0.459 0.482
@valentina-kustikova модель efficientnet-b0 - это фреймворк TensorFlow. Для сбора в таблице в столбце оригинальный фреймворк запускался inference_tensorflow.py или inference_onnx.py? Потому что в следующем столбце по запуску оригинальной модели в TVM скорее всего запускался inference_tvm_onnx.py а вот информации по запуску оригинальной модели в оригинальном фреймворке я не нашел
Запускала inference_tensorflow.py в результатах с исходным фреймворком, для tvm модели TensorFlow всегда конвертируются в onnx-формат через tf2onnx.
@valentina-kustikova обновил результаты валидации efficientnet-b0 в пул-реквесте: https://github.com/itlab-vision/dl-benchmark/pull/484
@valentina-kustikova обновил результаты валидации efficientnet-b0 в пул-реквесте: #484
Замержила. Текущий пулл-реквест мержим?
Посмотрела результаты точности. Только для googlenet-v1 и googlenet-v4-tf точности top-1 и top-5 почти совпадают с OpenVINO, для resnet-50-pytorch есть отличие в несколько процентов. Остальные модели (densenet-121-tf, efficientnet-b0, squeezenet1.1) по качеству отстают значительно. Надо внимательно посмотреть параметры запуска.
@Rodimkov, посмотрите, пожалуйста, конфигурации с @FenixFly.