Multimodal Machine Learning
模态
在人机交互的背景下 模态是计算机和人之间的单一独立感官输入/输出通道的分类 如果系统仅实现一种模态 则将其指定为单模态 如果具有多个模态 则将其指定为多模态
多模态
多模态指的是多种模态的信息(包括: 文本、视频、音频等) -> 多模态研究的就是这些不同类型的数据融合问题
多模态研究的是视觉语言问题,其任务是关于图像和文字的分类、问答、匹配、排序、定位等问题。
目标检测
- NMS: Non-maximum suppression 即非极大值抑制在目标检测中的出镜率也很高呀。在目标检测中,不论是最初的region proposal,还是后来的anchor box,不可避免的一个问题就是对于同一个物体,会预测出多个bounding box。而NMS所做的就是去除掉多余的bounding box,只保留和ground truth重叠度最高的bounding box. (参考链接)
- Bounding box regression: 其实就是对提取出来的不太准确的结果 进行微调调整为ground truth(参考链接)
- Kalman Filter: 卡尔曼滤波法 简而理解的话就是利用已知的量去预测未知的量(通常这些量无法直接测量 或者测起来比较困难) 专业一些的话 kalman Filter就是一种优化估值算法 可以预测所需要的参数(例如 位置 速度 方向)且是在存在误差的情况下 (参考链接)
目标跟踪
目标检测和目标跟踪的区别在于 理想情况下可以使用它目标检测的方法去一直实现目标跟踪 但如果在某一时刻目标遭到了遮挡 那么目标检测就会失效即会失去的目标 即在目标跟踪的这个动态的过程会存在着许多没有目标的时刻 通常采用 kalman filter, deepsort 等方式进行解决 当然目标检测和目标跟踪还有很多不同 尤其是涉及多目标跟踪时
- 分类
- 按研究领域
- 单目标跟踪: 给定一个目标 追踪这个目标的位置
- 多目标跟踪: 追踪多个目标的位置
- Person ReID: 行人重识别
- MTMCT: 多目标多摄像头跟踪 跟踪多个摄像头拍摄的多个人
- 姿态跟踪: 追踪人的姿态
- 按任务计算类型
- 在线跟踪: 在线跟踪需要实时处理任务,通过过去和现在帧来跟踪未来帧中物体的位置
- 离线跟踪: 离线跟踪是离线处理任务,可以通过过去、现在和未来的帧来推断物体的位置,因此准确率会在线跟踪高
- 按研究领域
- 目标跟踪的困难点:
- 形态变化: 姿态变化是目标跟踪中常见的干扰问题。运动目标发生姿态变化时, 会导致它的特征以及外观模型发生改变, 容易导致跟踪失败。例如:体育比赛中的运动员、马路上的行人
- 尺度变化:
- 当目标尺度缩小时 -> 跟踪框不能自适应跟踪 会将很多背景信息包含在内 导致目标模型的更新错误
- 当目标尺度增大时 -> 由于跟踪框不能将目标完全包括在内 跟踪框内目标信息不全 也会导致目标模型的更新错误
- 遮挡与消失: 目标在运动过程中可能出现被遮挡或者短暂的消失情况。当这种情况发生时, 跟踪框容易将遮挡物以及背景信息包含在跟踪框内, 会导致后续帧中的跟踪目标漂移到遮挡物上面。若目标被完全遮挡时, 由于找不到目标的对应模型, 会导致跟踪失败
- 图像模糊: 光照强度变化, 目标快速运动, 低分辨率等情况会导致图像模型, 尤其是在运动目标与背景相似的情况下更为明显。因此, 选择有效的特征对目标和背景进行区分非常必要。
- 目标跟踪方法:
- 生成式模型: 此类方法首先建立目标模型或者提取目标特征, 在后续帧中进行相似特征搜索.逐步迭代实现目标定位(早期工作) -> 缺点 图像的背景信息没有得到全面的利用.且目标本身的外观变化有随机性和多样性特点, 因此, 通过单一的数学模型描述待跟踪目标具有很大的局限性.具体表现为在光照变化, 运动模糊, 分辨率低, 目标旋转形变等情况下, 模型的建立会受到巨大的影响, 从而影响跟踪的准确性; 模型的建立没有有效地预测机制, 当出现目标遮挡情况时, 不能够很好地解决。
- 鉴别式模型:鉴别式模型是指 将目标模型和背景信息同时考虑在内 通过对比目标模型和背景信息的差异 将目标模型提取出来 从而得到当前帧中的目标位置 文献在对跟踪算法的评估中发现[25], 通过将背景信息引入跟踪模型, 可以很好地实现目标跟踪.因此鉴别式模型具有很大的优势.
- 目标跟踪算法
- 发展: 经典跟踪算法 -> 基于核相关滤波的跟踪算法 ->基于深度学习的跟踪算法
- 经典跟踪算法(光流法 Meanshift 粒子滤波)
- 基于核相关滤波的跟踪算法(MOSSE)
- 基于深度学习的跟踪算法
- 发展: 经典跟踪算法 -> 基于核相关滤波的跟踪算法 ->基于深度学习的跟踪算法
MOT 多目标跟踪
- 多目标跟踪流程: 目标定位 特征提取 相似度计算 数据关联(特征匹配)
REID
REID -> Re-identification 其定义为利用算法 在图像库中找到要搜索的目标的技术 所以它属于图像检索的一个子问题
P-edestrain ReID
行人重识别
背景
- 人工查找监控效率低下
- 监控摄像头分辨率低 难以获得清晰的人身图像 -> 尝试ReID 代替人脸识别 -> 在监控拍不到人的情况下 ReID可以代替人脸识别来在视频序列中找到想要的目标
发展
- 深度学习之前-> ReID基本是基于特征的阶段 -> 人工特征(如 颜色 HOG特征等)
- 深度学习之后-> 黑盒性质特征
- 迁移学习 GAN
how -> 如何做ReID
- Detection -> 检测出行人 (数据集已经完成)
- 训练特征提取网络 -> 根据特征所计算的度量距离等到损失值 -> 优化器去迭代找到loss最小值 -> 不断更新网络的参数达到学习效果
- 测试时将要检索的的图片(query) 在底库gallery中 根据计算出的特征距离进行排序 选出最TOP的几张图片 -> 达到目标检索的目的
ReID 评测指标
- CMC (有缺陷)
- mAP
- rank-1 首次命中率 -> 表示在候选库中得到与检索目标相似度排名最高的图片为目标行人的概率
表征学习
表征学习的方法没有直接在训练网络的时候考虑图片间的相似度 而把行人重识别任务当做分类问题或者验证问题
- 分类损失: 分类损失也叫ID损失 只有ID损失的网络称为ID Embedding网络(IDE网络)
- 训练集中行人的ID数为网络的类别数
- 特征层后接一个分类FC 经过softmax激活函数计算交叉熵损失
- 测试阶段使用倒数第二层的特征向量进行检索 分类FC层丢弃
- 属性损失:
- 可以同时连接几个属性分类损失增强ReID特征的性能
- 每一个属性损失都一个分类二道交叉熵
- 可以等效于一个multi-task的网络
- 测试阶段将所有分类FC丢弃只使用ReID特征
- 验证损失
- 每次输入一对图片 进入同一个Siamese网络提取特征
- 融合两个特征信息计算一个二分类损失
- 训练阶段可以和ID损失一起使用
- 测试阶段输入两张图片 直接判断该两张图片是否属于一个行人
度量学习
度量学习旨在通过网络学习出两张图片的相似度 在行人重识别问题上 表现为同一行人的不同图片之间的相似度大于不同行人的不同图片
deeport
sort -> simple online realtime tracking (不是排序的意思)
- detection (rcnn yolo)
- estimate (linear constant velocity model: kalman filter)
- target assocation -> Hungarian algoritm 拟合检测框
- track identity life cycle 轨迹
Siamese network 孪生神经网络
孪生即为连体婴儿的意思 -> 神经网络的连体是通过共享权值实现
- Siamese network 即共享权值 左右两边两个网络权值一样 甚至使用同一个网络都可以
- pseudo-siamese network: 伪孪生神经网络 不共享权值 两边是两个不同的神经网络
孪生神经网络的主要用途
简单来说,衡量两个输入的相似程度。孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(Network1 and Network2),这两个神经网络分别将输入映射到新的空间,形成输入在新的空间中的表示。通过Loss的计算,评价两个输入的相似度。
孪生神经网络和伪孪生神经网络分别适用于什么场景呢
先上结论:孪生神经网络用于处理两个输入”比较类似”的情况。伪孪生神经网络适用于处理两个输入”有一定差别”的情况。比如,我们要计算两个句子或者词汇的语义相似度,使用siamese network比较适合;如果验证标题与正文的描述是否一致(标题和正文长度差别很大),或者文字是否描述了一幅图片(一个是图片,一个是文字),就应该使用pseudo-siamese network。也就是说,要根据具体的应用,判断应该使用哪一种结构,哪一种Loss。
模式识别
中间模态
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 niiish32x 's blog!