深度学习目标检测项目实战(六)-基于Faster rcnn pytorch的遥感图像检测

news2025/1/12 8:44:47

基于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文件很容易就过了。
cuda环境:
参考:https://blog.csdn.net/qq_39542170/article/details/119800534
安装环境:
1.conda 创建python3.6的环境
2.运行

conda install pytorch==1.2.0 torchvision==0.4.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,编译前确保有gcc和g++环境,不知道怎么安装可以查

cd 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

cuda环境:
参考:https://blog.csdn.net/qq_39542170/article/details/119800534

第一次安装过程(未成功,特此记录,虽然没有什么用,大家想成功安装就看第二次安装过程):
安装环境:
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.安装visual studio 2019,安装下面教程安装:
visual studio 2019安装教程(详细的很)

5.编译lib

cd 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
放弃。

那么,经历了以上报错之后,我重振旗鼓,首先考虑是不是环境的问题,于是有了第二次安装过程。
第二次安装过程(成功):
安装环境:
1.conda 创建python3.6的环境
2.运行

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

你们也可以运行:

pip install torch==1.2.0+cu92 torchvision==0.4.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html

3.运行

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

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

python -m pip install --upgrade pip

4.安装visual studio 2019,安装下面教程安装:
visual studio 2019安装教程(详细的很)

5.编译lib

cd lib
python setup.py build develop

6.重新编译编译lib/pycocotools
因为原作者是使用ubuntu编译的,所以wins10直接使用会报“can not import ‘_mask’”的错误,所以需要下载:https://github.com/cocodataset/cocoapi/tree/master
然后进入PythonAPI,将12行的

extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],

改为

extra_compile_args=['-std=c99'],

然后运行

python setup.py build develop

把编译完成的内容替换原来的lib/pycocotools的内容,替换完为:
在这里插入图片描述

报错经验:
1.报错:

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)

在这里插入图片描述
2.TORCH_API Value* insertGetAttr
这个错误困扰我很久,很多博主都没遇到,于是我从编译gcc.exe找到了灵感。结果发现,我下载的mingw64里面的gcc.exe不能用来编译此项目,但是好在安装了visual studio 2019,于是我们可以换一种编译器去编译,即msvc 。
之前是运行:

python setup.py build develop

现在变为运行:

python setup.py build_ext --compiler=msvc develop

进行编译,终于成功了!

wins10下测试图片:
先在images文件放要检测的图片,比如:
在这里插入图片描述
这里先来两张,
然后运行:

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

检测结果:
在这里插入图片描述
有_det就是检测保存的图片,看看效果:
在这里插入图片描述
在这里插入图片描述

实属不易,需要代码的可以私

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

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

相关文章

01_pytorch中的DataSet

在pytorch 中&#xff0c; Dataset: 用于数据集的创建&#xff1b; DataLoader: 用于在训练过程中&#xff0c;传递获取一个batch的数据&#xff1b; 这里先介绍 pytorch 中的 Dataset 这个类&#xff0c; torch.utils.data. dataset.py 是一个表示数据集的抽象类。任何自定义…

SharpContour论文精读

SharpContour: A Contour-based Boundary Refinement Approach for Efficient and Accurate Instance Segmentation 论文链接&#xff1a;[2203.13312] SharpContour: A Contour-based Boundary Refinement Approach for Efficient and Accurate Instance Segmentation (arxiv…

[SpringBoot]Knife4j框架

Knife4j框架 Knife4j框架是一款国人开发的、基于Swagger 2的在线API文档框架。 Knife4j框架的一些主要作用和特点&#xff1a; 自动生成API文档&#xff1a;Knife4j可以根据代码中的注解和配置信息&#xff0c;自动生成API接口文档。开发者只需要在代码中添加相关注解&#…

数据治理服务解决方案word

本资料是ppt格式&#xff0c;适用于方案规划、项目实施、工作汇报。本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。篇幅有限&#xff0c;无法完全展示&#xff0c;喜欢资料可转发评论&#xff0c;私信“方案”了解更多信息。…

亚马逊、沃尔玛、eBay、wish的测评风险:源头控制与有效规避

测评补单已逐渐成为跨境电商卖家的一种重要推广方式。然而&#xff0c;近期&#xff0c;一些卖家反映&#xff0c;由于平台规则日益严格&#xff0c;测评变得更为棘手。若违反评论政策并被捕获&#xff0c;卖家可能会面临一系列的处罚&#xff0c;如删除店铺所有产品的评论&…

GRPC CPP 开发单向Stream服务器

上周提到我们要给llama.cpp增加一个grpc入口&#xff0c;这是最终成果仓库&#xff0c;等待进一步测试后提交合并。 今天讲讲GRPC CPP开发的麻烦事情。 参考文档 Quick start | C | gRPC&#xff0c;参考文档就是官方的这篇文档了&#xff0c;安装grpc可以参考我上一篇文章&…

Pycharm:通过git拉取仓库代码并创建项目环境

一、使用pycharm打开空的文件夹 使用菜单栏&#xff1a;在 PyCharm 的菜单栏中&#xff0c;选择 "File"&#xff08;文件&#xff09;菜单&#xff0c;然后选择 "Open"&#xff08;打开&#xff09;或 "Open Folder"&#xff08;打开文件夹&…

