大家好,今天来为大家解答全面攻略:铁路异物侵入检测系统操作手册这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
总有机碳
一、项目简介
本文主要介绍如何使用python搭建:基于YOLOv3的铁路异物入侵图像目标检测系统。
该项目仅以铁路异物检测为起点,其中包含图像分类和图像检测的相关代码。
如各位童鞋需要更换训练数据,完全可以根据源码将图像和标注文件更换即可直接运行。博主也参考过网上有关图像检测和图像分类的文章,但大部分都是理论多于方法。很多同学肯定不需要了解太多原理,只需要搭建一个预测系统就可以了。
本文只会告诉你如何快速搭建一个基于yolov3的图像分类系统并运行,原理的东西可以参考其他博主。
正是因为我发现网上的帖子大多只是介绍原理,而实现的功能相对较少。
如果您有以上任何想法,那么您来对地方了!
该项目涉及2 个步骤:
第一步是使用CNN分类器来区分哪些是异常图片,哪些是正常图片。第二步是对异常图像进行目标检测。
废话不多说,我们直接进入正题吧!
二、项目检测结果
[图片上传失败.(image-b0f6b5-1649984110815)]
[图片上传失败.(image-53b7-1649984110815)]
[图片上传失败.(image-4ed13d-1649984110815)]
三、环境安装
1.环境要求
本项目开发使用的IDE为:Anaconda中的jupyter notebook。可以直接搜索csdn。安装指南有很多,这里不再赘述。
由于本项目是基于TensorFlow的,因此需要以下环境:
可以通过pip安装tensorflow=2.0pandasscikit-learnnumpyOpenCV2matplotlib
2.环境安装示例
环境。如果只是想让功能运行,建议安装CPU版本的tensorflow。
如果你没有使用过pycharm通过pip安装包,可以参考以下内容:
[图片上传失败.(image-62112a-1649984110815)]
点击“终端”并通过pip安装tensorflow。其他环境包也可以通过上述方法安装。
四、重要代码介绍
环境安装完毕后,就可以打开jupyter notebook,开始愉快地执行代码了。由于代码较多,最终代码不会包含在博客中。有需要的童鞋可以在博客底部找到下载地址。
1.图像分类
该项目涉及2个步骤,具有一定的比较性。第一步是根据给定的图像对图像进行分类,找到带有异物的图像。
1.1 加载图像数据,预处理,图像数据增强
#数据预处理
#图片加载
#读取图片+数据处理函数
def read_img(路径):
print("数据集地址:"+路径)
图片=[]
标签=[]
对于os.walk(path): 中的根目录、文件
对于tqdm(files): 中的文件
# print(路径+"/"+文件+"/"+文件夹)
#读图
img=cv2.imread(os.path.join(根, 文件))
#skimage.transform.resize(image, output_shape) 改变图像的大小
img=cv2.resize(img, (w, h))
# 将读取到的图像数据加载到imgs[]列表中
imgs.追加(img)
# 将图像的标签加载到labels[]中,对应上面的imgs索引
labels.append(str(os.path.basename(root)))
返回图像、标签
#调用读取图像的函数,获取图像和标签的数据集
数据1, 标签1=read_img(train_img_url)原始图片数量:1: 1090, 0: 572
其中0为有异物的图片,1为没有异物的正常图片。
完成数据增强后数量:[图片上传失败.(image-b6ddf3-1649984110815)]
1.2 分类模型训练
[图片上传失败.(image-7efeb1-1649984110815)]
1.3 分类模型评估
[图片上传失败.(image-69c0db-1649984110815)]
2.图像检测
完成图像分类后,我们可以使用图像检测的结果进行比较,以验证在相同数据集下,分类和检测哪个更好。
1.目标检测数据构建
"""
设置相关文件位置
"""
data_dir="数据/yolo_data"
# 生成训练数据
分割="火车"
输出文件="数据/tf_data/my_train_dlsb.tfrecord"
类="数据/yolo_data/ImageSets/my_class.names"
FLAGS=标志.FLAGS
标志([sys.argv[0]])
FLAGS.data_dir=data_dir
FLAGS.split=分割
FLAGS.output_file=输出文件
FLAGS.classes=类
# 生成tf数据集
create_data()
2.目标检测模型训练
# 预训练权重
权重="函数/yolov3/checkpoints/yolov3.tf"
权重_编号_类别=80
# 标志设置
FLAGS.dataset=数据集
FLAGS.val_dataset=val_dataset
FLAGS.classes=类
FLAGS.num_classes=num_classes
FLAGS.mode=模式
FLAGS.transfer=传输
FLAGS.batch_size=batch_size
FLAGS.epochs=纪元
FLAGS.weights=权重
FLAGS.weights_num_classes=Weights_num_classes
尝试:
历史,模型=run_model_train()
除了SystemExit:
在pass训练过程中,我们可以打开tensorboard查看训练进度:
[图片上传失败.(image-9982e1-1649984110815)]
3.目标检测结果
[图片上传失败.(image-2390f5-1649984110815)]
五、训练自己的数据
1.项目目录如下
[图片上传失败.(image-e6978e-1649984110815)]
2.分类模型训练
需要整理自己的数据集,放到如下项目目录中:
./数据/img/
设置目录,将某个类别的图片放入一个文件夹中,如下:
[图片上传失败.(image-1208f1-1649984110815)]
然后执行
1分类识别模型训练.ipynb
就可以开始分类模型训练了
3.目标检测模型训练
需要整理自己的数据集,放到如下项目目录中:
./数据/yolo_data/
[图片上传失败.(image-46aaa3-1649984110815)]
在:
注释:将xml文件放入图片注释中。命名方法为:图片名.xmlImageSets:图像预处理后生成的文件。放入数据时不用担心。 JPEGImages:图像数据,命名方式:图片名.jpg。需要注意的是Annotations中的xml文件需要与JPEGImages中的图像文件名一一对应。
图像标注的xml文件格式如下:
在对象中:
name 是标签的名称
矩形框为:xmin、ymin、xmax、ymax。分别表示标注矩形的左上角和右下角的坐标。
异常异物(1).jpg未知72072030塑料板Unspecified00268422536536将数据按照格式排序后,执行:
3 目标检测数据预处理.ipynb
【全面攻略:铁路异物侵入检测系统操作手册】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于有方法可以解决铁路异物的困扰了!
有19位网友表示赞同!
这个目标检测系统能有效提高安全性能吧?
有15位网友表示赞同!
想了解一下这系统的原理,是怎么识别异物的?
有12位网友表示赞同!
教程会不会很简单?我是不是也能学到?
有8位网友表示赞同!
铁路运输越来越科技化了!太赞了!
有13位网友表示赞同!
这样的系统能不能应用在其他领域呢?
有15位网友表示赞同!
期待看一下这系统的实际效果,希望能推广使用。
有18位网友表示赞同!
手把手教你做这个东西,会不会需要一定的编程基础?
有14位网友表示赞同!
这么厉害的技术,以后还能期待更高级的版本吗?
有7位网友表示赞同!
如果能实现在实时监测上,那就更加安全可靠了!
有20位网友表示赞同!
这个系统对铁路安全的意义很大吧?
有13位网友表示赞同!
希望教程里详细介绍系统的各个步骤和参数设置。
有17位网友表示赞同!
有了这样的技术保障,可以更好地保护人们生命财产的安全。
有11位网友表示赞同!
学习这种高科技知识,感觉未来充满无限可能啊!
有6位网友表示赞同!
不知道这个系统能检测到哪些类型的异物?
有8位网友表示赞同!
希望教程能够讲解系统的数据训练和模型评估方法。
有15位网友表示赞同!
这篇文章对想要了解目标检测技术的人来说非常有帮助吧?
有14位网友表示赞同!
是不是可以用在其他交通工具的安全性保障上呢?
有19位网友表示赞同!
期待更多关于铁路安全技术的分享!
有9位网友表示赞同!
这个系统会不会提高工作人员的工作效率?
有14位网友表示赞同!