不搭126 2023-04-23 11:15 采纳率: 0%
浏览 5

yolo数据集标签训练相关问题

我想做一个电线悬挂物数据集,悬挂物图片有风筝、气球、树枝等。我现在想不按照风筝,气球,树枝这几个标签进行标注训练,而是将这所有图片按做一个异物类进行标注训练,可以这样做吗?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-23 12:59
    关注
    • 这篇博客: 自学yolo入门到进阶中的 在终端命令测试时遇到的错误与问题汇总: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • ./darknet detector train cfg/cup-obj.data cfg/cup-yolov3.cfg darknet53.conv.74
      
      error: Assertion `0' failed.
      

      办法:将.cfg文件中的batch值设置得更小一点

      ./src/parser.c:360: parse_region: Assertion `l.outputs == params.inputs' failed. 
      

      办法:是由于粗心将.cfg文件中的与[yolo]层对应的classes值相对应的按照公式计算出来的filters=(classes+1)*3得到的某些[convolutional]层中的filters值输错了。

      要把.txt标记文件与图片数据集放在同一个文件夹里,否则训练指令无法执行。

      1. 机器学习的目的在于更新参数,优化目标函数,SGD和Adam是两种常见的优化器,SGD根据每个batch的数据计算一次局部的估计,最小化代价函数,学习速率决定了每次步进的大小,因此需要选择合适的学习速率进行调优,学习速率太大会导致不收敛,速率太小又收敛速度慢。Adam优化器结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点,能自动调整学习速率,则表现更优。
      2. 学习速率:学习速率第一次可以设置一个大一点的学习速率加快收敛,也可以采用动态变化学习速率的方法,比如每一轮都乘上一个衰减系数或者是根据损失的变化动态调整速率值。
      3. dropout:数据第一次跑模型的时候可以不加dropout,后期调优时加上dropout用于防止过拟合。特别是数据量相对较小的时候。
      4. 训练轮数:模型收敛即可停止迭代,一般可以采用验证集作为停止迭代的条件。
      5. 正则化:加入l1和l2正则化来防止过拟合,加入l1正则化的目的是为了加强权值的稀疏性,让更多值接近0,l2正则化是为了减小每次权重的调整幅度,避免模型训练过程中出现较大抖动。
      6. 激活函数:常用的有:sigmoid和tanh和relu和leaky relu和elu。采用sigmoid激活函数的计算量大,而且sigmoid饱和区变化缓慢,求导趋近于0,梯度消失,sigmoid函数的输出值恒大于0,这会导致模型训练的收敛速度变慢。tanh解决了zero-centered的输出问题,但是gradient vanishing和幂运算的问题仍然存在。relu从公式上可以看出,解决了gradient vanishing并且计算简单,但是某些神经元永远不会被激活,导致相应的参数永远不能被更新,即dead relu problem。lwaky relu有relu的所有优点,而且不会有dead relu problem。
      7. 特征学习函数:有CNN RNN LSTM等。CNN注重词位置上的特征,而具有时序关系的词采用其他特征学习函数更好。
      8. 特征抽取:max-pooling和avg-poiling是深度学习中最常用的两种特征提取方法。max-pooling是抽取最大的信息向量,但是当存在多个有用的信息向量时,这种方法会丢失大量有用的信息。avg-pooling是对所有信息向量求平均,当仅仅部分信息向量相关,而大部分向量无关时,会导致有用信息向量被大量噪声淹没。所以,在有多个有用向量的前提下尽量在最终的代表向量中保留这些有用向量,又想在只有一个显著相关向量的条件下直接提取该向量作为代表向量,解决办法是加权平均,即attention。
      9. 每轮训练数据乱序:每轮数据迭代保持不同的顺序,避免模型每轮都对相同的数据进行计算。
        10.batch_size选择:对于小数据量,可以全量训练,这样能更准确地朝着极值的方向更新,对于大数据,需要选择一个较小的batch_size,若此时batch_size=1,则为在线学习,每次修正方向为各自样本的梯度方向修正,难以达到收敛,batch_size增大,处理相同数据量的时间减少,但是达到相同精度的轮数增多,实际中可以逐步增大batch_size。

      检测指令:经验:测试时最好使用detect指令而不是与它一样作用的detector test指令

      ./darknet detect cfg/cup-yolov3.cfg backup/cup-yolov3_500.weights example1/TestData/少女风水杯_2.jpg
      

      结果如下:
      在这里插入图片描述

      摘抄: 刚train结束后的bug,就是coco数据的background类,yolov3默认是81分类啦,我在刚开始project.names只按照annotations中的class name写了,漏掉了背景类,于是出现了标签错乱的问题,detect的结果都是跟正确的label错1位,于是修改了project.name,把第一行默认为background,做成了81行的class name的签,就能对应上结果了。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月23日

悬赏问题

  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?