#### 华为云第二届无人车挑战杯海选赛Baseline
---
Baseline基于最新的`Yolov5`项目训练自己的数据集以到达赛题要求的正确区分信号灯、交通标志、人行道的目的。
##### 操作步骤
###### 项目拉取
```
git clone https://github.com/Riser6/AVC_Yolov5.git
```
或者直接手动download
###### 准备工作
1. python环境配置
若在本地或者个人服务器上,先建立虚拟环境:
```
conda create -yolov5 py37 python=3.7
conda activate yolov5 #可能需要关闭中断重启
conda deactivate yolov5 #退出虚拟环境时运行
```
若使用`华为云modelarts`服务器训练,请在`MedelArts`平台Notebook中创建notebook,其中工作环境选择`TF-2.1.0&Pytorch-1.4.0-python3.6`,选择付费规格`GPU`,存储配置使用`云硬盘(EVS)`
在`Launcher`中选择`Terminal 1`打开中断,输入:
```
python --version #查看python版本号,貌似预置就是Python 3.7.3,若不是,请按照上面一样建立虚拟环境,python版本达到要求不需要执行虚拟环境配置的命令
```
2. 依赖库安装
项目目录下`requirements.txt`中有依赖库的版本要求,可以直接配置好虚拟环境后,终端键入:
```
pip install -r yolov5/requirements.txt
```
推荐:如果速度慢,可以尝试`sh requirements.sh`安装依赖库,其中脚本前两条指令仅针对使用`华为云modelarts`服务器的用户,指定服务器的`Cuda`版本,本地或者个人服务器用户请查看`Cuda`版本后,在`Pytorch`官网选好对应操作系统,对应`Cuda`版本的安装命令(记得去掉 -c)后执行
3. 数据集准备
将比赛制定的数据集`labeled_data_backup`上传放置在data目录下(华为云平台操作用户请先看注意事项)
在项目目录(`./yolov5`)下打开终端,键入`python labelconvect.py`运行已编写好的脚本,用于进行标签转化,将原`xml`类型的标签转化为`txt`类型的标签(Yolo项目要求),运行成功后可以检查data目录下面是否多出了`labelYOLOs`文件夹
然后在项目目录(`./yolov5`)下打开终端,键入`python train_val_split.py`运行已编写好的脚本,用于进行训练集和验证集的划分,若运行成功可以看见`dataset/HUAWEI_AVC`目录,并且对应文件夹下面已经有了图片和标签数据。(训练集和验证集按照`7:3`划分,若在正常训练结束后需要将验证集投入训练,直接对调`train`、`val`两个文件夹的名字,重新训练即可)
4. 配置文件修改(已完成)
models目录下面所有的`yaml`文件第二行:
```
nc: 6
```
data目录下面放置好`HUAWEI_AVC.yaml`文件
5. 预训练权重下载
请直接下载我上传在大创群的模型文件,因为这个Yolo原项目在持续更新,貌似模型的兼容读取出了问题(之前版本的代码无法正常读取现在新更新的预训练模型,不对,是新版本的代码也无法正常读取新更新的预训练模型),保证`pt`模型放置在`yolov5/weights/`文件夹下(华为云用户参考注意事项)
不要前往`https://drive.google.com/drive/folders/1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J`下载预训练模型的权重文件(4个`pt`文件)
不要直接运行/weights目录下面的`download_weights.sh`
不要在项目运行中自动下载对应模型的预训练权重
###### 训练模型
可以在`train.py`第24~42行调整模型对应的一些超参数
在`train.py`第361~381行命令行选项中更改模型和数据的配置,详见注释(理论上只需要调整我写了中文注释的几个),也可以通过指令键入需要调整的参数
项目目录(`./yolov5`)下
```
python train.py
```
每次训练都会在`run`文件夹下生成一个`exp`目录保存训练日志和训练模型结果,可以在目录下面查看训练日志信息,注意查看`result.jpg`中最后一个折线图(这是这次比赛的指标,若有超过当前成绩,可以考虑提交一波),另外每次训练会保存两个模型结果`best.pt`、`last.pt`(其中best是根据`yolo`项目制定的fitness函数计算,这个指标综合了召回率、精确率、`map`、`map0.5:0.95`(原项目权重分配为[0,0,0.1,0.9]),可以尝试直接修改为根据`map0.5:0.95`保存最优模型)。为便于华为云平台发布,需要最后转化一下模型的保存(原项目的模型保存比较特殊,不适合华为云平台发布),即用于平台发布的是`best_convect.pt`或者`last_convect.pt`文件
在`inference/images`中上传放置你想要检测的图片,另外在记得更改`if __name__ == '__main__':`,你想要使用的模型文件
执行完后可以在`inference/output`中查看检测结果。
##### 注意
1. 使用华为云平台的用户进行数据传输时,上传超过`100M`数据时(模型文件传输,数据集上传),需要借助OBS桶与notebook进行数据互传,具体操作请查看官方文档介绍`https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0127.html`
传输指令在`ipynb`文件直接执行如果报错的话,请使用命令行python交互环境键入命令
另外传输依赖库`modelarts`不要直接通过pip安装,请:
```
wget https://cnnorth1-modelarts-sdk.obs.cn-north-1.myhwclouds.com/modelarts-1.1.3-py2.py3-none-any.whl #直接下载modelarts库的whl文件
ls #查看当前目录下面是否已经有了该whl文件
pip install modelarts-1.1.3-py2.py3-none-any.whl #安装modelarts库
python #进入命令行python交互环境
>>>from modelarts.session import Session
>>>session = Session()
#加载我上传在大创群的模型预训练权重,请提前将文件保存在OBS桶中,并且使得权重文件夹上传服务器之后,目录组织为yolov5/weights/pt文件,这里我是先删除weights文件夹,然后直接将OBS桶的wights文件夹传入的
>>>session.download_data(bucket_path="/riser-bucket1/weights/", path="/home/ma-user/work/AVC_Yolov5/yolov5/")
#加载数据集,如上传的是压缩文件,上传后及时解压,使得目录组织为yolov5/data/labeled_data_backup/图片&xml注释
>>>session.download_data(bucket_path="/riser-bucket1/dataset/labeled_data_backup.zip", path="/home/ma-user/work/AVC_Yolov5/yolov5/data/labeled_data_backup.zip")
```
2. 其中项目目录(`./yolov5`)下面的`model`文件夹为用于华为云平台模型导入的文件,项目clone之后可以将这个文件夹剪切到电脑本地,服务器端可以删除,每次模型发布只需要更改`model/model.pt`(这个为训练后保存的且经过转化后的模型文件,即`best_convect.pt`或者`last_convect.pt`,理论上上传的文件夹model目录下面只能有一个pt模型文件),配置文件和推理代码都无需更改,models和`uts`一些`py`文件也尽量不要用原项目对应文件夹下面的文件去替代,因为有些依赖库和部分代码进行了修改(为了适应华为云的发布环境),具体模型导入和发布请查看官方文档介绍。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 华为云第二届无人车挑战杯海选赛参赛源码+项目说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
华为云第二届无人车挑战杯海选赛参赛源码+项目说明.zip (61个子文件)
code_20105
yolov5
labelconvect.py 2KB
weights
download_weights.sh 244B
data
coco128.yaml 2KB
get_voc.sh 6KB
coco.yaml 2KB
voc.yaml 704B
get_coco2017.sh 1KB
HUAWEI_AVC.yaml 371B
hubconf.py 3KB
requirements.sh 624B
.idea
vcs.xml 183B
misc.xml 185B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 264B
.gitignore 47B
yolov5.iml 441B
train_val_split.py 1KB
model
uts
utils.py 50KB
__init__.py 0B
google_utils.py 4KB
activations.py 2KB
datasets.py 37KB
torch_utils.py 8KB
config.json 3KB
customize_service.py 4KB
models
hub
yolov5-panet.yaml 2KB
yolov3-spp.yaml 2KB
yolov5-fpn.yaml 1KB
__init__.py 0B
yolov5m.yaml 2KB
yolov5s.yaml 2KB
yolov5l.yaml 2KB
common.py 4KB
experimental.py 6KB
yolov5x.yaml 2KB
yolo.py 10KB
uts
utils.py 50KB
__init__.py 0B
google_utils.py 4KB
activations.py 2KB
datasets.py 37KB
torch_utils.py 8KB
requirements.txt 972B
train.sh 122B
models
hub
yolov5-panet.yaml 2KB
yolov3-spp.yaml 2KB
yolov5-fpn.yaml 1KB
__init__.py 0B
export.py 3KB
yolov5m.yaml 2KB
yolov5s.yaml 2KB
yolov5l.yaml 2KB
common.py 4KB
experimental.py 6KB
yolov5x.yaml 2KB
yolo.py 10KB
detect.py 7KB
train.py 26KB
test.py 12KB
.gitignore 101B
README.md 7KB
共 61 条
- 1
资源评论
土豆片片
- 粉丝: 1562
- 资源: 5642
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功