- 博客(36)
- 收藏
- 关注
原创 PySlowFast 平台的使用及解析——以X3D为例
1.概述PySlowFast 是Facebook近期开源的一个视频理解项目,其中包含了数个优秀论文的实现,包括SlowFast、X3D、I3D等。项目的地址在这里,本人最近正在做用该项目作视频行为识别的相关内容,因此本文讲述在应用PySlowFast的一些问题,主要是展示代码的运行过程。在查看相关论文后,发现X3D是项目中无论是准确率还是速度比较优秀的一个,因此采取该方案来做行为识别。2. PySlowFast解读下边结合代码来解读PySlowFast框架的运行。因为项目工作时间有限,只对训练部分作了
2022-01-19 17:57:31
3403
10
原创 mmdetection学习系列(1)——SSD网络
1. 概述本文是本人自学mmdetection的第一篇文章,因为最近一段时间在做目标检测相关的内容,为了更好地研究领域内相关知识,特意花了不少时间熟悉mmdetection框架(https://github.com/open-mmlab/mmdetection)。边啃代码的同时边通过知乎openMMlab社区(https://www.zhihu.com/people/openmmlab)来了解其框架结构。刚开始看时由于对目标检测的整个流程还不算十分熟悉,而由于mmdetection是可以适用于多种网络的,
2021-06-01 20:55:25
4719
7
原创 吸烟行为检测
@目录项目概述yolov5详解优化方法项目概述项目的目标是设计出一个模型,用于检测普通大楼内外的行人是否存在吸烟的行为。项目硬件限制较大,需要用单个或数个GPU监控小区数百个摄像头,视频的取样频率只能达到一秒或者数秒一帧,因此基于时序的行为识别算法并不适用。经过初步考虑决定使用目标检测算法对图片中的香烟进行检测,目前精度较高且速度高部署方便的大概只有yolov5,因此本项目采取yolov5-4.0版本进行。https://github.com/ultralytics/yolov5/tree/v4.
2021-03-29 16:09:23
10129
21
原创 Kaggle之房价预测解读
题目来源https://www.kaggle.com/c/house-prices-advanced-regression-techniques本文部分代码参考https://www.kaggle.com/serigne/stacked-regressions-top-4-on-leaderboard本题是利用给出的每个房子的80个特征(如房屋面积,年龄等),预测其销售价格。评价预测的指标是...
2019-08-10 16:58:49
2537
1
原创 2019校招真题——数对
题目牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。牛牛希望你能帮他计算一共有多少个可能的数对。输入描述:输入包括两个正整数n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。输出描述:对于每个测试用例, 输出一个正整数表示可能的数对...
2019-07-31 11:13:11
243
原创 2019校招真题——被3整除
题目描述小Q得到一个神奇的数列: 1, 12, 123,…12345678910,1234567891011…。并且小Q对于能否被3整除这个性质很感兴趣。小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。输入描述:输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。输出描述:输出一个整数, 表示...
2019-07-30 17:22:22
318
原创 2019校招真题——牛牛找工作
题目描述为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=...
2019-07-30 16:11:47
239
原创 剑指OFFER-滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...
2019-07-24 09:56:46
130
原创 剑指OFFER-找出二叉搜索树第k小的节点
题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, 层序遍历序列(5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。此题难度不大,如果对二叉搜索树熟悉的话可以看出,如果对树进行中序遍历,则得到的序列就是从小到大排列的。因此可以得出算法代码,此处用递归进行实现class Solution {public: TreeNode* KthNode(T...
2019-07-19 10:47:28
452
原创 剑指OFFER- 统计一个数字在排序数组中出现的次数。
题目描述:统计数字在排序数组中出现的次数,例如输入数组{1,2,3,3,3,3,4,5,7,8}和数字3,则输出4,因为数字3在数组中出现了4次。解:此题最简单做法是扫描数组,每当碰到与数字一样的数组元素时,次数+1。这种做法的时间复杂度为O(N),而且没有用上数组有序这个性质。另一种做法是用二分法找到对应的数组元素下标,然后分别往数组的左边和右边扫描,找到第一个与最后一个元素。但是这种做法的...
2019-07-18 11:05:59
1802
原创 剑指OFFER-第一个只出现一次的字符
题目:查找出字符串中只出现一次的字符在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).解:这道题可以用哈希表。第一次扫描把字符串里的所有字符按顺序映射到哈希表中,并记录下出现次数。第二次扫描字符串,按顺序查找字符在哈希表中记录的次数,就可以找到第一个只出现一次的字符了。因为字符可以...
2019-07-17 22:02:22
139
原创 机器学习知识点总结
1. LR原理LR模型是通过把特征进行线性组合,再把组合通过一层sigmoid函数映射成结果为1或0的概率设一个样本属于正样本的概率为p,则P(Y=1∣x)=ew⋅x1+ew⋅xP(Y=1|x)=\frac{e^{w\cdot x}}{1+e^{w\cdot x}}P(Y=1∣x)=1+ew⋅xew⋅xP(Y=1∣x)=11+ew⋅xP(Y=1|x)=\frac{1}{1+e^{w\cd...
2019-04-19 21:04:08
532
原创 机器学习之贝叶斯分类
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的基础上得出的分类方法。朴素贝叶斯法实现简单,学习与预测效率高,是一种常用的方法。当样本中的各个变量独立时,朴素贝叶斯法所得出的分类结果准确率是最高的。但是这个条件比较苛刻,在实际情况中各个变量往往具有相关性。即使如此,当变量之间相关性较低时,贝叶斯分类依然有较好的分类性能。下边结合李航老师的统计学习方法以及一些网站用例子来直接理解贝叶斯分类。1....
2019-03-18 21:59:20
1647
原创 机器学习之逻辑回归
逻辑回归(Logistic regression)是统计学习中经典的分类方法,其基本用法是用于二分类,但是也很容易推广到多分类。1.逻辑函数(sigmoid 函数)首先介绍一下sigmoid函数,其基本形式如下:g(x)=11+e−xg(x)=\frac{1}{1+e^{-x}}g(x)=1+e−x1其图像如下当z趋向无穷大时,g(z)趋向与1,当z趋向无穷小时,g(z)趋向于0。...
2019-03-10 15:48:44
213
原创 C++之类
类是C++中面向对象编程的核心,通过数据隐藏和方法封装,用户只需要关心对象的数据以及操作内容。对于数据如何存储,操作如何实现等细节则无需处理。本文结合C++PrimerPlus以及网上的一些文章,讲述一下类实现的一些重点难点,有些基本概念可能会跳过,不明白的内容可以自行百度。1. 构造函数和析构函数类的构造函数和析构函数是其中两个很重要的标准函数。当类创建时,将会调用构造函数,当类被删除时,...
2019-03-08 16:52:19
166
原创 指针
本系列文章主要参照C++Primer Plus,以及网上的一些文章。讲述一下在学习C++时碰到的一些重点难点,以及面试时有可能会问的点。本文介绍的是指针的内容。指针计算机存储数据必须有的3个属性为信息存储的地方信息的值信息的类型其中指针是用于跟踪数据在内存中的位置,知道了指针的值,就能够在内存找到其位置,并对其操作。指针的简单应用可以参考其他文章,在这里不赘述。1. new关...
2019-03-04 16:56:57
152
原创 决策树
本文主要讲述决策树的原理,优缺点,以及使用方法。部分内容参考统计学习方法1.什么是决策树决策树是一种基本的分类和回归方法,其模型呈树形结构,可以认为是if-then的规则集合。其优点是具有很好的可读性,训练和预测的速度快。训练时,利用训练数据,根据损失函数最小化的原则建立决策树模型,预测时,直接利用模型进行分类或回归。决策树训练通常包括3个步骤:特征选择、决策树生成以及修剪。后边的章节会对其进...
2019-02-27 22:13:18
3823
原创 c++ 实现K近邻算法
本文部分内容参考与这里和这里本文着重于介绍用c++实现K近邻算法。首先介绍一下K近邻算法的原理和优缺点。KNN算法原理对于一个数据样本集合,每条数据都有对应的标签。当输入一个新的,没有标签的数据时,算法将新数据的每个特征与样本中对应的特征进行比较。然后选取数据集中前k个最相似的数据,其中出现最多的标签分类,作为新数据的分类。优点精度高,对异常值不敏感,无输入数据假定缺点计算复杂度高...
2019-01-26 11:10:29
1660
1
原创 Kaggle之泰坦尼克号
本文大部分内容参考于这里以及这里,主要用于自己阅读后的总结以及结果的复现。Titanic 是kaggle上每个新手都要接触的第一个项目。机器学习在最开始创建模型的时候不要先想着做得完美,可以先做一个baseline出来,再慢慢挖掘数据的特征优化模型。前人说过,对数据的特征分析比模型的建立还重要,因此打算用Titanic这个数据集,对特征分析(feature engineering) 作一个深入...
2019-01-21 10:15:01
786
原创 图像识别与卷积神经网络
卷积神经网络是除了全连接神经网络以外另一个常用的网络结果,其在图像识别方面表现十分突出。本文结合Tensorflow:实战Google深度学习框架,讲述卷积神经网络常用数据集,介绍卷积网络的结构思想,以及通过TensorFlow实现其设计。1 图像识别数据集MNIST手写体识别数据集解决是一个相对简单的问题,而对于更加复杂的类别,可以用到CIFAR数据集。比如CIFAR10数据集收集了来自10...
2019-01-10 20:33:22
9363
1
原创 剑指Offer——旋转数组的最小数字
题目:把一个数组的最开始几个元素搬到数组的末尾,叫做数组的旋转。输入一个递增数组的旋转,找出其最小元素,例如数组A{3,4,5,1,2}是数组B{1,2,3,4,5}的一个旋转,输入数组A后,输出最小元素应该为1此题最直观的解法,从头到尾遍历数组,当第N个元素比第N-1个元素小时,第N个元素即为数组的最小元素。此法所需时间复杂度为O(N)注意到在有序数组中查找某个数字的时候是可以用二分查找将时...
2018-12-28 20:17:34
137
原创 剑指Offer——删除链表中的节点
给定单向链表的头指针以及链表中的节点指针,要求在O(1)时间内删除该节点这里我们假设给定要删除的节点一定位于链表内。否则的话如果需要确定链表中是否包含该节点,则要O(N)的时间。删除链表中的一个节点有两个方法,方法一如上图(a),需要删除的是节点i,此时需要获得其前一个节点h,将h由原来指向i变为指向j,然后再删除i即可。此法需要获得删除节点的上一个节点,对于本题,由于是单向链表,如果要获...
2018-12-28 12:15:23
602
原创 剑指Offer——两个链表的第一个公共节点
题目:输入两个链表,返回两者的第一个公共节点如上图,根据链表的结构,可以看出当两个当链表交汇后,之后的所有节点都肯定会一样。所以第一个问题就要先确定输入的两个链表是否存在公共节点。可以分别遍历链表到末尾,如果两个尾节点一样,可以确认存在公共节点,否则一定不存在。接下来需要确认公共节点的位置,容易看出如果两个链表长度一样的话,那么声明两个分别指向两个链表的头指针,以同样速度遍历链表,当两者首...
2018-12-28 10:57:07
106
原创 剑指Offer——链表中环的节点入口
题目:如果链表中存在环,则找出环的入口节点,如下图,环的入口为节点3首先要想办法确认链表中是否有环。链表中有环表明链表中没有尾节点,因此遍历的时候会一直循环下去永不停止。用一个指针的话很难确认表中是否有环。因此我们尝试用两个指针,让一个指针走快一点,一个指针走慢一点,当两个指针指向的节点一样时,可以确认链表中一定有环。否则如果当走得快的那个指针已经到尾节点,链表肯定就没有环了。之后尝试确认...
2018-12-27 17:24:50
184
原创 剑指Offer——输出链表倒数第K个节点
题目:输入一个链表,输出该链表的倒数第K个节点,例如链表尾1、2、3、4、5、6,要求输出倒数第3个节点,则输出节点值为4
2018-12-27 12:00:53
144
原创 剑指Offer——合并两个排序链表
题目:输入两个递增排序的链表,合并两个链表并使新链表依然是有序的链表定义如下:typedef struct ListNode{ int Value; ListNode *Next;} *LinkList;例子如下:首先考虑输入特殊情况。我们假设输入链表如果不为空的话必然有序,也就是说不用判断其有序性。当输入链表都为空指针,此时返回的链表也需要为空指针。如果输入链表其中一个...
2018-12-25 17:19:32
119
原创 剑指Offer——翻转链表
题目:写出一个函数,给定一个链表的头节点,反转该链表并输出其头节点链表的每个节点定义为一个struct,其包含元素以及下一个节点的地址struct Node{ int Value; Node *next; } *LinkList对于链表头和链表尾,也有多种定义方式。比如:链表头定义为表的第一个节点,链表尾定义为最后一个元素。此时LinkList list;int value...
2018-12-25 16:09:13
182
原创 剑指Offer-替换空格
题目: 请实现一个函数,把字符串的每一个空格替换成%20. 例如输入 we are happy, 输出we%20are%20happy最简单但是效率很低的做法,是从头到尾扫描字符串,每碰到一个空格就将其替换长%20,同时将字符串向后移动两格,否则%20会将字符串内容覆盖。这种做法的时间复杂度是O(N2^22)。另外一个做法是先扫描一次字符串,确定有多少空格后就能知道字符串在替换后的容量了。再从...
2018-12-25 08:49:56
82
原创 剑指Offer——找出数组中重复的元素
题目:在一个长度为n的数组中所有数字都在0~n-1的范围内,数组中某些数组是重复的,但是不知道有多少数字重复,也不知道重复了几次。请在数组中找出任意重复的一个数字。例如数组长度为7,{2,3,1,0,2,5,3},对应输出的数字应该是2或者3解决方法有很多,最容易理解的思路是把数组排序,完成后只要再扫描一次数组就可以确认有没有重复数字存在,也可以把所有重复数字找出。排序最快的时间复杂度是O(Nl...
2018-12-24 21:06:39
869
原创 MNIST数字识别问题
MNIST是手写体识别数据集,是大多数深度学习教程的入门资料。本文结合这个数据集,利用TensorFlow搭建神经网络。介绍了变量重用和名称空间的问题。以下的代码以及内容,基本上来自Tensorflow:实战Google深度学习框架1 MNIST介绍MNIST是一个手写体数字识别数据集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。每张图片代表0-9中的其中一个数字,图...
2018-12-19 20:10:54
626
原创 深层神经网络(DNN)的一些基本概念
本文介绍一些DNN的概念,包括激活函数、损失函数、优化算法等声明:本文的主要内容及代码主要来源于实战Google深度学习框架1 激活函数DNN的最大突破就是引入了非线性激活函数,如果没有激活函数,那么无论神经网络深度如何,它与一个1层网络本质上是没有区别的。通过增加网络的层数,并且在层与层之间添加非线性项以及偏置项f(∑ixiwi+b)f( \sum \limits_{i}x_iw_i+b)...
2018-12-14 16:22:56
4218
原创 TensorFlow入门
声明:本文的主要内容及代码主要来源于实战Google深度学习框架1.TensorFlow数据模型——张量TensorFlow的张量和数学上的张量十分相似,简单来说可以用来表示一个多维数组,TensorFlow中实现张量并不是直接采用数组的形式,只是对运算结果的一个引用,如下:import tensorflow as tfa = tf.constant([1.0,2.0],name='a')...
2018-12-12 21:30:30
544
2
原创 排序
本文主要讲解几个最常用的排序算法:冒泡排序,插入排序,快速排序,归并排序。1 冒泡排序假设排序目标是将元素从小到大排列,则冒泡排序的做法是:从数组最后一个元素起,不断向左比较相邻的元素,如果两个元素顺序不正确,则交换两个元素,直到数组头。此时数组头部的元素肯定是剩下的元素中最小的。不断进行这个过程直到没有元素需要交换。例:有5个元素需要排序:4 2 1 3 5第一次循环:4 1 2...
2018-12-12 10:20:47
161
原创 树
表与树的不同在于,表的每一个节点都是一对一的关系,每个节点最多就有一个前向和一个后向节点。而树的话每个节点都最多有一个前向节点,能有多个后向节点。树的定义方法有多种,数据结构表示方法也很多,但是因为所有的树都能用二叉树来表示,所以这里就只说二叉树的问题。树的一些基本概念,如深度,高等等就忽略了。本文先讲述一下搜索树的建立,因为搜索树比较简单,建立之后会用递归和非递归的方式叙述一下前中后序遍历,...
2018-12-08 16:13:09
137
原创 栈和队列
栈栈是一种特殊的表,正常的表能在表的任意处进行插入和删除操作,但是栈只能在表的末尾进行插入删除操作,因此最先进去的元素会最后出来,对应表的操作就只有push_back和pop_back了,因为关于表的实现已经在文章中实现,这里就不详述了。下边重点介绍一下栈的应用。栈的应用1 平衡符号在写代码时碰到一个问题就是括号匹配的问题,代码块的括号,如(),[],{}如果不匹配的话编译器将会报错,要解...
2018-11-25 15:16:02
187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人