VoTT自定义SSD模型,实现自动标注,各种error踩坑过程

VoTT自定义SSD模型,实现自动标注

  • tfjs模型准备
    • 模型转换流程介绍
      • pytorch模型
      • pt文件 to onnx文件
      • onnx转tensorflow文件
      • tensorflow文件转tensorflowjs文件
  • VoTT下载与运行
    • exe文件
    • 官方编译(踩坑)
      • 下载
      • 安装依赖库和运行
        • 下面是安装依赖库和运行的时候遇到的报错
          • **报错1 :error code 1**
          • **报错2:node-sass版本不变**
          • **报错3:Error: Node Sass version 7.0.1 is incompatible with ^4.0.0.**
    • 标注,调用自己的模型
      • 建立连接
      • 建立新的project
      • 调用自己的模型
        • 报错 error:could not find a version that satisfies the requirement tensorflow==1.13.1
        • 报错 error:cannot install tensorflowjs because these package versions have conflicting dependencies

tfjs模型准备

我这里是先用pytorch的yolo模型尝试转换,后面放弃了,直接用SSD的tensorflow模型直接转换。
tip:
部署的时候不要心急,按照官网的模型一步步改成自己的模型,否则容易前功尽弃,报错了也不确定是不是模型的原因,像我弄完yolo模型出错了,又得回去弄SSD模型来排除yolo模型的原因。

模型转换流程介绍

仅以我自己转换的两种情况,最终需要转换到tensorflowjs模型给VoTT调用

pytorch模型

pt文件(pytorch模型) --> onnx文件 --> tensorflow模型 --> tfjs模型

pt文件 to onnx文件

参考https://zhuanlan.zhihu.com/p/422290231

自己的yolo模型读取和转换过程

# 加载模型,这里可以用自己加载模型的方式
model = attempt_load(r"C:\Users\Burt\Desktop\test\best.pt")
model.eval()
model = model.cuda()

# 转换成ONNX,加载模型后,只要这个就行了
torch.onnx.export(model,
                  dummy_input,
                  "C:/Users/Burt/Desktop/test/best.onnx",
                  input_names=['inputs'],
                  output_names=['outputs'])

转换完成后是这样的:
上面的onnx文件就是转换完成后的

onnx转tensorflow文件

我是从GitHub上下载一个库进行转换的

# 下载库
git clone https://github.com/onnx/onnx-tensorflow

# 转换
onnx-tf convert -t tf -i /path/to/input.onnx -o /path/to/output.pb

生成的tensorflow.pb文件夹结构如下:
best.pb
|—assets
|—variables
—|—variables.data-00000-of-00001
—|—variables.index
|—best.pb
其中variables文件夹可能是空的,因为pb模型里的参数都是constant,就没有变量。

tensorflow文件转tensorflowjs文件

当时我是用这个进行转换。

https://blog.csdn.net/qq_41158484/article/details/126706102?spm=1001.2014.3001.5502

至此,模型准备部分完毕。

VoTT下载与运行

两种方式:

  1. exe
  2. 自行编译的方式

exe文件

这个

https://github.com/microsoft/VoTT/releases

官方编译(踩坑)

下载

  1. 官方地址,直接下载到文件夹

https://github.com/microsoft/VoTT

  1. 打开终端(打开win+R,输入cmd)
cd path/to/you/want/to/save
git clone https://github.com/microsoft/VoTT.git

就可以从外网下载这个项目了,需要

安装依赖库和运行

# 1. 进入下载的项目
cd VoTT

# 2. 配置相应的库
npm ci
# 也可以用这个配置相应的库,一样的,如果没报错就是成功了
npm install

# 3. 运行项目
npm start

运行项目后,生成了一个应用软件和一个网页软件。
这里是应用程序的,有open local project的选项,同时connection那里可以连接custom file
VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第1张图片
VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第2张图片
这里是网页生成的VoTT,不具备上面这些功能,还有其他差别目前没发现
VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第3张图片

下面是安装依赖库和运行的时候遇到的报错

报错1 :error code 1

VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第4张图片
解决方法:
这个是版本对不上的原因,网上很多方法都说是替换版本就可以,我尝试了多种方法还是会有其他错误,最终在这里找到了解决方法:

