码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022年12月 && Faster RCNN训练自己的数据集 && 配置环境相对简洁


    • 以往的大多数教程都是数年前的Faster RCNN源码,因为旧环境和现有环境的不同,导致环境配置方面出现一系列问题。
    • 特别是利用setup.py或者make.sh配置所需的环境时,遇到并解决一个又一个的问题,遗憾的是,失败总是贯彻全局。
    • 解决方案:找到近年的Faster RCNN源码,观察是否需要setup.py,作为一个Lucky Boy,在此分享我的操作流程。

    源码链接:GitHub - bubbliiiing/faster-rcnn-pytorch: 这是一个faster-rcnn的pytorch实现的库,可以利用voc数据集格式的数据进行训练。https://github.com/bubbliiiing/faster-rcnn-pytorch

     源码编写的非常棒!里面也详细叙述了如何使用此源码,我在这里简要叙述一下重要步骤。

    目录

    1、配置环境

    2、下载预训练模型

    3、处理数据集

    4、代码跑通截图:

    5、训练生成文件:


    1、配置环境

    可以直接利用命令直接安装:

    pip install requirement.txt

    建议:自己耐心安装所缺少的环境,特别是:

    CUDA、CUDNN和Torch的版本一定要对应。

    2、下载预训练模型

    官网提供两个预训练模型:

    共同点:基于VOC07+12数据集进行训练。

    不同点:前者的骨干网络为Resnet50,后者的骨干网络为VGG16。

    注意:训练过程中,需要选取使用哪一种骨干网络,此时需要和预训练模型中的骨干网络对应。

    3、处理数据集

    (1)配置的数据集路径如上图左边的列表所示:

    • Annotations:xml文件
    • ImageSets/Main:索引文件
    • JPEGimages:图像文件

    (2)修改class.txt:填写自己数据集的类别。 

    (3)数据集索引文件:编写可以生成数据集索引的py文件(参考文件在文章末尾)。

    (4)训练所需txt文件:通过voc_annotation.py文件根据数据集所在的路径,生成训练所必须的文件:train.txt and val.txt。

    注意:voc_annotation.py中包含生成索引文件的代码。因为本人数据集是提前随机8:1:1划分完毕的,voc_annotation.py里面包含随即划分,所以本人从voc_annotation.py中提取代码单独作为索引py文件。

    4、代码跑通截图:

    5、训练生成文件:

    上图包含checkpoints权重文件和训练过程中的Loss和mAP文件,这里的mAP默认为0.5,代表NMS过程中的IOU=0.5,如下图所示。

    附录:

    Index.py

    1. import os
    2. import random
    3. xmlfilepath=r'./JPEGImages/val/'
    4. saveBasePath=r".\ImageSets\Main/"
    5. temp_xml = os.listdir(xmlfilepath)
    6. total_xml = []
    7. for xml in temp_xml:
    8. if xml.endswith(".jpg") or xml.endswith('.png'):
    9. total_xml.append(xml)
    10. num=len(total_xml) #xml文件总数
    11. print(num)
    12. list = range(num)
    13. ftrain = open(os.path.join(saveBasePath,'val.txt'), 'w')
    14. for i in list:
    15. name = total_xml[i].split('.')[0]+'\n'
    16. ftrain.write(name)
    17. ftrain.close()

    >>> 如有疑问,欢迎评论区一起探讨。

  • 相关阅读:
    flutter循环
    源代码防泄密经验分享之安全上网篇
    张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作+升维、降维
    Centos安装telnet
    自己的项目 调查问卷Web (详细版)
    每天一个数据分析题(一百八十三)
    Java多线程(4):ThreadLocal
    漏洞深度分析|Apache MINA SSHD反序列化漏洞
    pandas教程:Periods and Period Arithmetic 周期和周期运算
    SVN:下载、安装和中文设置
  • 原文地址:https://blog.csdn.net/qq_54185421/article/details/128136916
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号