基于Faster rcnn pytorch的遥感图像检测

news2024/10/5 15:32:58

基于Faster rcnn pytorch的遥感图像检测

代码:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0

数据集

使用RSOD遥感数据集,VOC的数据格式如下:
在这里插入图片描述
RSOD是一个开放的目标检测数据集,用于遥感图像中的目标检测。数据集包含飞机,油箱,运动场和立交桥,以PASCAL VOC数据集的格式进行标注。
数据集包括4个文件夹,每个文件夹包含一种对象:
1.飞机数据集,446幅图像中的4993架飞机
2.操场,189副图像中的191个操场。
3.立交桥,176副图像中的180座立交桥。
4.油箱,165副图像中的1586个 油箱。
下载:https://github.com/RSIA-LIESMARS-WHU/RSOD-Dataset-
在这里插入图片描述

ubuntu使用Faster rcnn pytorch-1.0

ubuntu使用此代码比较顺利,因为编译Lib文件很容易就过了。

安装环境:
1.conda 创建python3.6的环境
2.运行

pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

如果你们可以直接运行安装:

conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch

就不要用我上面提到的安装方法。

3.运行

pip install -r requirements.txt -i -i https://pypi.tuna.tsinghua.edu.cn/simple

如果报错:找不到包,则运行;

python -m pip install --upgrade pip

4.编译lib

python setup.py build develop

编译之后会生成可执行文件,然后就可以import那些frcnn模型包了。因为原作者也是在ubuntu,linux上编译,所以问题比较少。

数据准备:
需要在工程文件夹里新建data文件夹,并保持如下图同样的数据路径(文件夹名要一样,懒得改源码了),包括数据集和预训练模型,预训练模型在git上面有下载:

在这里插入图片描述

训练:

CUDA_VISIBLE_DEVICES=0,1 python trainval_net.py --dataset pascal_voc --net res101 --cuda 

其中需要修改的只是–net,可以是vgg16,也可以是res101。gpu看个人情况而定。

训练完成之后,会在models文件夹保存权重pth文件。
在这里插入图片描述
评估:

python test_net.py --dataset pascal_voc --net res101 --checksession 1 --checkepoch 20 --checkpoint 935--cuda

其中需要修改的只是–net,可以是vgg16,也可以是res101。gpu看个人情况而定。注意,这里的三个check参数,是定义了训好的检测模型名称,我训好的名称为faster_rcnn_1_20_935,代表了checksession = 1,checkepoch = 20, checkpoint = 935,这样才可以读到模型“faster_rcnn_1_20_935”。训练中,我设置的epoch为20,所以checkepoch选择20,也就是选择最后那轮训好的模型,理论上应该是效果最好的。当然着也得看loss。
测试之后就可以看到终端打印的每种类别(包括背景bg)的AP值,顺便可以计算mAP值,
vgg16训练的mAP如下:
在这里插入图片描述
resnet101训练的mAP如下:
在这里插入图片描述
测试图片:

python demo.py --net vgg16  --checksession 1  --checkepoch 20 --checkpoint 935--cuda --load_dir models

此处我们需输入使用的网络(vgg16),以及训练好的模型路径(models)。我们测试的图片都在images文件夹里。在此处有坑。作者提供了4张image做测试,因为测试完的图像会输出到images文件夹里,所以做完一次测试,images文件夹会有8张图片(输出图片命名规则是在原图像文件名后面加上"_det"),而原作者没有把他自己测试后的图片删去,所以大家在做demo测试时,别忘把以"_det"结尾的检测输出文件先删去,否则测试完你的images文件夹可能会得到16张图像。当然,你可以放一些你自己在网上搜的图片在images文件夹里进行demo测试,看看效果。但检测类别一定在训练的类别中要有。

在这里插入图片描述

报错:
一些报错经验和解决方法大家可以参考这篇博客:
https://www.cnblogs.com/wind-chaser/p/11359521.html
里面特别注意训练前要改类别个数和类别名。

win10使用Faster rcnn pytorch-1.0(未完成)

安装环境:
1.conda 创建python3.6的环境
2.运行

pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

如果你们可以直接运行安装:

conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch

就不要用我上面提到的安装方法,因为可能会报fPIC的错误。

3.运行

pip install -r requirements.txt -i -i https://pypi.tuna.tsinghua.edu.cn/simple

如果报错:找不到包,则运行;

python -m pip install --upgrade pip

4.编译lib

python setup.py build develop

win10编译没有那么幸运,一堆错误,先将遇到的错误总结如下:

报错经验:
1.D:\anaconda3\envs\frcnn\include/pyconfig.h:241:15: error: ‘std::_hypot’ has not been declared #define hypot _hypot
解决方法:把对应的#define hypot _hypot改为#define _hypot hypot

2.nvcc fatal : Cannot find compiler ‘cl.exe’ in PATH

解决方法:win10+2019+cuda11.6 nvcc fatal : Cannot find compiler ‘cl.exe‘ in PATH

3.nvcc -fPIC: No such file or directory
解决方法:这个报错跟torch有关,如果你们可以直接运行安装:

conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch

就不要用我上面提到的安装方法。如果用了我上面的方法,那么需要改这个文件下的东西:
在这里插入图片描述
在文件夹里将所有
“‘-fPIC’”
替换为
‘-fPIC’

4.报错:

C:/Users/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(275): error: 
no instance of function template "THCCeilDiv" matches the argument list
            argument types are: (long long, long)

C:/Users/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(275): 
error: no instance of overloaded function "std::min" matches the argument list
            argument types are: (<error-type>, long)

C:/Users/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(321): 
error: no instance of function template "THCCeilDiv" matches the argument list
            argument types are: (int64_t, long)

C:/Users/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(321): 
error: no instance of overloaded function "std::min" matches the argument list
            argument types are: (<error-type>, long)

解决方法:
参考:win10和win7系统配置faster rcnn(pytorch)

在这里插入图片描述
5.collect2.exe: error: ld returned 1 exit status
放弃,用ubuntu跑。

总之,还是建议学习的同学们租个服务器跑。
需要代码的可以私

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

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

相关文章

图片类型转换,url,File,Base64,Blob

一&#xff0c;图片url转化为文件 function urlToFile(url, imageName) {return new Promise((resolve, reject) > {var blob nullvar xhr new XMLHttpRequest()xhr.open(GET, url)xhr.setRequestHeader(Accept, image/png)xhr.responseType blobxhr.onload () > {b…

JVM内存模型和结构详解

JVM内存模型和Java内存模型都是面试的热点问题&#xff0c;名字看感觉都差不多&#xff0c;实际上他们之间差别还是挺大的。 通俗点说&#xff0c;JVM内存结构是与JVM的内部存储结构相关&#xff0c;而Java内存模型是与多线程编程相关mikechen。 什么是JVM JVM是Java Virtual …

Redis缓存雪崩及解决办法

缓存雪崩 1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到 达数据库&#xff0c;带来巨大压力。 2.解决方案: ◆给不同的Key的TTL添加随机值 ◆利用Redis集群提高服务的可用性 ◆给缓存业务添加降级限流策略 降级可做为系统的保底…

java程序1补充:从键盘输入圆的半径,求圆的周长和面积(简易与交互两版)

编写一个java程序&#xff0c;从键盘输入圆的半径&#xff0c;求圆的周长和面积&#xff0c;并输出。 要求&#xff1a; &#xff08;1&#xff09;半径仅考虑int型正整数&#xff0c;并综合利用所学较好地处理异常输入&#xff0c;包括非法整数、负整数输入时的处理。输入半…

网络编程套接字基本概念认识

目录 认识端口号 认识TCP协议 认识UDP协议 网络字节序 socket编程接口 socket 常见API sockaddr结构 认识端口号 端口号(port)是传输层协议的内容 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 …

数字电路仿真编译文件指定方式

目录 1 最基本的方式 2 指定多个文件 3. 使用filelist文件 4 指定整个目录中的所有指定后缀的文件 5 指定include文件的搜索路径 6 追加宏的定义 7 Verdi相关的选项 8 Vivado中的处理方式 1 最基本的方式 最基本的方式就是直接在命令行指定单个源文件&#xff0c;比如说…

VMware安装华为存储模拟器

实验需要的软件&#xff1a; VMware Workstation Pro ST00000000201812000*配套的license文件 Dorado5000 V3存储模拟器磁盘 存储模拟器磁盘和license文件资源&#xff0c;在本人主页发布的资源中去下载 安装步骤&#xff1a; 1. 点击 “文件->新建虚拟机”。 2. 在弹框…

MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

目录 0 存储引擎介绍1 SQL性能分析2 常见通用的JOIN查询SQL执行加载顺序七种JOIN写法 3 索引介绍3.1 索引是什么3.2 索引优劣势3.3 索引分类和建索引命令语句3.4 索引结构与检索原理3.5 哪些情况适合建索引3.6 哪些情况不适合建索引 4 性能分析4.1 性能分析前提知识4.2 Explain…

