Faster-RCNN代码解读8:代码调试与总结

news2025/1/16 11:03:05

Faster-RCNN代码解读8:代码调试与总结

前言

​ 因为最近打算尝试一下Faster-RCNN的复现,不要多想,我还没有厉害到可以一个人复现所有代码。所以,是参考别人的代码,进行自己的解读。

代码来自于B站的UP主(大佬666),其把代码都放到了GitHub上了,我把链接都放到下面了(应该不算侵权吧,毕竟代码都开源了_):

b站链接:https://www.bilibili.com/video/BV1of4y1m7nj/?vd_source=afeab8b555e5eb1bfa1e7f267262cbf2

GitHub链接:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing

目的

​ 其实UP主已经做了很好的视频讲解了他的代码,只是有时候我还是喜欢阅读博客来学习,另外视频很长,6个小时,我看的时候容易睡着_,所以才打算写博客记录一下学习笔记。

目前完成的内容

第一篇:VOC数据集详细介绍

第二篇:Faster-RCNN代码解读2:快速上手使用

第三篇:Faster-RCNN代码解读3:制作自己的数据加载器

第四篇:Faster-RCNN代码解读4:辅助文件解读

第五篇: Faster-RCNN代码解读5:主要文件解读-上

第六篇: Faster-RCNN代码解读6:主要文件解读-中

第七篇:Faster-RCNN代码解读7:主要文件解读-下

第八篇:Faster-RCNN代码解读8:代码调试与总结(本文)

目录结构

1. 前言:

​ 前面的七篇文章,基本上把该项目大部分重要的文件都进行了解读。本篇是Faster-RCNN代码解读的最后一篇,主要是分享一下如何去调试代码和从更高的角度去分析一下。

2. pycocotools安装/代码调试:

​ 代码调试,需要运行的文件是train_mobilenetv2.py这样的文件才可以。

​ 不过这不是重点,重点是想要正常的运行该训练文件,需要安装很多库,其中最难安装的就是pycocotools。**如果你的环境是Linux,可以直接pip安装即可;但是如果你是windows,那么就很麻烦了。**这里,我说一下,我安装pycocotools的历程:

2.1 安装VC 14++:

第一步,必须安装VC 14++。但是,网上提供的一般都是一个文件,即 VisualCppBuildTools_Full.exe,如果你直接用这个文件安装,一般会报错文件损坏之类的

​ 因此,最好是下载带有安装文件的VisualCppBuildTools_Full.exe,可以从下面的链接中下载:

链接:https://pan.baidu.com/s/1uwP-Y2egam4taXmn6uYPaA 
提取码:qt91

​ 下载后,目录结构如下图所示,并直接运行exe即可正常安装:

在这里插入图片描述

2.2 下载pycocotools:

第二步,从GitHub上下载cocotools

​ 打开链接:

https://github.com/cocodataset/cocoapi

​ 将整个项目下载下来放到任意文件夹即可:

在这里插入图片描述

2.3 开始安装:

​ 进入你刚刚下载的GitHub文件夹内的PythonAPI中:

在这里插入图片描述

​ 然后,以此打开Windows的cmd命令行,输入python setup.py build_ext --inplace,运行成功的截图:

在这里插入图片描述

​ 接着,再运行python setup.py build_ext install命令,运行成功的截图:

在这里插入图片描述

​ 正常运行完成后,你的文件夹就会多出两个文件夹:

在这里插入图片描述

​ 最后一步,就是把pycocotools.egg-infopycocotools两个文件夹复制放入你的python编辑器里面的库文件夹内(参考下图找到自己的路径):

在这里插入图片描述

​ 到这里,就安装成功了。

2.4 测试是否安装成功:

​ 最简单的检验方式,创建一个python文件,运行代码:

from pycocotools.coco import COCO

​ 没有报错,即安装成功。

安装成功后,基本跑完该项目就没啥问题了,可以正常调试代码了。

3. 对该项目的浅解:

​ 该项目的代码特别多,一个文件有的有六七百行代码,读起来确实很痛苦。

​ 这里我给出一点我的心得:

  • 读架构代码,先读__init__方法,再读forward方法,以前向传播方法为路径,去搞懂每一个方法。
  • 如果你对某个变量不清楚,可以去调试代码,去看看这个变量的值。
  • 如果你对了解全部的代码不感兴趣,可以针对某个文件去具体研究。
    • 比如,如果你想要知道Faster-RCNN的RPN框架,可以就只读network_files文件夹的RPN部分
  • 如果你只想要大体了解整体架构,建议只读network_files/faster_rcnn_framwork.py即可

最后,如果你想要自己研究整个代码。我觉得比较好的阅读顺序是:

在这里插入图片描述

首先,需要了解数据集(1);其次,需要明白我们如何加载数据集的(2);接着,去读如何训练整个网络(3);然后进入网络内部,了解Faster-RCNN的整体框架(4);最后,深入Faster-RCNN的RPN部分和后面的分类回归部分(5)。

​ 另外,大佬的视频文件也是必看的参考资料之一。

4. 总结:

​ 到此,Faster-RCNN的源码解读到此结束了。相比于YOLO等一阶段算法,Faster-RCNN这样的两阶段代码确实太多了。

​ 不过,代码虽多,我们并不是要学习所有的代码,而是去验证论文和去学习实现的思路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络协议-前端重点——DNS和CDN

目录 DNS的基础知识 统一资源定位符(URL)(网址) DNS(Dimain Name System)(域名系统) DNS Query过程 DNS记录 A记录 AAAA记录 CNAME记录(Canonical Name Record) MX记录&#…

Blender3.5 视图切换

目录 1. 数字小键盘切换视图1.1 正交顶视图1.2 正交前视图1.3 正交右视图1.4 透视图1.5 四格视图 2. 鼠标点击切换视图2.1 点击视图,根据需求选择对应视图2.2 点导航栏的坐标轴切换 3. 启用字母区数字键3.1 编辑——偏好设置——输入——勾选“模拟数字键” 1. 数字…

Linux驱动——高级I/O操作(四)

目录 几种I/O模型总结 异步通知 几种I/O模型总结 阻塞 IO:在资源不可用时,进程阻塞,阻塞发生在驱动中,资源可用后进程被唤醒,在阻塞期间不占用CPU,是最常用的一种方式。 非阻塞 I/O: 调用立即返回,即便是在资…

《Unity Shader 入门精要》第10章 高级纹理

第10章 高级纹理 10.1 立方体纹理 在图形学中,立方体纹理 (Cubemap) 是环境映射 (Environment Mapping) 的一种实现方法。 和之前见到的纹理不同,立方体纹理一共包含了6张图像,这些图像对应了…

typescript的keyof的用法

第一种:与接口一起用,返回联合类型 interface Person {name: string;age: number;location: string;}type K1keyof Person; // "name" | "age" | "gender" let a:K1name 第二种:与typeof一起用,可…

天梯赛练习(L2-013 ~ L2-020)

L2-013 红色警报 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一…

【springcloud开发教程】负载均衡——Ribbon

Ribbon是什么? Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 的…

CentOS7安装docker以及docker-compose

前言 系统版本:CentOS7.9 docker版本:当前最新版本是23.0.3 docker compose版本:v2.17.2 参考官网文档:跳转链接 安装docker 删除原有的docker(如果有的话) sudo yum remove docker \docker-client …

CSAPPLab1-DataLab

1、bitXor 异或:不是同时为0和不是同时为1的情况进行按位与 /** bitXor - x^y using only ~ and &* Example: bitXor(4, 5) 1* Legal ops: ~ &* Max ops: 14* Rating: 1*/int bitXor(int x, int y) {return ~(~x & ~y) & ~(x & y); } …