https://tree.moe/deal-with-gyp-err-caused-by-node-sass/

其实还是版本问题,只是需要修改项目中的package.json文件的node-sass版本修改为node对应的版本,然后安装的时候加上–force强制安装就搞定了!!!

报错2:node-sass版本不变

安装node-sass后,还是原来的node-sass版本。
解决方法:
安装node-sass之前要uninstall掉之前的node-sass才能安装成功,所以每次安装完后都要检查一下能不能安装。

# 删掉之前的node-sass
npm uninstall node-sass

# 安装正确版本的node-sass
npm install node-sass@对应的版本

# 最好rebuild一下,不知道rebuild有没有用,反正我rebuild了一下
npm rebuild node-sass

tips:
下载的时候速度慢,就换国内源

报错3:Error: Node Sass version 7.0.1 is incompatible with ^4.0.0.

Error: Node Sass version 7.0.1 is incompatible with ^4.0.0.
当时没截图就用文字代替吧

出现这个报错的时候,Error: Node Sass version (安装的版本) is incompatible with ^4.0.0.
我当时尝试了很多个版本的node-sass,但是不管是什么node-sass版本都会报这个错。
解决方法:
参考报错2,当时按照报错2安装成功后,理论上版本应该没什么问题,就怀疑是有什么缓存,一直是用那个缓存运行的所以报这个错,于是重启了一下电脑,然后

npm start

就能跑通了!!!

如果我的方法帮不到你,可以参考网上我之前尝试过的解决方法,或许可以帮到你。

https://blog.csdn.net/u012069313/article/details/123542705
https://blog.csdn.net/m0_49714202/article/details/123483875
https://blog.csdn.net/Sheyami/article/details/125386157
https://blog.csdn.net/ouyangchangxiu/article/details/123373118?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-123373118-blog-123483875.pc_relevant_multi_platform_whitelistv4&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-123373118-blog-123483875.pc_relevant_multi_platform_whitelistv4&utm_relevant_index=1

标注,调用自己的模型

编译完成后

建立连接

VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第5张图片

建立新的project

选择刚刚创建的connection,下面的红框是生成的vott工程文件保存的地址,其他的看着填就行了。
VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第6张图片
然后到这里就可以进行标注了。

调用自己的模型

  1. 设置一下自己的模型的路径
    VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第7张图片
  2. 开始自动标注

    但是我在这里调用SSD模型的时候出现了error loading active learning model.
    VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第8张图片
    但是后面编译完VoTT,加载tfjs模型的时候出现了这个错误,网上找了好久,甚至去对照了生成的json文件内容,但是还是不行。
    然后在github讨论区中有人说要用这个方法,参考

https://github.com/microsoft/VoTT/issues/846

里面提到
VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第9张图片
安装tensorflowjs的时候

pip install tensorflowjs==0.8.6

可能会有以下问题:

报错 error:could not find a version that satisfies the requirement tensorflow==1.13.1

在这里插入图片描述
解决方法:
这个是因为python版本太高了,我这里是python3.10的环境,换了个python3.6的环境就可以下载了。

报错 error:cannot install tensorflowjs because these package versions have conflicting dependencies

VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第10张图片
基于版本冲突的想法:

  1. 我去升高了下keras的版本,重新安装tensorflowjs==0.8.6;
  2. 降低了tensorflow版本,重新安装tensorflowjs==0.8.6;

但是发现还是会报这个错,然后我去看了下安装过程,发现
VoTT自定义SSD模型,实现自动标注,各种error踩坑过程_第11张图片
tensorflowjs 0.8.6 在安装的时候会自动选择安装keras 2.2.2 和tensorflow 1.13.1 ,但是这两个库依赖的keras-application又不一样,于是卡在这里了。


更新一下,这里说tensorflow0.8.6由于依赖问题无法安装!!!放弃这个思路。

https://blog.csdn.net/HGGshiwo/article/details/120142822


更新一下,看了下GitHub上讨论区,还有一个人的解决方案就是:
自己写了个脚本,读取模型,将结果放进VoTT里的xml文件里。
太麻烦了,最终决定换一个自动标注工具。

你可能感兴趣的:(深度学习,tensorflow,神经网络,目标检测)