视频单目标跟踪综述
前言最近关于目标跟踪论文的一些论文笔记
主要思路:第一帧指定目标,后续帧持续跟踪目标目标跟踪领域两大主流算法框架:1.基于相关滤波 2.孪生网络当前算法需要解决的问题:算法无法长时间、低功耗、抗干扰的环境下实用应用未来目标跟踪方向:多模态数据融合,将深度图像、红外图像、传统彩色视频联合分析
跟踪也可与视频目标检测、分割问题交叉研究解决深度学习需要大量训练数据集:弱监督、无监督方法 的目标跟踪是未来方向
近10年发展2010年来基于相关滤波的目标跟踪算法出现:具备良好的精度和超高的速度目标跟踪数据集:OTB、LaSOT,普通彩色(RGB)视频数据集、1个彩色-深度视频、1个彩色-红外(RGB-T)视频数据集
视频目标跟踪中的挑战目标消失包括遮挡和移出相机视野范围,当视野重新出现如何追踪目标?会导致跟踪失败
目标变化目标形变、目标旋转
背景干扰背景杂乱,光照变化。如果有效的前背景分离,精确的抓取前景,抑制背景也是需要解决的问题
目标移动目标快速运动和目标运动模糊由于目标跟踪通常采取在目标前一帧所处的位置周围区域进行搜索的策略,目标移动可能超出搜索区域目标运动本身会造成目标前景虚化,从而影响 ...
算法复杂度
递归算法时间复杂度 = 递归的次数 * 每次递归中的操作次数递归算法的空间复杂度 = 每次递归的空间复杂度 * 递归深度
时间复杂度
统计的是算法的「计算操作数量」,而不是「运行的绝对时间」。计算操作数量和运行绝对时间呈正相关关系,并不相等。算法运行时间受到「编程语言 、计算机处理器速度、运行环境」等多种因素影响。例如,同样的算法使用 Python 或 C++ 实现、使用 CPU 或 GPU 、使用本地 IDE 或力扣平台提交,运行时间都不同。
体现的是计算操作随数据大小 N 变化时的变化情况。假设算法运行总共需要「 1 次操作」、「 100次操作」,此两情况的时间复杂度都为常数级 O(1) ;需要「 N 次操作」、「 100N 次操作」的时间复杂度都为O(N) 。
时间复杂度具有「最差」、「平均」、「最佳」三种情况,分别使用 (欧米可容)O , (西塔)Θ , (欧米茄)Ω 三种符号表示。复杂度只与N有关O(1):运行次数与 N大小呈常数关系,即不随输入数据大小 N 的变化而变化O(logN): 对数阶,对数阶常出现于「二分法」、「分治」等算法中,体现着 “ ...
node操作MySQL数据库
前言本文介绍如何在node.js中使用MySQL
安装mysql模块是托管于npm上的第三方模块,提供Node.js中操作数据库npm i mysql
配置Mysql注意这里需要在MySQL中提前建好库和表,建库建表方式自行搜索
// 1. 导入 mysql 模块const mysql = require('mysql')// 2. 建立与 MySQL 数据库的连接关系const db = mysql.createPool({ host: '127.0.0.1', // 数据库的 IP 地址 user: 'root', // 登录数据库的账号 password: '123456', // 登录数据库的密码 database: 'my_schema', // 指定要操作哪个数据库})
测试mysql模块// 测试 mysql 模块能否正常工作db.query('select 1', (err, results) =>{ // ...
YOLO5自制数据集
本文设计的代码与素材均在这里,如果对您有帮助,欢迎start
1.打标签执行labelImg.exe,制作xml数据集
2.构建VOC2007目录将标注好的xml文件放在Annotations目标中将图片放在JPEGImages中
3.用python依次执行1,2,3,后面会提供1,2,3程序注意:执行1.数据集划分.py之前需要修改数据集划分的比例(可以不修改)注意:执行2.voc_label.py之前需要修改类别(必须修改)依次执行1,2,3py文件,会生成一堆其他文件和这个yolo5_data将生成的uolo5_data拷贝到yolo项目
4.在YOLO5项目的data目录中新建自己的yaml文件写入下面内容nc为分类数量,name是标签名字
5.修改train.py文件1处需要打开到对应的文件models/yolo5s.yaml文件,修改为分类数量2处需要改为前面新建的yaml的名字
6.开始训练执行train.py若是第一次配置1%执行train.py文件就可以开始训练自己的数据集99%的可能出现错误,比如:显存不足,模型权重版本不正确,电脑环境没配置好。要根据报错 ...
ubuntu装显卡驱动装cuda
查看显卡有没驱动(会输出显卡的16进制):lspci | grep -i vga16进制对应显卡型号查询:http://pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci注意环境变量修改完 bashrc后要source一下
升级linux内核:https://zhuanlan.zhihu.com/p/75669680安装驱动:https://zhuanlan.zhihu.com/p/463656273安装驱动:https://zhuanlan.zhihu.com/p/459747527无法连接wifi,wifi图标丢失,重启电脑成功验证:
安装cuda:https://blog.csdn.net/NCU_Wang/article/details/123612184安装cudnn: 下载完成后直接双击即可安装
安装anaconda:官网下载 https://www.anaconda.com/products/individualbash Anaconda3-202x.07-Linux-x86_64.sh(自动配置环境变量重启窗口)
torch环境各个版本相互支持情况
pip报错,首先检查源的问题去用户目录下conda文件删除一些内容官方推荐方式,但是这种方式由于墙的存在容易挂掉
cudacuda下载
版本依赖关系注意:>=516.01指的是你的显卡驱动版本517.0、518.0都可以安装CUDA11.7GA版本的CUDA
torchwhl下载链接,下载完成直接pip install ***.whl注意:aarch64表示arm64位适用于树莓派和Xavier的ARM架构的CPU
测试输出为true表示配置成功
import torchprint(torch.cuda.is_available())
Tensorflow深度学习环境搭建
查看显卡支持的cuda
安装VS2015原因分析:原因一:系统里面已经存在了Microsoft Visual C++ 2015版本。原因二:系统里面有更高的Microsoft Visual C++版本,例如Microsoft Visual C++ 2017版本解决方案:原因一解决方案:卸载Microsoft Visual C++ 2015了再安装即可。原因二解决方案:同时卸载Microsoft Visual C++ 2015和卸载Microsoft Visual C++ 2017,再安装Microsoft Visual C++ 2015-2019即可。注:最后记得把Microsoft Visual C++ 2017安装回来。
安装anacondaanaconda下载:https://www.anaconda.com/products/distribution3.配置环境变量D:\AnacondaD:\Anaconda\ScriptsD:\Anaconda\Library\bin(可以不加,不加有可能出现无法创建虚拟环境的问题)4.检测是否安装成功conda –versioncond ...
某机器人公司实习总结
前言这段实习在一个小公司,实习期间用到的技术栈比较杂。
前端开发刚入职时领导了解我做过Web开发,因为负责Web开发的员工已经离职几个月了,公司的官网一直没人维护,我的第一个任务就是修改公司的官网。更新产品信息、调整样式。这个Web只是作为展示没有后端,用到技术其实有HTML、CSS、JS、JQuery。改完后使用阿里云的OSS部署(将阿里云OSS存储空间作为静态网页的托管平台),将修改好文件通过ossbrowser上传,再开个端口映射基本就完事了,后续也只是偶尔有些小改动。
内网穿透第二个任务和网络相关,领导让我研究如何远程访问水下机器人上指定串口的数据。注意不是网口数据,而是串口数据。将这个问题拆分为了以下几个步骤完成:
使用串转网模块。将串口数据转换成网络数据(server)
使用网络调试助手(client)接受并解析出串口数据。此时内网环境下能访问到数据,接下来,需要实现外网访问。
使用4G模块,将机器人内容的网络接入互联网。这里的水下机器人在水上拥有浮标,在浅海能连上4G网。
内网穿透
因为4G模块并没有公网IP,要访问里面的指定IP和端口的数据,必须做内网穿透。
最开始 ...
QT调Python
前言记一次使用QT调用python。
实验环境:win10–64位anaconda-python3.6–64位Qt 5.13.2–64位
实验步骤:1.用Qt建项目,如图选择Qt Console Application ,注意需要建64bit的项目(我选的MinGW)2.在.pro文件末尾添加如下代码,需要更改成自己的Python环境INCLUDEPATH+=D:\app\anaconda3\envs\pytorch-1.1\include#############pythonenviromentLIBS+=-LD:\app\anaconda3\envs\pytorch-1.1\libs-l_tkinter-lpython3-lpython363.将main.cpp文件修改为下面的代码
#include <QCoreApplication>#include <Python.h>#include <iostream>using namespace std;int main(int argc, char *argv[]){ ...
C++调用pytorch模型
前言记一次C++调用pytorch模型踩坑记录,跨语言是AI中急需解决的问题,本文采用#include <Python.h>执行python代码
问题:Cant open python file!
解决办法:将python环境的Dlls文件复制过来(通过sys.path排除)
问题:<built-in method locked of _thread.lock object at 0x000000002A2E7328>returned a result with an error set原因分析:Python文件执行时间太长耽误了C++主线程
解决办法:C++启动多线程调用Python(仍然无法解决)另外的方法:一条一条执行每条python指令(已解决)这样就可以运行处模型结果
#include "workthread.h"#include <QtDebug>#include <Python.h>#include <QMutex>QMutex mutex;WorkThread::WorkThread() ...