可鉴别加密工作模式-同时保护数据机密性和完整性(OCB、CCM、KeyWrap、EAX和GCM)第一部分

当算法用于同时保护数据的机密性和完整性时,应选取合适的可鉴别加密工作模式,例如OCB、CCM、KeyWrap、EAX和GCM等工作模式。以下总结来自GBT36624-2018国标文本。 在可鉴别加密工作模式之前,先来说说分组密码的工作模式可参考GBT17964-2021版…

反欺诈(羊毛盾)API 实现用户行为分析的思路分析

简介 反欺诈(羊毛盾)API 是一种用于识别和防范各种欺诈行为的技术解决方案。它可集成到各种应用程序和平台中,通过手机号码、手机IP进行异常检测,达到防范恶意注册、虚假评论、虚假交易等欺诈行为的目的。 本文主要介绍反欺诈&a…

1677_MIT 6.828 xv6中增加CPU alarm

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面把课程要求做了一个简单的翻译,从课程的要求说明中其实已经能够得到很多的提示。这个alarm的功能,其实有点类似回调函数的概念&#xf…

基于springboot+mysql+jsp实现校园新闻发布系统

基于springbootmysqljsp实现校园新闻发布系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 普通用户:浏览主页面&#xff…

【音视频处理】直播工作原理,直播CDN、推流拉流、流媒体服务究竟是什么

大家好,欢迎来到停止重构的频道。 本期我们讨论直播技术。 我们将会介绍,直播工作原理,流媒体服务的作用,推流/拉流、直播CDN等等。 这里需要特别说明的是,直播指的是:1对多的直播,平常直播平…

基于copula的风光联合场景生成与缩减

目录 1 主要内容 风光出力场景生成方法 2 部分程序 3 程序结果 4 程序链接 点击直达! 1 主要内容 该程序方法复现《融合风光出力场景生成的多能互补微网系统优化配置》风光出力场景生成部分,目前大多数研究的是不计风光出力之间的相关性影响&…

grpc 使用demo示例

一、 编写proto文件 1、idea新建java项目&#xff0c;在maven中引入以下依赖&#xff1a; <dependencies><!--grpc底层通信组件--><dependency><groupId>io.grpc</groupId><artifactId>grpc-netty-shaded</artifactId><version&g…

Java笔记_10(项目阶段----拼图游戏)

项目阶段 页面搭建创建窗口 界面设置和菜单搭建创建菜单 添加图片图片对象 打乱图片用一维数组添加值到二维数组中 事件美化页面移动图片查看完整图片&#xff0c;作弊器&#xff0c;判断胜利计步器和菜单业务的实现弹窗创建 更换图片和登陆页面的建立表单 所有源码的实现游戏规…

es7.x集群部署-多台物理机部署-docker环境部署-docker-compose管理

es集群部署文档 部署es服务的三台服务器的ip和host分分别是&#xff1a; iphost_name192.168.1.2web02192.168.1.3storage02192.168.1.4Storage03 这个配置需要在服务器上编写对应的hosts文件&#xff0c;然后才可以使用host进行配置。 本次部署没有外挂配置文件&#xff0…

容器内无tcpdump,如何在宿主机上抓容器的包

抓包的容器里&#xff0c;没有安装tcpdump 命令&#xff0c;我们可以去容器所在宿主机上&#xff0c;使用 nsenter 命令切换网络命名空间后&#xff0c;使用宿主机上的tcpdump 命令&#xff0c;对容器进行抓包分析。 此例中&#xff0c;我要抓取容器中端口是5240的包&#xff…

react3:受控组件(表单默认变成受控)-组件通信 - typescript项目(表单,tabbar)

受控组件&#xff1a;表单 非受控组件表单元素值不受所在组件状态的控制, 我们将这样的表单元素称作: 非受控组件. 受控组件受控组件 : 值受到 React 组件状态控制的表单元素一般是通过 defaultValue 属性, onChange 事件配合将非受控组件变为受控组件. 多表单元素操作 &#…