百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

目标检测算法系列:faster RCNN实现|附python源码!

off999 2024-10-10 07:50 45 浏览 0 评论

目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成熟的算法得到业内公认水平,比如RCNN系列算法、SSD以及YOLO等。如果你是从事这一行业的话,你会使用哪种算法进行目标检测任务呢?在我寻求在最短的时间内构建最精确的模型时,我尝试了其中的R-CNN系列算法,如果读者们对这方面的算法还不太了解的话,建议阅读 《目标检测算法图解:一文看懂RCNN系列算法》 。在掌握基本原理后,下面进入实战部分。

本文将使用一个非常酷且有用的数据集来实现faster R-CNN,这些数据集具有潜在的真实应用场景。

私信菜鸟007即可获取惊喜大礼包!嘻嘻嘻


问题陈述

数据来源于医疗相关数据集,目的是解决血细胞检测问题。任务是通过显微图像读数来检测每张图像中的所有红细胞(RBC)、白细胞(WBC)以及血小板。最终预测效果应如下所示:



选择该数据集的原因是我们血液中RBC、WBC和血小板的密度提供了大量关于免疫系统和血红蛋白的信息,这些信息可以帮助我们初步地识别一个人是否健康,如果在其血液中发现了任何差异,我们就可以迅速采取行动来进行下一步的诊断。

通过显微镜手动查看样品是一个繁琐的过程,这也是深度学习模式能够发挥重要作用的地方,一些算法可以从显微图像中分类和检测血细胞,并且达到很高的精确度。

本文采用的血细胞检测数据集可以从 这里下载,本文稍微修改了一些数据:

  • 边界框已从给定的.xml格式转换为.csv格式;
  • 随机划分数据集,得到训练集和测试集;

这里使用流行的Keras框架构建本文模型。

系统设置

在真正进入模型构建阶段之前,需要确保系统已安装正确的库和相应的框架。运行此项目需要以下库:

  • pandas
  • matplotlib
  • tensorflow
  • keras – 2.0.3
  • numpy
  • opencv-python
  • sklearn
  • h5py

对于已经安装了Anaconda和Jupyter的电脑而言,上述这些库大多数已经安装好了。建议从 此链接下载 requirements.txt文件,并使用它来安装剩余的库。在终端中键入以下命令来执行此操作:

pip install -r requirement.txt

系统设置好后,下一步是进行数据处理。

数据探索

首先探索所拥有的数据总是一个好开始(坦率地说,这是一个强制性的步骤)。对数据熟悉有助于挖掘隐藏的模式,还可以获得对整体的洞察力。本文从整个数据集中创建了三个文件,分别是:

train_images
test_images
train.csv

读取 .csv 文件并打印出前几行:

# importing required libraries
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib import patches
# read the csv file using read_csv function of pandas
train = pd.read_csv(‘train.csv’)
train.head()



训练文件中总共有6列,其中每列代表的内容如下:

image_names
cell_type
xmin
xmax
ymin
ymax

下面打印出一张图片来展示正在处理的图像:

# reading single image using imread function of matplotlib
image = plt.imread('images/1.jpg')
plt.imshow(image)

上图就是血细胞图像的样子,其中,蓝色部分代表WBC,略带红色的部分代表RBC。下面看看整个训练集中总共有多少张图像和不同类型的数量。

# Number of classes
train['cell_type'].value_counts()

结果显示训练集有254张图像。

# Number of classes
train['cell_type'].value_counts()

结果显示有三种不同类型的细胞,即RBC,WBC和血小板。最后,看一下检测到的对象的图像是怎样的:

fig = plt.figure()
#add axes to the image
ax = fig.add_axes([0,0,1,1])
# read and plot the image
image = plt.imread('images/1.jpg')
plt.imshow(image)
# iterating over the image for different objects
for _,row in train[train.image_names == "1.jpg"].iterrows():
 xmin = row.xmin
 xmax = row.xmax
 ymin = row.ymin
 ymax = row.ymax
 
 width = xmax - xmin
 height = ymax - ymin
 
 # assign different color to different classes of objects
 if row.cell_type == 'RBC':
 edgecolor = 'r'
 ax.annotate('RBC', xy=(xmax-40,ymin+20))
 elif row.cell_type == 'WBC':
 edgecolor = 'b'
 ax.annotate('WBC', xy=(xmax-40,ymin+20))
 elif row.cell_type == 'Platelets':
 edgecolor = 'g'
 ax.annotate('Platelets', xy=(xmax-40,ymin+20))
 
 # add bounding boxes to the image
 rect = patches.Rectangle((xmin,ymin), width, height, edgecolor = edgecolor, facecolor = 'none')
 
 ax.add_patch(rect)



