报了七月在线的行为识别班级,记录一下学习的笔记。
——————————————————————————————————————————
行为识别的定义:
Human Action Recognition (
HAR
) aims to automatically
examine
and
recognize
the nature of an
action from unknown video sequences.
人类行为识别的目标是是从一个未知的视频序列中,自动检测和识别出自然行为的工作。
行为识别的流程:
![](https://img-blog.csdnimg.cn/61274399da024236b7e80deb66c4a04a.png)
行为识别的流程分为四大步:目标识别、目标检测、人体姿态估计和人体行为识别。
行为识别系统通用的布局
![](https://img-blog.csdnimg.cn/740e797206684e308b24a65a65c52f43.png)
A
feature extraction
mechanism computes numeric or symbolic information from images or video frames.
Then, labels are accordingly affected to these extracted features by a
classifier.
都是从图片或者视频中提取出数字或符号特征,再利用分类器对特征进行分类。
行为识别方法的分类:
行为识别的分类包括外观、深度信息、光流法和骨架信息。相比与其他几种方法,骨架信息包含的信息最多。
人体姿态估计:
![](https://img-blog.csdnimg.cn/edca6f70859b451d9efcf7c234429a92.png)
Human Pose Estimation (HPE) is defined as the problem of
localization
of
human joints (also known as keypoints - elbows, wrists, etc) in images or videos.
人体姿态估计的定义是,从视频或者图像中,定位出人体的关键点。
行为识别常用的数据集:
以下是行为识别常用的数据集,其中MSCOCO是用的最多的数据集。
![](https://img-blog.csdnimg.cn/10bf56a0cefa4c9db29986ef5659a764.png)
Ubuntu下研发环境搭建的方法:
![](https://img-blog.csdnimg.cn/41a4924033d64755b9403d6c92d04c74.png)
安装包(apt-get):
$ sudo apt-get install <package_name> #安装一个包
$ sudo apt-get install <package_1> <package_2> <package_3> #安装多个包
$ sudo apt-get install <package_name> --only-upgrade #仅仅是更新包
$ sudo apt-get install <package_name>=<version_number> #安装一个指定版本的包
卸载包(apt-get):
$ sudo apt-get remove <package_name> #卸载一个包,保留其配置文件,下次重新安装后还原
$ sudo apt-get purge <package_name> #卸载一个包,不保留其配置文件
$ sudo apt-get clean #以下三个命令没区别,都是自动清除卸载残留
$ sudo apt-get autoclean
$ sudo apt-get autoremove
安装包(.deb):
$ sudo dpkg install *.deb PATH: *.deb #用命令行的方式
Double Click your mouse to click #图形界面方式,双击
查看已安装的包:
$ sudo dpkg –-list
卸载包(.deb):#两种方法一模一样
$ sudo dpkg --remove <package_name>
$ sudo dpkg --r <package_name>
推荐的IDE:
![](https://img-blog.csdnimg.cn/bd738f4e50454bc3a5c71e3f0c31a16b.png)
spyder,界面与MATLAB相似。
![](https://img-blog.csdnimg.cn/6afaf46ec59342b5bae22d43b12ad4bd.png)
安装方式:
sudo apt-get install spyder3
Python包安装方法:
用到的工具是pip
![](https://img-blog.csdnimg.cn/7ffb84463be74b15a9dbc0bb7ca4d690.png)
安装pip的命令为:
sudo apt install python3-pip
安装Python包的方法:
$ pip3 install SomePackage # latest version
$ pip3 install SomePackage==1.0.4 # specific version
$ pip3 install 'SomePackage>=1.0.4' # minimum version
卸载python包的方法:
$ pip3 uninstall SomePackage
pip的一些其他用法:
罗列已安装的包:
$ pip3 list
docutils (0.9.1)
Jinja2 (2.6)
Pygments (1.5)
Sphinx (1.1.2)
展示一个包的细节信息:
$ pip3 show sphinx
---
Name: Sphinx
Version: 1.1.3
Location: /my/env/lib/pythonx.x/site-packages
Requires: Pygments, Jinja2, docutils
常用的深度学习框架:
![](https://img-blog.csdnimg.cn/78f8d156dc8e48b2bd05fdefd162f998.png)
其中pytorch和TensorFlow用的最多,平分秋色。Pytorch学术界多一些,TensorFlow工业界多一些,Keras是TensorFlow的高级封装,开发方便但灵活性较差,很难自己拓展。
Pytorch的安装方法:
在官网上选择自己的操作系统、开发语言、Cuda版本号、安装方式等,官网自动给出安装的命令。
![](https://img-blog.csdnimg.cn/6f220b85877d4786b073793f50407898.png)
GPU版本CUDA的安装方法
1.显卡驱动安装
# Add graphics drivers to your source list:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt upgrade
# Check what driver will be installed:
$ ubuntu-drivers devices
# Auto install the latest driver:
$ sudo ubuntu-drivers autoinstall
# Then reboot your machine:
$ sudo reboot
通过如下命令可以查看显卡信息
$ nvidia-smi
![](https://img-blog.csdnimg.cn/8ccae1f04cc34634b5ecd3a882564c61.png)
2.CUDA安装
![](https://img-blog.csdnimg.cn/a6f6e9c39ec246ab92a03a6c2ff6ee22.png)
CUDA是NVIDIA显卡的通用并行加速库,在NVIDIA官网上选在操作系统、CPU型号、系统版本号、CUDA版本号,官网自动给出下载链接。
![](https://img-blog.csdnimg.cn/f4190d4a62304d879c0d98813c863d1f.png)
3.cuDNN安装
cuDNN是CUDA下专门用于加速神经网络的库,其安装方法是在官网上下载与已安装CUDA版本相匹配的cuDNN,并解压缩复制到CUDA对应的安装目录中。
![](https://img-blog.csdnimg.cn/ef9d2a190b554f20ab34018e8f664fe1.png)
Pytorch的特点。
1.tensor和numpy可以很方便的转换,而且很多用法都是相同的。
2.tensor和variable的区别,variable在tensor的基础上, 增加了计算梯度的方法。
3.设计网络结构有两种方法,一种是继承torch.nn.Module,并实现__init__和forward函数;一种是直接在torch.nn.Sequential中实现自己的网络结构。
4.保持训练好的网络,有两种方式:
torch.save(net1, 'net.pkl') # 保存整个网络
torch.save(net1.state_dict(), 'net_params.pkl') # 只保存网络中的参数 (速度快, 占内存少)
5.加载已经训练好的网络,对应也有两种方法
net2 = torch.load('net.pkl') #保存整个网络的这样加载
prediction = net2(x)
和
#仅保存参数的这样加载
def restore_params():
# 新建 net3
net3 = torch.nn.Sequential(
torch.nn.Linear(1, 10),
torch.nn.ReLU(),
torch.nn.Linear(10, 1)
)
# 将保存的参数复制到 net3
net3.load_state_dict(torch.load('net_params.pkl'))
prediction = net3(x)