-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OpenCV inference #332
OpenCV inference #332
Conversation
src/inference/transformer.py
Outdated
self._converting = converting | ||
|
||
def _transform(self, image): | ||
return cv2.dnn.blobFromImage(image, **self._converting) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
надо импорт cv2 добавить, а то
name 'cv2' is not defined
src/inference/README.md
Outdated
выполняется один проход по сети. | ||
- `--raw_output` - работа скрипта без логов. По умолчанию не установлен. | ||
- `-in / --input_name` - название входного узла модели. По умолчанию установлено значение `input_`. | ||
- `--scalefactor` - коэффициент масштабирования изображения. По умолчанию равен `1.0`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
почему не input_scale, для единообразия с другими фреймворками?
src/inference/README.md
Outdated
- `--raw_output` - работа скрипта без логов. По умолчанию не установлен. | ||
- `-in / --input_name` - название входного узла модели. По умолчанию установлено значение `input_`. | ||
- `--scalefactor` - коэффициент масштабирования изображения. По умолчанию равен `1.0`. | ||
- `--size` - параметры размера входного изображения. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
тут аналогично, везде для этого есть input shape
@AlibekovMurad5202, поправьте, пожалуйста, замечания + надо влить мастер, чтобы исправить проблему со стилем кодирования. |
src/benchmark/README.md
Outdated
@@ -249,3 +250,4 @@ pip install openvino_dev[mxnet,caffe,caffe2,onnx,pytorch,tensorflow2]==<your ver | |||
[tensorflow-lite]: https://www.tensorflow.org/lite | |||
[onnx-runtime]: https://onnxruntime.ai | |||
[mxnet]: https://mxnet.apache.org | |||
[opencv]: https://opencv.org/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Слэш в конце ссылки надо удалить.
@@ -5,3 +5,4 @@ class KnownFrameworks: | |||
onnx_runtime = 'ONNX Runtime' | |||
tensorflow_lite = 'TensorFlowLite' | |||
mxnet = 'MXNet' | |||
opencv = 'OpenCV' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю назвать как-то OpenCV (Python API)
, потому что имеет смысл различать инференс средствами C++ и Python, т.к. поддерживаются оба интерфейса.
def create_process(test, executor, log): | ||
return OpenCVProcess(test, executor, log) | ||
|
||
def get_performance_metrics(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Реализация этого метода дублируется во всех классах-наследниках ProcessHandler
, кроме OnnxRuntimeProcess
. Возможно, имеет смысл пробросить эту общую реализацию в базовый класс, а в OnnxRuntimeProcess
переопределить. Это имеет смысл сделать в отдельной таске, не здесь.
@maslovaz, что думаете?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
я за, в отдельной таске
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Создала таску #353
common_params = OpenCVProcess._add_optional_argument_to_cmd_line(common_params, '--backend', backend) | ||
|
||
input_scale = self._test.dep_parameters.input_scale | ||
common_params = self._add_optional_argument_to_cmd_line(common_params, '--input_scale', input_scale) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вызов статического метода в строке 38 делается через имя класса OpenCVProcess._add_optional_argument_to_cmd_line
, а в строке 41, 44 и т.д. через self
. Надо это сделать единообразно.
@maslovaz, есть ли какие-то рекомендация в плане стиля кодирования в подобных ситуациях?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
по рекомендациям - не нашла, но думаю, предпочтительнее self
<Path></Path> | ||
</Dataset> | ||
<FrameworkIndependent> | ||
<InferenceFramework>OpenCV</InferenceFramework> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
К вопросу о том, что у нас будет поддержка двух видов программных интерфейсов C++ и Python. Может OpenCV (Python API)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
давайте дообсудим тут #343 (comment)
src/inference/inference_opencv.py
Outdated
log.info('Result for image {0}'.format(batch + 1)) | ||
for id_ in top_ind: | ||
det_label = labels_map[id_] if labels_map else '#{0}'.format(id_) | ||
log.info('{:.7f} {}'.format(probs[id_], det_label)) # noqa: P101 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Аналогичная функция реализована в IOAdapter
для задачи классификации. Для MXNet я удалила такую функцию, добавила функцию конвертации результата в формат, который принимает IOAdapter
, там обрабатывается словарь <ключ>: <значение>, где <ключ> - это название выхода, <значение> - вектор (для задачи классификации). Надо сделать по аналогии.
src/inference/inference_opencv.py
Outdated
set_device_to_infer(net, args.device) | ||
log.info('The device has been assigned: {0}'.format(args.device)) | ||
|
||
log.info('Prepare input data') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preparing
src/inference/inference_opencv.py
Outdated
output_names = args.output_names[0] if args.output_names else '_output' | ||
io.process_output({output_names: np.array(result).reshape(args.batch_size, -1)}, log) | ||
else: | ||
print_topK_preds(np.array(result).reshape(args.batch_size, -1), args.number_top, log) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Уйдет этот вызов, если сделаете конвертацию выхода в словарь.
src/inference/inference_opencv.py
Outdated
else: | ||
raw_result_output(average_time, fps, latency) | ||
except Exception as ex: | ||
print('ERROR! : {0}'.format(str(ex))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь необходимо сделать печать трассы по аналогии с реализацией инференса для MXNet.
@AlibekovMurad5202, необходимо влить мастер-ветку в текущую реализацию + нужен smoke-тест. |
src/inference/README.md
Outdated
@@ -435,6 +435,70 @@ python3 inference_tensorflowlite.py \ | |||
-i <path_to_image>/<image_name> | |||
``` | |||
|
|||
## Вывод глубоких моделей с использованием OpenCV |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OpenCV (Python API)
src/inference/README.md
Outdated
- `--crop` - флаг, указывающий на то, будет ли входное изображение обрезано после изменения размера. | ||
По умолчанию `False`. | ||
- `--layout` - требуемый формат преобразованмя входного тензора. По умолчанию `None`. | ||
Рекомендуется использовать `NWCH` для TensorFlow-моделей сконвертированных в IR (OpenVINO). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Запятая после TensorFlow-модедей
No description provided.