上图就是训练样本示例,从中可以看到,细胞有不同的类及其相应的边界框。下面进行模型训练,本文使用 keras_frcnn库来训练搭建的模型以及对测试图像进行预测。

faster R-CNN实现

为了实现 faster R-CNN算法,本文遵循 此Github存储库 中提到的步骤。因此,首先请确保克隆好此存储库。打开一个新的终端窗口并键入以下内容以执行此操作:

git clone https://github.com/kbardool/keras-frcnn.git

并将 train_images 和 test_images 文件夹以及 train.csv 文件移动到该存储库目录下。为了在新数据集上训练模型,输入的格式应为:

filepath,x1,y1,x2,y2,class_name

其中:

  • filepath是训练图像的路径;
  • x1是边界框的xmin坐标;
  • y1是边界框的ymin坐标;
  • x2是边界框的xmax坐标;
  • y2是边界框的ymax坐标;
  • class_name是该边界框中类的名称;

这里需要将 .csv 格式转换为 .txt 文件,该文件具有与上述相同的格式。创建一个新的数据帧,按照格式将所有值填入该数据帧,然后将其另存为 .txt 文件。

data = pd.DataFrame()
data['format'] = train['image_names']
# as the images are in train_images folder, add train_images before the image name
for i in range(data.shape[0]):
 data['format'][i] = 'train_images/' + data['format'][i]
# add xmin, ymin, xmax, ymax and class as per the format required
for i in range(data.shape[0]):
 data['format'][i] = data['format'][i] + ',' + str(train['xmin'][i]) + ',' + str(train['ymin'][i]) + ',' + str(train['xmax'][i]) + ',' + str(train['ymax'][i]) + ',' + train['cell_type'][i]
data.to_csv('annotate.txt', header=None, index=None, sep=' ')

下一步进行模型训练,使用 train_frcnn.py 文件来训练模型。

cd keras-frcnn
python train_frcnn.py -o simple -p annotate.txt

由于数据集较大,需要一段时间来训练模型。如果条件满足的话,可以使用GPU来加快训练过程。同样也可以尝试减少 num_epochs 参数来加快训练过程。

模型每训练好一次(有改进时),该特定时刻的权重将保存在与“model_frcnn.hdf5”相同的目录中。当对测试集进行预测时,将使用到这些权重。

根据机器的配置,可能需要花费大量时间来训练模型并获得权重。建议使用本文训练大约500个时期的权重作为初始化。可以从 这里 下载这些权重,并设置好相应的路径。

因此,当模型训练好并保存好权重后,下面进行预测。 Keras_frcnn 对新图像进行预测并将其保存在新文件夹中,这里只需在 test_frcnn.py 文件中进行两处更改即可保存图像:

  • 从该文件的最后一行删除注释:
  • cv2.imwrite('./ results_imgs / {}。png'.format(idx),img);
  • 在此文件的倒数第二行和第三行添加注释:
  • #cv2.imshow('img',img) ;
  • #cv2.waitKey(0);

使用下面的代码进行图像预测:

python test_frcnn.py -p test_images

最后,检测到对象的图像将保存在“results_imgs”文件夹中。以下是本文实现faster R-CNN后预测几个样本获得的结果:


结果1

结果2

结果3

结果4

总结

R-CNN算法确实是用于对象检测任务的变革者,改变了传统的做法,并开创了深度学习算法。近年来,计算机视觉应用的数量突然出现飙升,而R-CNN系列算法仍然是其中大多数应用的核心。

Keras_frcnn 也被证明是一个很好的对象检测工具库,在本系列的下一篇文章中,将专注于更先进的技术,如YOLO,SSD等。

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: