本文目录一览:
- 1、高大上的YOLOV3对象检测算法,使用python也可轻松实现
- 2、如何查看python源代码
- 3、NLP之gensim库python实现文本相似度/匹配/查重
- 4、python代码查重原理
- 5、10个极简python代码,拿走即用
高大上的YOLOV3对象检测算法,使用python也可轻松实现
继续我们的目标检测算法的分享,前期我们介绍了SSD目标检测算法的python实现以及Faster-RCNN目标检测算法的python实现以及yolo目标检测算法的darknet的window环境安装,本期我们简单介绍一下如何使用python来进行YOLOV3的对象检测算法
YOLOV3的基础知识大家可以参考往期文章,本期重点介绍如何使用python来实现
1、初始化模型
14-16 行:
模型的初始化依然使用cv下的DNN模型来加载模型,需要注意的是CV的版本需要大于3.4.2
5-8行:
初始化模型在coco上的label以便后期图片识别使用
10-12行:
初始化图片显示方框的颜色
2、加载图片,进行图片识别
输入识别的图片进行图片识别,这部分代码跟往期的SSD 以及RCNN目标检测算法类似
19-20行:输入图片,获取图片的长度与宽度
25-29行:计算图片的blob值,输入神经网络,进行前向反馈预测图片
只不过net.forward里面是ln, 神经网络的所有out层
3、遍历所有的out层,获取检测图片的label与置信度
遍历out层,获取检测到的label值以及置信度,检测到这里YOLOV3以及把所有的检测计算完成,但是由于yolov3对重叠图片或者靠的比较近的图片检测存在一定的问题,使用YOLOV3使用非最大值抑制来抑制弱的重叠边界
竟然把墨镜识别了手机,体现了YOLOV3在重叠图片识别的缺点
4、应用非最大值抑制来抑制弱的重叠边界,显示图片
56: 使用 非最大值抑制来抑制弱的重叠边界
58-59行:遍历所有图片
61-62行:提取检测图片的BOX
64-68行:显示图片信息
70-71行:显示图片
利用python来实现YOLOV3,与SSD 以及RCNN代码有很多类似的地方,大家可以参考往期的文章进行对比学习,把代码执行一遍
进行视频识别的思路:从视频中提取图片,进行图片识别,识别完成后,再把识别的结果实时体现在视频中,这部分代码结合前期的视频识别,大家可以参考多进程视频实时识别篇,因为没有多进程,检测速度很慢,视频看着比较卡
1、初始化模型以及视频流
2、从视频中提取图片,进行图片的blob值计算,进行神经网络的预测
3、提取检测到图片的置信度以及ID值
4、 应用非最大值抑制来抑制弱的重叠边界,显示图片
5、关闭资源,显示图片处理信息
每个目标检测算法都有自己的优缺点,个人感觉,在精度要求不是太高的情况下SSD检测算法可以实现较快的速度实现,毕竟精度差不多的情况下,我们希望速度越快越好
如何查看python源代码
众所周知,Python内建了许多函数模块,并且我们可能还会安装许多第三方模块等等。
下面以getpass为例查看其源代码。
1.help(getpass)
输入该命令找到file路径,并且可以查看其其提供的功能。
2.利用getpass.__file__查看位置
最后找到该文件,用记事本或其他编辑器打开即可。
3.PyCharm编辑器
在该类或方法上按住“ctr+鼠标左键”可以快速查看源代码。
4.dir(对象名)
该方法可以快速查看有哪些方法。
想要查看每个功能的解释,用help(type(对象名))
python学习网,大量的免费python视频教程,欢迎在线学习!
NLP之gensim库python实现文本相似度/匹配/查重
给定一个或多个搜索词,如“高血压 患者”,从已有的若干篇文本中找出最相关的(n篇)文本。
文本检索(text retrieve)的常用策略是:用一个ranking function根据搜索词对所有文本进行排序,选取前n个,就像百度搜索一样。
结巴分词后的停用词性 [标点符号、连词、助词、副词、介词、时语素、‘的’、数词、方位词、代词]
对一篇文章分词、去停用词
对目录下的所有文本进行预处理,构建字典
python代码查重原理
a=['python',1,2,3,1,6,'a','a',3,3,3,'a','python','3','8']
b=list(set(a))
cf=[]
for i in b:
cf.append(a.count(b))
for i in range(len(b)):
print(b[i],'一共有',cf[i],'个',sep='')
10个极简python代码,拿走即用
Hello,大家好,我是程序汪小成~
虽然python是一个易入门的语言,但是很多人依然还是会问到底怎么样学 Python 才最快,答案当然是实战各种小项目, 只有自己去想与写,才记得住规则 。本文写的是 10 个极简任务,初学者可以尝试着自己实现;本文同样也是 10段代码,Python 开发者也可以看看是不是有没想到的用法。
以下方法可以检查给定列表是不是存在重复元素,它会使用 set() 函数来移除所有重复元素。
给定具体的大小,定义一个函数以按照这个大小切割列表。
这个方法可以将布尔型的值去掉,例如(False,None,0,“”),它使用 filter() 函数。
我们常用 For 循环来遍历某个列表,同样我们也能枚举列表的索引与值。
如下代码段可以将打包好的成对列表解开成两组不同的元组。
该方法将通过递归的方式将列表的嵌套展开为单个列表。
该方法将返回第一个列表的元素,且不在第二个列表内。如果同时要反馈第二个列表独有的元素,还需要加一句 set_b.difference(set_a)。
如下代码块可以用来计算执行特定代码所花费的时间。
该算法会打乱列表元素的顺序,它主要会通过 Fisher-Yates 算法对新列表进行排序:
不需要额外的操作就能交换两个变量的值。
以上,是我简单列举的十个python极简代码,拿走即用,希望对你有所帮助!