视频检索 本文采用了三种方法进行视频检索 1 根据图像检索视频关键帧的算法 2 采用vedioSearch的方式进行检索 3 采用yolo视频目标检测的算法进行检索 下面针对三种方法进行详细说明
根据图像检索视频关键帧的算法
step1:提取新闻片头关键帧 step2:提取整个新闻的关键帧 step3:定义图像的相似度匹配算法 step4:根据相似的匹配算法匹配关键帧 代码如下:
计算图片的相似度
关键帧匹配算法
这是最后的结果 1.0匹配的精度为1 258 第258个关键帧得到匹配 keyframe_56.jpg 第56帧被匹配
采用vedioSearch的方式进行检索
开源视频检索技术VedioSearch https://blog.csdn.net/meloyi/article/details/53034823 https://github.com/andrefaraujo/videosearch 本项目主要做的事情是: 1 提取视频的关键帧(关键帧,其实就是视频中的一张图像)。 对视频进行镜头边缘检测。 2 对图片或者帧提取SIFT(尺度不变特征变换,用于在图像中检测出关键点,是一种局部特征描述子)。 3 为每张图片/关键帧、镜头或者视频片段 提取全局描述子(Fisher Vectors)。 4 使用Bloom Filters对每个视频片段进行索引。 5 使用图片对图片或者视频数据库进行检索。 6 用区间为0~1的平均精准度和精准度来评估检索结果。
本项目代码可以优化,得到最后的视频匹配效果 根据代码参考资料进行视频检索,得到一个很好的匹配度,但是不能够有实时的匹配
采用yolo视频目标检测的算法进行检索
修改yolov3目标检测到视频的目标检测 step1 安装cuda,cuddn,darkNet step2 运行darknet 图像的目标检测 step3 修改darknet 可以运行视频的目标检测 详细步骤如下:
- 下载代码:
git clone https://github.com/pjreddie/darknet
- 编译代码
cd darknet make
- 下载权重文件
wget https://pjreddie.com/media/files/yolov3.weights
- 修改代码运行
我们首先需要将“darknet”文件夹内的“libdarknet.so”文件移动到“darknet/python”内 打开“darknet/cfg/coco.data”文件,将“names”也改为绝对路径: 进入“darknet/python”然后执行“darknet.py”文件即可
- 修改代码进行视频的目标检测
1.修改src/image.c
2.然后在src/image.h大概22行插入:
3.修改Makefile文件:
4.然后make clean再重新make -j8就可以 5.修改python/darknet.py文件,这里我直接贴完整的程序了