SQL Server数据库使用

文章目录 前言一、SQL Server 2008 R2 安装例&#xff1a;安装一台SQL Server 2008 R2服务器 二、SSMS管理工具简介1.SQL Server 2008 R2常用的工具2.连接到服务器 三、SQL Server数据库分类及管理1.SQL Server数据库分类2.SQL Server数据库文件类型3.SQL Server数据库管理例&a…

操作系统第五章——输入输出管理(中)

提示&#xff1a;若我会见到你&#xff0c;事隔经年&#xff0c;我如何向你招呼&#xff0c;以眼泪&#xff0c;以沉默 文章目录 5.2.1 IO核心子系统知识总览功能要在那个层次实现 5.2.2 假脱机技术&#xff08;SPOOLing&#xff09;知识总览什么是脱机技术假脱机技术——输入井…

Kafka锦集(二):三种不同方式,查看kafka是否已启动

前言 Kafka的启动之前&#xff0c;必不可少的三个操作&#xff1a; 1、启动Zookeeper服务&#xff0c;点击进入 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 2、 Kafka的下载和安装 3、修改Kafka安装目录下./config/server.properties文件里的监听窗…

考研C语言第三章

3.1 运算 #include <stdio.h>int main() {int result45*2-6/310%4;printf("%d\n",result);return 0; }C语言输出上每次都要带着数据类型&#xff0c;想念java 算术运算符与关系运算符 #include <stdio.h>int main() {int a;while(scanf("%d"…

C#,Matlab混合编程(01)——Mat文件格式简介及读写Mat文件的C#源程序

Matlab 软件 20GB&#xff0c;很大&#xff0c;还有卡脖子的问题。 我们可以利用其生成的 Mat 文件做更多的事。 1 Mat 文件 MAT 文件版本概述 MAT 文件是二进制 MATLAB 文件&#xff0c;用于存储工作区变量。从 MAT 文件版本 4 开始&#xff0c;随后的几个 MAT 文件版本都支持…

qtcreator-ros 安装配置

qtcreator-ros 安装配置 计划利用 QT 搭建简易的小车远程控制客户端&#xff0c;QT 系统学习有点耗时&#xff0c;借助 qtcreator-ros 可以缩短开发周期 How to Install (Users) ROS Qt5 librviz人机交互界面开发一&#xff08;配置QT环境&#xff09; 电脑中已经安装 5.10.1 …

DJ6-1/2/3 文件系统

目录 6.1 文件系统概述 6.1.1 文件、记录和数据项 6.1.2 文件类型 6.1.3 文件系统模型 6.1.4 对文件的操作 6.2 文件的逻辑结构 6.2.1 文件逻辑结构的类型 6.2.2 顺序文件&#xff08;Sequential File&#xff09; 6.2.4 索引文件&#xff08;Index File&…

英文论文(sci)解读复现【NO.12】YOLO-Tea: YOLOv5改进的茶叶病害检测模型

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

CocosCreator图片处理:截图裁剪,保存到本地,从本地加载,远端图片转base64

截图裁剪 从相机导出的renderTexture中使用readPixels读取像素数据&#xff0c;通过像素数据创建spriteFrame可以展示到界面上。 this.rt new RenderTexture(); this.rt.initialize({width: view.getVisibleSize().width,height: view.getVisibleSize().height, }) this.ca…

Three.js--》实现3d官网模型展示

目录 项目搭建 实现网页简单布局 初始化three.js基础代码 创建环境背景 加载飞船模型 实现滚轮滑动切换3D场景 设置星光流动特效 今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&…

计算机常见的故障类型

文章目录 前言一、常见故障类型介绍1.硬件故障2.系统故障3.软件故障 二、故障排查思路三、Win操作系统问题1.系统基本信息2.系统资源监视器&#xff08;运行对话框输入“resmon”&#xff09;3.事件查看器&#xff08;运行对话框输入“eventvwr”&#xff09;4.任务管理器&…

使用这些方法让你的 Python 并发任务执行得更好

动动发财的小手&#xff0c;点个赞吧&#xff01; 问题 一直以来&#xff0c;Python的多线程性能因为GIL而一直没有达到预期。 所以从 3.4 版本开始&#xff0c;Python 引入了 asyncio 包&#xff0c;通过并发的方式并发执行 IO-bound 任务。经过多次迭代&#xff0c;asyncio A…