Hive3.1.3

文章目录 1、Hive入门1.1 Hive简介1.2 Hive本质1.3 Hive架构原理 2、Hive安装2.1 Hive安装地址2.2 Hive安装部署2.2.1 安装Hive(最小化)2.2.2 启动并使用Hive 2.3 MySQL安装2.3.1 安装MySQL2.3.2 配置MySQL 2.4 配置Hive元数据存储到MySQL2.4.1 配置元数据到MySQL2.4.2 验证元数…

校验表格中的多个表单

要实现的效果是: 点击保存回校验当前页面的所有输入框 首先 分成两个上下两个子组件, 上面的子组件是一个表单包括规则名称和区域 下面的子组件是一个表格,表格可以是多行的,需要校验每一行的输入框 父组件调用两个子组件的校验方法, 第一个子组件可以直接校验,第二个子组件在…

深度学习笔记之循环神经网络(十)基于循环神经网络模型的简单示例

深度学习笔记之循环神经网络——基于循环神经网络模型的简单示例 引言文本表征&#xff1a; One-hot \text{One-hot} One-hot向量简单示例:文本序列的预测任务数据预处理过程生成文本数据遍历数据集&#xff0c;构建字典抓取数据&#xff0c;创建训练样本、标签字符特征与数字特…

Uni-app学习从0到1开发一个app——(2)windowns环境搭配

文章目录 0 引入1、使用HBuilderX构建工程2、使用vscode2.1 官方推荐的使用2.2 如何使用 3、总结 0 引入 工欲善其事必先利其器介绍两种开发小程序的方法&#xff0c;个人倾向于第一种&#xff0c;后续演示的的工程也是基于前者&#xff0c;毕竟官方的更有说服力。 1、使用HBu…

基于yolov5开发构建枪支刀具等危险物品检测识别系统

安全始终是重如泰山的事情&#xff0c;安全事件如果能够做到早发现早制止可能结果就会完全不一样了&#xff0c;本文的核心目的很简单&#xff0c;就是想基于目标检测模型来尝试构建枪支刀具等危险物品检测识别系统&#xff0c;希望基于人工智能手段来打击犯罪行为&#xff0c;…

【JavaSE】Java基础语法(四十三):反射

文章目录 概述&#xff1a;1. java.lang.Class1.1 获取 Class 对象1.2 通过反射创建对象1.3 通过反射获取类的属性、方法和注解等1.3.1 反射获取构造方法1.3.2 反射通过构造器创建对象1.3.3 反射获取成员方法1.3.4 反射获取属性 2. 工具类操作3. 反射是如何破坏单例模式的4. 反…

linux0.12-12-2-buffer

基本上看完赵老师中文解释&#xff0c;都可以自己写这部分的代码。 [622页] 12-2 buffer.c程序 从本节起&#xff0c;我们对fs/目录下的程序逐一进行说明和注释。按照本章第2节中的描述&#xff0c; 本章的程序可以被分成4个部分&#xff1a; 高速缓冲管理&#xff1b; 文件…

基于ATC89C51单片机的超市临时储物柜密码锁设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87855870?spm=1001.2014.3001.5503 源码获取 摘 要 随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的电子密码锁的设计研发与应用在很大程度上改善了人们的…

windows 部署多个tomcat

去官网下载tomcat&#xff0c;地址&#xff1a;Apache Tomcat - Apache Tomcat 8 Software Downloads 选择对应的版本下载&#xff0c;下载完成后&#xff0c;直接解压文件&#xff0c; 修改第二个解压的tomcat的catalina.bat 和 startup.bat和service.bat文件的配置&#x…

iptables 基础

iptables防火墙 主要实现数据包的过滤、封包重定向和网络地址转换&#xff08;NAT&#xff09;等功能 iptables&#xff1a;用户空间的命令行工具&#xff0c;用于管理配置netfilter&#xff1a;真正实现功能的是netfilter运行在内核空间 iptables的4表5链 链&#xff1a;通过…

想管好数据资源,不妨了解大数据分析开源框架

在如今快节奏的时代中&#xff0c;办公自动化早已成为各行各业的发展趋势和方向。随着业务量的激增&#xff0c;数据资源也不断增多&#xff0c;如果没有一套完善的大数据分析开源框架&#xff0c;那这么多的数据资源就不能很好地利用和发挥其价值&#xff0c;如果采用专业的大…

基于AT89C52单片机的交通灯设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87855439?spm1001.2014.3001.5503 源码获取 一、实验目的 掌握单片机的综合应用设计。加强对单片机和汇编语言的认识&#xff0c;充分掌握和理解设计各部分的工作…

华为防火墙双机热备外线vrrp地址和接口地址非同网段

主防火墙FW1: HRP_Mdis current-configuration 2023-06-02 15:51:48.270 08:00 !Software Version V500R005C10SPC300 sysname USG6000V1 l2tp domain suffix-separator undo info-center enable ipsec sha2 compatible enable undo telnet server enable undo telnet ipv6 se…