半自动标注工具VoTT智能识别替换COCOSSD为自己的模型

0.VOTT安装使用教程

VOTT最大优势:利用官方预训练cocossd半自动标注(勾选智能标注里的自动标注,切换到哪一帧,该帧自动标注),不用手动保存标注。
半自动标注出来的结果一般都不准确,需要手动微调,但可以减少工作量。
半自动标注工具还有:BreaverDam,基于多目标追踪的vatic等。

ubuntu16.04 标注工具vott安装教程
VoTT 详细使用教程
VoTT使用教程二

VOTT 1.X版本貌似可以利用fast-rcnn进行不跳帧的跟踪标注,2.X版本不再有此功能,变为支持跳帧的cocossd目标检测。(1.X用camshift进行跟踪标注?ctrl+N开启跟踪模式?)

1.前提

已有:自己训练的yolov4模型,转化为了onnx模型,并用onnxsim简化,得到简化的yolov4sim.onnx文件。
想要:尝试得到VoTT所需的tensorflowjs模型(简称tfjs模型)。
实现过程:onnx模型转tf模型,tf模型转tfjs模型。

2.onnx模型转tf模型

git工程onnx-tensorflow
安装onnx-tf

pip3 install Tensorflow == 2.2.0  #(Tensorflow >= 2.2.0)
pip3 install tensorflow-addons
git clone https://github.com/onnx/onnx-tensorflow.git && cd onnx-tensorflow
pip3 install -e .

转化模型

onnx-tf convert -i /path/to/input.onnx -o /path/to/output.pb

3.tf模型转tfjs模型

安装tensorflowjs

pip3 install tensorflowjs==2.3.0

转化模型tfjs官方git链接 与 csdn链接

tensorflowjs_converter --input_format=tf_frozen_model  --output_format=tfjs_graph_model --output_node_names="output_1,output_2,output_3"  /path/input.pb  ./web_model

如果需要量化模型,可以参照参数说明添加--quantize_float16--quantize_uint8等参数。
参数说明:

 TensorFlow.js model converters. [-h]
                                       [--input_format {tfjs_layers_model,tf_hub,tf_frozen_model,tf_saved_model,keras_saved_model,keras}]
                                       [--output_format {tfjs_layers_model,keras,tfjs_graph_model,keras_saved_model}]
                                       [--signature_name SIGNATURE_NAME]
                                       [--saved_model_tags SAVED_MODEL_TAGS]
                                       [--quantize_float16 [QUANTIZE_FLOAT16
                                       [--quantize_uint8 [QUANTIZE_UINT8]]
                                       [--quantize_uint16 [QUANTIZE_UINT16]]
                                       [--quantization_bytes {1,2}]
                                       [--split_weights_by_layer] [--version]
                                       [--skip_op_check]
                                       [--strip_debug_ops STRIP_DEBUG_OPS]
                                       [--weight_shard_size_bytes WEIGHT_SHARD_SIZE_BYTES]
                                       [--output_node_names OUTPUT_NODE_NAMES]
                                       [--control_flow_v2 CONTROL_FLOW_V2]
                                       [--experiments EXPERIMENTS]
                                       [input_path] [output_path]

其中,input_format中各个tf模型类型的介绍见链接;input_path是输入模型文件的路径,output_path是输出模型所在的目录的路径。
输出的结果包含了一个记录神经网络结构的model.json,还有一些碎片的权重文件(二进制格式)。
如下图所示:半自动标注工具VoTT智能识别替换COCOSSD为自己的模型_第1张图片

4.tfjs模型替换VOTT原有模型

经在VOTT项目下提问区的多次查找(详见846 及834),VOTT目前支持的custom model仅支持SSD模型。我本来想将yolov4模型应用在VOTT中,做完第3步才发现替换原有cocossd模型的model.json和权重文件,并将class.json改为自己需要的类,在vott中加载时会报错“error loading active learning model”。
据js深度学习参考1及参考2说,可以用前端代码实现类似的导入深度学习模型并预测的功能,等有空学习相关前端代码再更新吧。

…WAITING UPDATE!

你可能感兴趣的:(半自动标注工具VoTT智能识别替换COCOSSD为自己的模型)