xun-xh / yolov5-onnx-pyqt-exe

yolo模型使用cv2推理并使用qt5添加GUI后打包部署。pt模型转onnx模型;opencv.dnn完成推理;pyqt实现可视界面;打包为exe方便移植
100 stars 17 forks source link

web服务器 #5

Open 666ycy opened 1 year ago

666ycy commented 1 year ago

我想问一下httpserver那个文件夹里的内容有什么作用,用到最后publish的那个exe文件里了吗

666ycy commented 1 year ago

还想问一下yolov7-tiny.txt在yolov7官方github的哪里呀

xun-xh commented 1 year ago

httpserver文件夹是用flask随便写的web服务,和打包没有关系。 https://github.com/WongKinYiu/yolov7/releases

666ycy commented 1 year ago

那这个web服务有啥作用吗

666ycy commented 1 year ago

我还有一个问题也放在评论里面了

xun-xh commented 1 year ago

部署到服务器可以用 没有这方面需求也可以直接删

666ycy commented 1 year ago

我对yolo有很多问题不太理解要是方便的话可不可以添加您一个联系方式

xun-xh commented 1 year ago

yolov7-tiny.txt是yolov7-tiny模型的类别文件,模型出处https://github.com/WongKinYiu/yolov7/releases

666ycy commented 1 year ago

那这个类别文件怎么得到的呢,是训练完成后就有的吗

xun-xh commented 1 year ago

哈哈,我也是刚入门目标检测的新手,有些地方我可能和你一样不懂,可能没有办法帮到你

xun-xh commented 1 year ago

官方模型训练的是coco数据集,类别自然就是coco数据集的80个类别。 自己的数据集,类别是自己定的,数据集标注时有多少个类别、分别是什么,都是自己定的。 比如项目中另一个安全帽数据集,里面只有我自己标注的两种类别分别是helmet和head

666ycy commented 1 year ago

这是我的qq:1577165578,如果方便的话您就添加一下

666ycy commented 1 year ago

官方模型训练的是coco数据集,类别自然就是coco数据集的80个类别。 自己的数据集,类别是自己定的,数据集标注时有多少个类别、分别是什么,都是自己定的。 比如项目中另一个安全帽数据集,里面只有我自己标注的两种类别分别是helmet和head

我明白这个道理,就是我想知道这个文件是怎么来的,是自己写的,还是训练就能生成,还是说修改输出的代码,把这些类别保存到了一个文件

xun-xh commented 1 year ago

文件是自己写的,一行是一个类别名称,以回车区分

666ycy commented 1 year ago

好哒好哒,如果您方便的前提下就加一下我,有机会可以一起探讨问题,您可以用小号之类的

xun-xh commented 1 year ago

好的,我不常用qq。 如果还有关于yolo的疑问,也可以另提issue,我会尽可能帮助你

666ycy commented 1 year ago

文件是自己写的,一行是一个类别名称,以回车区分 是在训练结束输出的那个部分加一小点代码把类别保存在文件中吗

xun-xh commented 1 year ago

我是手工写的 当然也可以写一段脚本自动完成这个需求

666ycy commented 1 year ago

那我就一次性提问您一些问题,您方便的话帮忙解答 第一个就是yaml文件的问题,我看yolov7 cfg文件夹下面有deploy和training两个文件夹,下面有完全相同的yaml文件,他们有什么区别吗,是不是选择的权重有区别,因为我发现权重有的叫yolov7x_training.pt,有的叫yolov7x.pt 第二个问题就是yaml文件和pt文件的区别,因为我看网络上也有很多人都在说pt文件也可以保存完整的网络架构,但我认为yaml文件存储的是网络架构,所以到底关系是怎么样的。此外如果在运行train.py时--cfg参数里面的yaml文件和权重文件不匹配会不会影响结果,那么这样的话叫做使用的哪个网络呢?比如yolov7-tiny.yaml和yolov7.pt,很明显前者要比后者结构更简单,这种情况算作训练哪个网络呢 第三个问题就是[yolov7-tiny.weights是什么文件呀,和yolov7-tiny.pt有关吗 问题有点多,很抱歉麻烦您了,望您在有空时解答

xun-xh commented 1 year ago

个人理解,不一定对

  1. yaml文件定义的是网络结构和网络参数,用于训练,我也不知道为什么yolov7有两个相同的yaml文件;pt文件是权重,又可以叫模型。在训练时也需要用到pt,此时做为预训练权重。
  2. yaml和pt都储存了网络结构。训练时需要一个定义了主干网络结构的yaml文件的路径和一个预训练模型pt文件的路径,他们的网络结构都要被解析(如果这两个网络的结构不一样,则需要主干网络跟预训练权重包含的网络参数进行比较,观察有多少层是相同的,然后就只会加载相同的层数训练,这一步是自动的),这两个文件的前缀可以不一样,比如用yolov7-tiny.yaml和yolov7.pt,训练后的结果的网络结构只会包含共有层。
  3. pt weights onnx都是描述模型格式的,分别可以被不同的框架解析。本项目用的是onnx格式,即将pt格式转换为onnx格式。前缀相同的两个weights和pt在参数上应该是一样的
666ycy commented 1 year ago

emm,那我想追问一下就是 第一,pt文件和yaml文件既然都包括网络结构,哪个包含的内容多。此外我们训练xxx网络,xxx取决于pt文件还是yaml文件 第二个,weights文件内容上要是和pt文件一致的话,训练可以通用吗

666ycy commented 1 year ago

还有就是您这个项目尝试过v7的权重文件转onnx吗,我看好像有一些问题

666ycy commented 1 year ago

我恳求您添加我的联系方式,因为在转换onnx处我的疑问也比较大,如果实在不行,您可以与我上面所发qq邮箱进行联系,我可以发给您我的vx

666ycy commented 1 year ago

还有一个小问题十分抱歉打扰您啦,那个类别文件是不是pt文件转onnx文件的时候要用到的呀

666ycy commented 1 year ago

@xun-xh 您好,我还想咨询一下部署到服务器那个代码怎么使用如果您有时间的话望您解答,十分感谢

xun-xh commented 1 year ago

类别文件在转换的时候用不到,检测才用得到。 yolov7-tiny.onnx是用yolov5的转换代码转换的。 部署那个直接运行mainhttpserver.py

666ycy commented 1 year ago

我对云端部署这块还有一些疑问,是不是应该把这个mainhttpserver.py还有哪些项目检测代码拿到云端,之后云端运行,本地输入网址进入 还有就是如果要是在云端部署服务器或者是本地就是内网,再来一个电脑做服务器,这样的话还可以做实时检测吗?就是调用本机的摄像头进行实时检测

666ycy commented 1 year ago

我上面还有一个问题,您没有解答,就是紧接着那个yaml文件和pt文件下面那个问题,望您解答。我再次诚恳请求,您能添加一下我的联系方式吗

666ycy commented 1 year ago

我还想问您一下,那个general.py文件的作用,感谢您啦

666ycy commented 1 year ago

还有几个小问题,我今天看了好久没看明白用途,还麻烦您解答 1.翻转功能作用 2.那个小锁的作用 3.选择类别那块选中类别会弹出 一个对话框,可以更改初始是screen,那个是什么意思,可以修改成什么单词 还麻烦您解答,给您带来这么多问题十分抱歉

666ycy commented 1 year ago

您的代码我仔细进行了研究,但是仍然有一部分看不懂,不知道您是否考虑出一个帮助文档,就是详解代码的,或者我有偿请您出一个代码帮助文档,不知道您意下如何,如有冒犯请多原谅

666ycy commented 1 year ago

视频流好像有点bug