YOLOV 与 pytorch 和 TensorFlow 的关系 tensorflow 与 yolo 的区别
前言
YOLO诞生之前,目标检测研究领域主要以Faster-RCNN 为首的two-stage算法为主。two-stage算法通过卷积神经网络提取图片特征,再用RPN网络预测目标位置,最后再通过分类和回归来完成对候选目标位置和类别的判定,检测速度较慢但精度相对较高。而one-stage算法直接通过主干网络计算候选目标的类别和位置信息,其相较于two-stage 算法精度较低,
但是网络运行的速度更快,内存占用更小,非常适合便携式设备。
YOLO系列是目前最热门的目标检测算法,那就拿它“开刀”了。YOLO目前已经更新到了YOLOv5,由于YOLOv5太新了,目前TensorFlow2版本还未出来(网上存在一些tf版本的,但是大概率不靠谱,就不踩坑了),那就用PyTorch吧,反正PyTorch迟早也是要学的嘛。
PyTorch与TensorFlow的区别如下:
TensorFlow:倾向于工程人员,落地比较好。
PyTorch: 比较倾向于研究人员,前沿算法用得比较多。
YOLOv5又分为Yolov5s、Yolov5m、Yolov5I、Yolov5x四个版本,我这里以Yolov5s为例。
YOLOv5是什么?
YOLOv5 模型是 Ultralytics 公司于 2020 年 6 月 9 日公开发布的。它包括骨干网络、颈部和头部和输出.
(1)输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
(2)Backbone:Focus结构,CSP结构
(3)Neck:FPN+PAN结构
(4)Prediction:GIOU_Loss
使用步骤
源码下载
可以去github官网下载https://github.com/ultralytics/yolov5
Download zip
环境安装
本机在服务器Linux环境下安装。
cd yolov5-master/yolov5-master
/home/deep learning/Y1/yolov5-master/yolov5-master
ls
benchmarks.py detect.py [0m[01;34mmodels[0m/ setup.cfg val.py
[01;34mclassify[0m/ export.py README.md train.py
CONTRIBUTING.md hubconf.py requirements.txt tutorial.ipynb
[01;34mdata[0m/ LICENSE [01;34msegment[0m/ [01;34mutils[0m/
!pip install -r requirements.txt # install
运行代码
需要的环境
Python>=3.6.0.
PyTorch> =1.7
以同样的方法打开cmd,输入命令: python path/to/detect.py --source path/to/img.jpg --weights yolov5s.pt --img 640,注意需要将图片路径替换成你的,
例如: python detect.py --source data\images\zidane.jpg --weights yolov5s.pt --img 640。这里我们使用的是官方已经帮我们训练好的模型。
在这个过程中,你中途可能会遇到这两个问题,不用担心,这是网络问题多试几次就好了。
TimeoutError: [winError 10060]由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
TypeError: unlink( ) got an unexpected keyword argument 'missing_ok ’
如果你还是一直这样,将yolov5s.pt(提取码: bum6)文件放到项目的主目录下就ok了,上面的两个错误都是由于下载这个文件、下载失败缺少这个文件导致的。
命令运行成功后,你将会得到如下的反馈:
啊
import torch
# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # or yolov5n - yolov5x6, custom
# Images
img = 'https://ultralytics.com/images/zidane.jpg' # or file, Path, PIL, OpenCV, numpy, list
# Inference
results = model(img)
# Results
results.print() # or .show(), .save(), .crop(), .pandas(), etc.
Using cache found in /home/liangjie/.cache/torch/hub/ultralytics_yolov5_master
[31m[1mrequirements:[0m YOLOv5 requirement "requests>=2.23.0" not found, attempting AutoUpdate...
Requirement already satisfied: requests>=2.23.0 in /home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages (2.28.1)
Requirement already satisfied: certifi>=2017.4.17 in /home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages (from requests>=2.23.0) (2022.6.15)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages (from requests>=2.23.0) (1.24.3)
Requirement already satisfied: charset-normalizer<3,>=2 in /home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages (from requests>=2.23.0) (2.1.0)
Requirement already satisfied: idna<4,>=2.5 in /home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages (from requests>=2.23.0) (2.8)
[31m[1mrequirements:[0m 1 package updated per /home/liangjie/.cache/torch/hub/ultralytics_yolov5_master/requirements.txt
[31m[1mrequirements:[0m ⚠️ [1mRestart runtime or rerun command for updates to take effect[0m
YOLOv5 ???? 2022-12-2 Python-3.9.12 torch-1.13.0+cu117 CPU
Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt to yolov5s.pt...
ERROR: <urlopen error [Errno 110] Connection timed out>
Re-attempting https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt to yolov5s.pt...
######################################################################## 100.0%
Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients
Adding AutoShape...
image 1/1: 720x1280 2 persons, 2 ties
Speed: 1066.8ms pre-process, 77.1ms inference, 33.3ms NMS per image at shape (1, 3, 384, 640)
results.show()
视频检测
!python detect.py --source MyVideo_2.mp4
Traceback (most recent call last):
File "/home/liangjie/test/Modelwhale/deep learning/Y1/yolov5-master/yolov5-master/detect.py", line 43, in <module>
from models.common import DetectMultiBackend
File "/home/liangjie/test/Modelwhale/deep learning/Y1/yolov5-master/yolov5-master/models/common.py", line 20, in <module>
import pandas as pd
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/__init__.py", line 48, in <module>
from pandas.core.api import (
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/api.py", line 48, in <module>
from pandas.core.groupby import (
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/groupby/__init__.py", line 1, in <module>
from pandas.core.groupby.generic import (
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/groupby/generic.py", line 70, in <module>
from pandas.core.frame import DataFrame
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/frame.py", line 157, in <module>
from pandas.core.generic import NDFrame
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/generic.py", line 152, in <module>
from pandas.core.window import (
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/window/__init__.py", line 1, in <module>
from pandas.core.window.ewm import ( # noqa:F401
File "/home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/core/window/ewm.py", line 12, in <module>
import pandas._libs.window.aggregations as window_aggregations
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/liangjie/anaconda3/envs/newcdo/lib/python3.9/site-packages/pandas/_libs/window/aggregations.cpython-39-x86_64-linux-gnu.so)
这个问题是GLIBCXX_3.4.29’ not found ,确实没有3.4.29,需要更新到3.4.29z在运行
推荐阅读
-
OA 与 ERP 的区别和关系
-
YOLOV 与 pytorch 和 TensorFlow 的关系 tensorflow 与 yolo 的区别
-
三分钟带你了解手机内部硬件-主要影响手机性能的有以下几点 CPU - *处理器(手机中的大脑) CPU 是计算思考以及处理事物的。 比如:我们日常玩手机,什么最重要?毫无疑问是手机打开软件很流畅,使用各种功能不卡。 这就是CPU的性能,那什么影响 CPU 的因素有哪些? 架构 架构是 CPU 的基础,对于处理器的整体性能起到了决定性的作用,不同架构的处理器同主频下,性能差距可以达到2-5倍。可见架构的重要性。 那么什么是架构呢? 打个比方,架构就是一栋楼的框架。至于最终楼什么样子,就由处理器的厂商决定了,但是有一点,如果说这栋楼房的结构设计出来容纳多少人,那么最后建好的房子也要在这个范围内。同理,如果使用相同架构的处理器,那么本质上不会有太大的区别。 看一下主流手机的架构 处理器对比.jpg 从上图可见:高通 和 苹果都是自主设计,所以说它们牛还是有一定的道理的。不同的架构, 性能和功耗也是不同的。架构决定了 主频、核心数、带宽等和运算量直接相关的东西。目前很多手机打广告都是说 多少核的机器。但是并不是说核越多性能就越强,你没看见,苹果双核就能吊打高通和联发科吗? 制程 制程 专指:事物运作程序的处理过程。常指手机芯片框架的运算速度量。 简单的说就是电路板中电路与电路之间的距离,目前已经发展到纳米级别。 制程越小,可以向芯片中塞入更多的晶体管,随之而来的好处还有:降低电量和成本、散热。 制程数的确定 这里有人要问,为什么制程的数字是这些,而不是别的数字,比如有28nm,为什么没有29nm? 这其实是有一定规律的。根据早期国际半导体蓝图规划,由五个在相关领域较为发达的国家共同制定,约定下一代制程要在上一代基础上做到晶体管数量不变,芯片面积缩小一半。由这一关系可以算出前一代制程要比后一代大√2倍,所以能算出后一代大概数值。纵观整个处理器制程变化,除了少部分特殊的外,都遵循着这一规则。 近代制程的发展 2014 年底,三星宣布了世界首个 14nm FinFET 3D 晶体管进入量产,标志着半导体晶体管进入 3D 时代。发展到今天,三星拥有了四代 14nm 工艺,第一代是苹果 A9 上面的 FinFET LPE(Low Power Early),第二代则是用在猎户座 骁龙 820 和骁龙 625 上面的 FinFET LPP(Low Power Plus)。第三代是 FinFET LPC,第四代则是目前的 FinFET LPU。至于 10nm 工艺,三星则更新到了第三代(LPE/LPP/LPC)。 目前为止,三星已经将 70000 多颗第一代 LPE(低功耗早期)硅晶片交付给客户。三星自家的猎户座 8895,以及高通的骁龙 835,都采用这种工艺制造,而 10nm 第二代 LPP 版和第三代 LPU 版将分别在年底和明年进入批量生产。 手机芯片市场上已经进入了 10nm、7nm 处理器的白热化竞争阶段,而 14/16nm 制程的争夺也不过是一两年前的事。 总线位宽 总线位宽决定输入/输出设备之间一次数据传输的信息量,用位(bit)表示,如总线宽度为8位、16位、32位和64位。
-
PyTorch与TensorFlow的新功能亮点解析
-
科比鹰郡事件始末最强解析(全文)-插曲:OK两人最初的相识。OK两人在齐聚湖人之前就曾相遇。1992年,14岁的科比通过父亲的关系,进入了奥兰多更衣室向便士哈达威索要签名,但遭到置之不理,反倒是新秀时期的奥尼尔对科比鼓励有加,不仅给他签名,还和科比聊了很多,并且希望日后能在NBA看见科比,没想到一语成真,后者真的成为了他的队友,这也是日后奥尼尔对于科比和自己的矛盾产生仇恨心里的原因,因为奥尼尔始终认为最初对科比的善意没有换来以德报德。 多年以后,鹰郡事件女主角凯特琳澄清事实。据她自述,当时她是为了给母亲凑医药费,设法和科比发生关系,目的就是为了钱,科比支付的赔偿金拯救了她的母亲。最终事情真相浮出水面,这是有预谋的“仙人跳”讹诈,但是好事依然不出门。 不得不说,鹰郡事件是科比犯下的错。自此,除了篮球以外,科比将更多的时间回归家庭。然而鹰郡事件最大的受害者是科比本人和他的妻子瓦妮莎。那么他们都有哪些损失呢? 在道德上:科比饱受批评,引发不少妇女团体对他不满,甚至受人唾弃。 image 在家庭上:科比与瓦妮莎产生了信任危机,尤其是瓦妮莎的流产导致这个家庭失去了第二个孩子,而这个孩子或许是科比夫妇唯一的儿子。因此这件事让科比一直很后悔。 在金钱上:科比的律师费(至少1200万美元)、赔偿费(不少于500万美元)、再加上往返奔波费、诉讼费等估计超过2000万美金。此外商业上严重受阻,商业价值跌落谷底,赞助商几乎抛弃了他,阿迪达斯也在这个时候和科比解约。其经济损失不可估量。 在事业上:球迷的质疑和谩骂声音不断;湖人队内部发生微妙变化,队友和他有了一定距离;禅师菲尔杰克逊在得知科比“强奸”女性后更是对他区别对待,因为禅师的女儿曾经经历了强奸,他对科比十分厌恶,间接地导致禅师离开了湖人队;OK这对王炸组合解散;大卫斯特恩放弃了科比的造神计划,迅速将资源推向了詹姆斯;赛场上,虽然科比有着赶场法则的传奇,但就整个03—04赛季而言,科比表现起起伏伏,整体状态下滑明显。 image 不可否认,鹰郡事件导致科比处在生涯最低谷的时刻,那个阶段也许只有麦迪经常陪在科比身边给他带来一些安慰。但接下来科比以他顽强的意志和超乎常人的努力为自己进行救赎:三节打卡62分、单场81分神迹、连续4场50+、更改球衣号码变成黑曼巴、连续双一阵、MVP、奥运会冠军、两连冠+FMVP…… 现在回想起来,连当时受伤害最大的瓦妮莎都选择原谅了科比,但键盘侠们依然指指点点。 2018年3月5日,科比凭借其亲自参与制作并配音的退役动画短片《亲爱的篮球》获得了第90届奥斯卡“最佳动画短片奖”,而“小金人”的巨大荣誉,让奥尼尔都自嘲“兄弟,你真的让我羡慕!真没法追逐你了”,同时他也因此被选为了Animation Is电影节的评委。 image 随后科黑以“鹰郡事件”为理由向奥斯卡请愿,要收回科比的小金人,虽然小金人未收回,但10月18日,科比被取消了电影节的评委资格。 时间回到2020年。 1月26日科比因直升机坠毁意外身亡。斯人已逝,可喷子们还是没有放过他。有些人甚至借科比死亡这一消息来蹭热度! 就在科比去世的第二天,美国女演员埃文·蕾切尔·伍德(Evan Rachel Wood)在推特上称呼科比为“强奸犯”,遭到美国网友们的强烈反对。 一周后,据2月3日《每日邮报》消息,迪斯尼的女继承人阿比盖尔·迪斯尼在社交网络上连续发了24个帖子,直指2003年科比的性侵事件,认为科比犯强奸罪,强调科比不该被神化,他不是上帝。 但也有很多人相信科比没有强奸,据2月4日《每日邮报》报道,WNBA传奇女篮运动员丽莎·莱斯利为科比辩护,认为科比不是用武力侵犯女性的人,科比的妻子也一直在维护自己逝去的丈夫…… image 然而,不管是怎样的事实,即使法律宣判了科比无罪,即使是被敲诈勒索,成为受害人,可事到如今,科比依然被很多人戴上“强奸犯”的帽子,对于一个已经逝世的人来说,这是他最大的损失。 插曲:中国官方媒体对科比的态度,只列举一下几个主要媒体。