• CNN图像定位与物体探测_七月算法5月深度学习班第6次课程笔记


     
      desc
    图像领域的任务
    前两个的默认是只有一个主体,对于 localization 使用的方法就是一个回归问题,回归值是一个四元组
     
    对于 多对象的图片,使用slide window的方式来扫描,中间有些技巧
    localization 的问题 本质是一个 四元组的 回归问题
    听说
    VGG 适合做迁移学习 ,GoogleLeNet 在 VGG 初始上参数调整的
     
    ResNet 微软 152 层,这么深,能训练成功已经很困难了
    在某个深度上,能完整训练出来,在这个问题上不好 ,在别的问题上可能效果好
    为什么卷积神经网络强大
    卷积神经网络的本质还是在发挥神经网络的功能,是 FC 网络的 简化 
    只是:
    1. 计算力上去了
    2. 而且技巧性的降低了复杂度,使用:局部连接 + 参数共享,使得参数降低
    确定矩形
    x,y,w,h
    这个四元组 可以确定一个矩形,而不是使用 4个二元组的方式
    关于 classification + localization 的问题
    1. 先找 AlexNet ,分别接上 classification head 和 regression head 进行 fine tune 一下
     
    2. 对于然后 使用的损失函数是 L2 norm,而不是cos 角,因为cos 仅仅表示夹角,而这里如果对 ,x, y, w, h 作伸缩,那么是有问题的 ,所以只能欧氏距离
     
    3. 输出的时候,可以 前面的共用,输出有两个头,节省预测的时间,如下图:
     
    4. 进一步扩展,可以对每一个类进行 localization,不管这个类的概率是大是小
    假如分类的head 有 C 个类,那么 regression head 的输出是 C*4 个数值
    其中,这个 C*4 的数值就是 result ,只要有监督就可以了
    虽然比较个性化,可视化好,但是 预测值增多,提升了难度
     
    5. 回归层的位置
    最后一个conv层之后 或者 FC 层之后都是可以的
    关于精细化的 classification + localization 的问题
    关于 精细化的 猫的鼻子耳朵眼睛都探测出来,此时的问题还不是object-detection
    因为有几个主体是知道的,而 object-detection 有几个主体是不知道的
    所以可以分别单独训练,多跑几个localization,分别针对鼻子眼睛等等独立的训练
     
    而对于 deep pose,姿势探测,主要是 确定了人的关节点,有几个关节点也是确定的,可以单独训练,多跑几遍,然后信息组合,得出此时的姿势的结论
    object detection 因为不知道有多少个主体,所以要:滑动窗口的方式,然后针对每一个窗口进行 classification + localization 的问题
    R-CNN的 过程
    1. 从 AlexNet 开始配置一个网络,认为AlexNet 已经帮助做好了 特征抽取的工作
    2. 训练过程:将图像找出很多的候选 region,然后resize 之后 分别 投入你的网络当中
        去 get 到这个图片的 feature 
    3. 然后使用一个 SVM 判断 这些region 图片的feature,是否是 含有主体的图片
       有几个主体,就要训练几个 SVM
    fast R-CNN的 过程
    不再是每一个区域都输入网络得到其 feature,而是整个图片输入网络得到一个大的 ALL_feature
    然后 各个 region 从原始图到 ALL_feature 上有一个映射,从这个 ALL_feature 中找出自己region 的 feature
     
    优点
    1. 特征抽取时间加速了,不必有多少个 region 就要过多少次网络
    2. 原始 AlexNet 也在 fine-tune,而不是 freeze 住了
    3. 不必将特征存盘,而是用一个系统在跑
      # 即不用 pipeline 了
    faster R-CNN的 过程
    不再使用 selective search 的方法找候选区域了,
    而是 使用 一个层 RPN 来找出候选区域
    且不是在原始图像上找而是在conv5上面找 ,这是更快的原因
     
    以前是 selective search的方法 找候选区域
    但是这个慢,且没有用用到GPU上
     怎么找 候选的 region
    不能全部遍历式的找region,思路就是先 找出一些 边缘 ,确定一下 候选区域 region
    然后再测试:
    至于确定这些 region 边缘检测,那么可以基于像素等使用kmeans,
    然后将其扩展为一个方框,这些方框之间可以有重叠
    对 linear svm 认识
    SVM 可以使用linear svm 来分类比较快 ,即不要用Kernel
    linear svm 就是线性分类器的速度
    选取哪里作为 图像的特征表示
    一般使用的方法时FC层之后的作为特征表示,因为认为经过卷积之后,信息损失,这个FC有信息还原
    但是如果 FC 之后的feature 太大,所以用 最后一个 pool 层的结果来表示
    参数共享
    这个的 fastRCNN
    就是相当于 卷积大小是1,连接数目没减,主要使用的是 Wi——>W
    就是:参数共享,参数已经很少了,但是连接数没变 
     
    全连接层是费时间的主要原因
    bbox regression bounding box 
    R-CNN 
    其思想就是 分成很多区域,然后一一处理这些区域,这应该就是 Region 的含义
    只不过不是针对每个 原始图片region,而是处理其对应的feature
     
     
    RCNN 主要是在训练最后一个分类层,前面的 CNN freeze 了,而 fast-CNN 同时训练前面的CNN
       
  • 相关阅读:
    hihocoder 1142 三分·三分求极值(三分)
    poj 3304 Segments(计算直线与线段之间的关系)
    poj 1269 Intersecting Lines(判断两直线关系,并求交点坐标)
    poj 2398 Toy Storage(计算几何 点线关系)
    poj 2318 TOYS(计算几何 点与线段的关系)
    计算几何基础(模板)
    Jmeter-基本组成
    java-面向对象
    性能测试基础
    java-多线程
  • 原文地址:https://www.cnblogs.com/jianzhitanqiao/p/5550344.html
Copyright © 2020-2023  润新知