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,还有一些碎片的权重文件(二进制格式)。
如下图所示:
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!