国旗检测 pytorch yolov3

Flag-Detection 国旗检测

该项目基于PyTorch框架,在一定程度上使用了开源的yolo v3部分代码。(本人并未对原有的yolo v3部分的代码做过多的修饰与更改,原作者的注释得到了充分的保留。)

本项目提供了数据集和本人在Titan XP上训练完成的检测模型。

(当我回忆起我采用了哪位dalao的代码以后,我会在此注明引用来源,并表示感谢)

1 简介

1.1 支持的国旗类别

本项目提供了数据集,并提供了基于本数据集训练完成的模型。
该项目可以完成对64种国旗的分类,涵盖了世界上主要国家,同时根据基于字典序的国家列表从头选择了一部分国家。

(该项目具有一定的可扩展性,欢迎更多的开发者完善数据集)

以下是本项目中所涵盖的国家列表:

{‘Afghanistan’: 0, ‘Albania’: 1, ‘Andorra’: 2, ‘Angola’: 3,

‘Argentina’: 4, ‘Armenia’: 5, ‘Australia’: 6, ‘Austria’: 7,

‘Azerbaijan’: 8, ‘Bahamas’: 9, ‘Bahrain’: 10, ‘Bangladesh’: 11,

‘Barbados’: 12, ‘Belarus’: 13, ‘Bhutan’: 14, ‘Bolivia’: 15,

‘Brazil’: 16, ‘Bulgaria’: 17, ‘Cambodia’: 18, ‘Canada’: 19,

‘CapeVerde’: 20, ‘Chile’: 21, ‘China’: 22, ‘Christmas Island’: 23,

‘Colombia’: 24, ‘Congo’: 25, ‘Cook Island’: 26, ‘Costa rica’: 27,

‘Cuba’: 28, ‘Cyprus’: 29, ‘Czech’: 30, ‘Democratic Republic of the Congo’: 31,

‘France’: 32, ‘German’: 33, ‘India’: 34, ‘Iran’: 35,

‘Iraq’: 36, ‘Israel’: 37, ‘Japan’: 38, ‘Jordan’: 39,

‘Laos’: 40, ‘Lebanon’: 41, ‘Malaysia’: 42, ‘Myanmar’: 43,

‘NewZealand’: 44, ‘NorthKoera’: 45, ‘Palestine’: 46, ‘Philippines’: 47,

‘Russia’: 48, ‘Saudi Arabia’: 49, ‘Singapore’: 50, ‘Slovakia’: 51,

‘SouthKoera’: 52, ‘Spain’: 53, ‘Sverige’: 54, ‘Switzerland’: 55,

‘Syrian’: 56, ‘Tailand’: 57, ‘The Central African Republic’: 58, ‘Turkey’: 59,

‘UK’: 60, ‘US’: 61, ‘Ukraine’: 62, ‘Vietnam’: 63}

1.2 数据集

本项目使用的数据集是VOC格式的。数据集分为两部分,分别由两部分构成

(1)手工标注的来自网络的照片:

共2400张左右。这些照片涵盖了上文提到的国家中的18种国家~~(似乎是的QAQ记忆不深)~~。
在数据集中以[XXX.jpg]的文件名形式存在。

(2)根据国旗图像与随机的底版批量生成的:
共1240张左右。在数据集中以[qwq_XXX.jpg]的文件名形式存在。

数据集的压缩包已经上传到百度网盘当中了:

链接:https://pan.baidu.com/s/1_xyZJAbi1sLhT1bzW97dPg

提取码:6xqg

2 如何启动

2.1 数据集的准备

数据集应当放置在’./data/dataset’路径下,每一个图片都应该对应一个文件名相同的VOC格式的xml标签文件。

2.2 数据集的处理

首先运行“1.pre_process.py”,完成对数据集的预处理,这一步操作的意义在于产生两个文件:

(1)将VOC格式的数据集中的信息提取出来,存放到’./data/dataset.txt’文本文档中,方便统计所有的数据样本,方便进行数据集的统计、打乱、划分。

(2)同时程序会将VOC格式的数据集中的所有出现过的Label进行编号,形成映射关系{编号:国家名},存放到’./model/dict.npy’文件中。这样做是为了方便模型进行多分类,方便根据分类结果映射到实际的国家名。

该操作会自动进行数据集的完整性检查,忽略掉缺失了图片和或缺失了标签的文件。

2.3 训练

运行“2.train.py”,开始模型的训练。受限于本人的代码开发水平,本项目并不支持在未安装Cuda框架的环境中运行。(在运算过程中,多如牛毛的向量会被发送到显存中,而同时设计CUDA和非CUDA的代码会显著的增加代码量)。

在该文件的line 173位置附近可以更改学习率、Epoch数量;每个epoch的loss都会被记录下来,存储到val_losses.txt文件中。

训练完成的模型将会存储在"model/yolo_v3.pth"

PS:本人训练完成的模型已经上传到了百度网盘,也可以直接下载下来放到model文件夹

链接:https://pan.baidu.com/s/1QO80UkUktFRfS1pTJnAeDQ

提取码:n9rx

2.4 使用训练完成的模型

要使用训练完成的模型进行预测,可以参考本人写的一个小demo “3.predict.py”,这个demo提供了一种实例:如何载入模型,如何打开一个图片并使模型完成预测。

3.项目的获取

代码的获取请移步本人的github仓库:https://github.com/Ws-Syx/Flag-detection-Yolo_v3-PyTorch

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值