matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow
PyYAML>=5.3.1
scipy>=1.4.1
tensorboard>=2.2
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0
缺啥补啥吧......
1.项目主要分为三个模块:唇语识别分类模块、目标检测模块和前端展示模块(检测和前端合并到Yolov5_Web中)
2.项目处理顺序为前端读取一个唇语视频,经过前端模块的视频切帧,再传入目标检测算法中进行唇部定位,并根据结果切割唇部图像,最后送入分类网络中进行处理识别
3.前端框架用的是轻量级python web框架flask,目标检测算法为yolov5,分类网络用的是3DResNet
4.数据集采用的是2019年新网银行人工智能挑战杯唇语识别赛道的数据集,训练数据数量一共9996个样本,测试数据一共2504个样本,总的类别是313类,
词语中只有两字词和四字词,样本比例为6816:3180,在313个类中的类别比例为213:100,313类中有311个类别有32个样本,只有“落地生根”和“卓有成效”两个样本有22个样本,样本非常均衡,
样本的图片数量,除了异常数据外,基本分布在2张到24张之间,且两字词和四字词的图片数量有大量重叠,这意味着这一维信息很难利用,在测试集中的图片数量也基本和训练集一致。
1.首先是目标检测模块,根据需求下载权重文件,如yolov5s.pt;在lip_data目录中存放yolo格式的数据集,images目录下分为train和val,按照比例划分数据,同理还有labels目录, 在data目录下更改yaml文件,根据类别与目录修改;然后到models目录下,同样修改配置文件yolov5的yaml文件,一切准备就绪即可训练与测试。
2.在分类识别模块中,需要准备以下工作,首先是数据使用目标检测中detect_ob.py得到数据集对应的坐标标签,再通过crop_lip.py进行切割图像,得到新的数据集; 然后才是数据的预处理,通过运行LipReading目录下的data_process.py文件得到train_data.dat和词表vocab.txt,然后即可训练与预测。 在LipResding目录下的data_division.py文件,是用来抽取数据类别的,比如原数据313个类别,我抽取100个类别来训练。
3.在web模块中,方法基本就是整合目标检测与图像分类两大网络而成的单一数据处理,唯一不同是多了一个视频切帧,与前端和后台的交互,app.py文件即使后台数据处理文件, 前端资源和静态页面在templates和static中,同时还有一些视频与图像存放文件,目录配置LipReading中的opt.py中,在工程目录下一个是算法目录LipRead2021,另一个是存放数据的, Web_data中就是存放词表vocab.txt,和视频存放的uploads