# 基于 YoloV3 的机坪飞机图像识别
[TOC]
已经上传利用hilens接入多路视频的方案,可以参考文件夹下“Hilens接多路视频流方案”内容。
## 1. 应用价值
与道路交通不同的是,航空器在地面运行时难以通过高架、隧道等方式将航班滑行路径分离,由于飞机起降架次的增多,加上恶劣天气的影响,跑道侵入事件已成为民航领域航空器地面安全运行的头等问题,跑道安全事故在民用航空事故中占有很大比例,因此对与在机场跑道和滑行道上运行的航空器、车辆等目标的身份、位置及其动态的掌控程度,很大程度上决定了跑道运行安全的系数。
机场地面运行的航空器和其他载具一般都经由塔台进行统一调度管理,塔台的核心职责是确保航班“安全、有序、高效”运行,塔台管制人员通过“看到-了解-判断-行动”这一决策过程对数量众多的航空器和地面载具进行统一指挥,而“看到”和“了解”这两个过程往往会对管制决策起到决定性作用。
随着机场规模增加,平面布局变得日益复杂化,对于大型机场的塔台而言,单点视野物理受限,以及数字化程度提升的同时,客观上造成屏幕变多、信息量变大,“看到”和“了解”形成了较大的挑战,人的主观能动性很强,但往往难以面面俱到。
基于上述背景,我们设计了跑道侵入防护系统,用于加强跑道侵入事件的防范。“光电盯防子系统”是该系统的重要实时核心,该子系统具备较完整的“基于视频流的航空器目标识别和跟踪”能力,主要工作是将机场平面各个关键点采集到的实时视频流送入基于华为云ModelArts框架的“航空器识别模型”进行处理,识别出画面中飞行器对象的像素坐标等一次参数后,对其进行空间位置换算,以及包括速度、运行方向等在内的二次参数的计算,并在系统运行数据中找到相匹配的航班信息对目标进行信息标记,以AR信息增强的形式呈现在监视器上,让管制员以“抬头显示”的形式在单一屏幕中直观了解到足够全面的动态信息。同时该系统会在后台对所有目标的轨迹和矢量动态数据进行监控和推算,让计算机能够代替或辅助管制人员在全局范围对每一个航班、每一个道口进行实时盯防,提前预知潜在运行风险,从而降低事故发生的概率。
本项目即为该系统的“航空器识别模型”子系统。基于YoloV3模型,能够实现较为准确的目标识别和坐标输出,依托ModelArts训练推理系统,可以实现的”航空器识别模型“服务,实现从“看到”到“了解”的关键一步。
## 2. 开发流程
本项目基于Yolo模型,其主要程序参考华为“ModelArts/开发环境/notebook”,Examples中的mxnet_objection_detection项目构建。
#### a. 基本流程与yolov3
本项目基本流程如图,基本遵循从华为提供的样例代码开始进行修改,并最终调整应用的过程。如开发其它类型基于华为样例代码的工程,同样可以参考本开发流程。开发流程示意图如下:
![develop_flow](./md_img/develop_flow.png)
本项目使用yolov3模型,该模型是经典的目标检测模型。可以实现快速、准确的目标检测。其采用darknet_53作为特征提取网络,并采用多层级检测的方式,实现对大小不同的目标进行快速检测。详细内容可以参考论文原文: [YOLOv3: An Incremental Improvement](https://arxiv.org/pdf/1804.02767v1.pdf)
#### b. 标注并准备训练数据
模型开发的第一步就是进行数据,由于MA提供的数据准备函数是基于PASCAL VOC 系列数据集的,其中每一张图片对应一个xml标注数据文件。具体可是可以参考[PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) 系列数据集的描述和详细内容。
标注数据与调整数据集结构是一件非常麻烦的事情,但是ModelArts已经对目标检测的标注提供了完善的数据标注工具支持。本项目也采用ModelArts提供的数据标注工具进行相关工作。具体地说,将采用ModelArts提供的“数据管理/数据集”功能创建“目标检测”数据集以进行标注工作。具体流程可以参考官方[数据管理使用指南](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0003.html)。
由于后续我们将在notebook中训练,因此得到的数据集还需进一步处理。先标注数据,然后发布数据集,标注数据会保存在`obs://数据集输出位置/dataset-****/annotation/数据版本号/annotations`中,其保存形式为与图片名称相同的xml格式文件。将xml标注文件与对应的图像文件放在同一文件夹中,则可以构筑本项目所需数据集。为方便起见,图像与标注文件文件夹仍保存在obs中的同一文件夹中。
除了单纯的提取数据之外,还可以根据个人需求进行简单的数据加工,比如重新改写标注名称等等。由于本项目中无需额外处理,因此具体方法不再赘述。
#### c. 获得参考代码
参考代码有两个来源,一个是华为提供的notebook example中的notebook代码,另一个是notebook中需要下载的库代码,本小节将描述两个代码具体的获得办法。
参考notebook代码可以在ModelArts Jupyter Notebook下通过Examples中的mxnet_objection_detection打开。具体位置如图:
![notebook_example](./md_img/notebook_example.png)
而其他的参考代码获得方法则略有不同。我们可以在notebook文件中看到,该notebook正常运行需要通过wget下载代码,该代码即为我们需要的参考代码。位置如图:
![download_code](./md_img/download_code.png)
在公网也可以正常下载,可以使用如下命令直接下载然后解压缩获得参考代码:`wget https://ai-course-common-20.obs.cn-north-1.myhuaweicloud.com/object_detection/object_detection.tar.gz`
#### d. 修改数据准备代码,加载数据
方便起见,notebook代码和其他参考代码放到一个文件中进行使用,且都存储于obs上。其他参考代码主要用于提供python库包,所以不用修改,修改内容集中在notebook代码中。修改内容较为繁杂,具体修改内容可以通过对比本项目提供的notebook文件和原始notebook参考代码来确定。这里仅就其中较为关键的部分进行说明。
参考下图新建notebook,然后使用“mxnet_object_detection.ipynb”作为基础代码,以进行修改。
![juptyer](./md_img/load_model.png)
**修改文件读取方式,加载其他代码和文件**
MA的初始工作目录是`/home/ma-user/work`,所有文件操作都是基于本地系统的,不能直接使用obs中的程序与数据,因此需要修改数据读取方式。在notebook开始位置添加代码:
```python
import moxing as mox
mox.file.shift('os', 'mox')
```
执行后,即可使得python在大部分文件操作中支持obs系统,比如从obs中复制文件到本地系统:
```python
shutil.copytree("s3://youziyolo/youzi/src","./src")
```
其中`s3://`为obs文件路径前缀。
notebook原始代码中有修改本地工作目录的内容。在本项目中本地工作目录工作位置不用修高,保持`/home/ma-user/work`即可。此外,本项目中所有的代码在一开始就已经上传到obs中了,无需用wget下载对应代码,而是通过从obs中复制的方法获得代码和数据。可以参考如下代码(自行操作使需要根据个人指定的obs路径进行修改):
```python
shutil.copytree("s3://youziyolo/youzi/src","./src") # 程序源代码
shutil.copytree("s3://youziyolo/youzi/model","./model") # 预训练模型
shutil.copytree("s3://youziyolo/youzi/data/raw","./rawdata") # 原
没有合适的资源?快使用搜索试试~ 我知道了~
基于华为云ModelArts平台的示例代码库
共2292个文件
png:1293个
jpg:327个
md:151个
2 下载量 34 浏览量
2023-06-03
10:14:44
上传
评论
收藏 343.26MB ZIP 举报
温馨提示
ModelArts-Lab是基于华为云ModelArts平台的示例代码库(内容与github一致)。此库提供的案例包括代码以及数据集均只能用于学习交流,案例数据集来自于开源社区,所有案例及数据集请勿用于除学习之外的其他商业用途,如果违反所产生的法律纠纷与提供方无关。
资源推荐
资源详情
资源评论
收起资源包目录
基于华为云ModelArts平台的示例代码库 (2292个子文件)
Dockerfile-custom-cpu-base-ubuntu18.04-x86_64 3KB
Dockerfile-custom-base-gpu-cuda10.2-ubuntu18.04-x86_64 2KB
Dockerfile-custom-base-gpu-cuda10.1-ubuntu18.04-x86_64 2KB
Dockerfile-custom-base-gpu-cuda10.0-ubuntu18.04-x86_64 2KB
Dockerfile-custom-base-gpu-cuda10.2-cp36-ubuntu18.04-x86_64 1KB
Dockerfile-custom-base-gpu-cuda10.0-cp36-ubuntu18.04-x86_64 1KB
Dockerfile-custom-base-gpu-cuda10.1-cp36-ubuntu18.04-x86_64 1KB
solaris.bin 16KB
road_runner.bin 16KB
double_dunk.bin 16KB
phoenix.bin 8KB
gravitar.bin 8KB
battle_zone.bin 8KB
ms_pacman.bin 8KB
time_pilot.bin 8KB
asteroids.bin 8KB
montezuma_revenge.bin 8KB
private_eye.bin 8KB
kung_fu_master.bin 8KB
asterix.bin 8KB
kangaroo.bin 8KB
hero.bin 8KB
krull.bin 8KB
up_n_down.bin 8KB
robotank.bin 8KB
beam_rider.bin 8KB
centipede.bin 8KB
tutankham.bin 8KB
elevator_action.bin 8KB
zaxxon.bin 8KB
crazy_climber.bin 8KB
jamesbond.bin 8KB
space_invaders.bin 4KB
defender.bin 4KB
alien.bin 4KB
ice_hockey.bin 4KB
venture.bin 4KB
air_raid.bin 4KB
assault.bin 4KB
journey_escape.bin 4KB
chopper_command.bin 4KB
riverraid.bin 4KB
wizard_of_wor.bin 4KB
star_gunner.bin 4KB
video_pinball.bin 4KB
pitfall.bin 4KB
qbert.bin 4KB
yars_revenge.bin 4KB
pooyan.bin 4KB
gopher.bin 4KB
atlantis.bin 4KB
frostbite.bin 4KB
carnival.bin 4KB
seaquest.bin 4KB
name_this_game.bin 4KB
amidar.bin 4KB
bank_heist.bin 4KB
demon_attack.bin 4KB
enduro.bin 4KB
berzerk.bin 4KB
adventure.bin 4KB
pong.bin 2KB
freeway.bin 2KB
breakout.bin 2KB
boxing.bin 2KB
kaboom.bin 2KB
skiing.bin 2KB
tennis.bin 2KB
fishing_derby.bin 2KB
bowling.bin 2KB
_mask.c 690KB
cython_bbox.c 373KB
maskApi.c 8KB
maskApiMex.c 5KB
aipp_RGB.cfg 529B
cifar_int8_cache 421B
gason.cpp 9KB
gasonMex.cpp 9KB
ratings.csv 11.02MB
winequality-red.csv 89KB
train.csv 13KB
train.csv 13KB
iris.csv 4KB
Dockerfile 168B
Dockerfile-custom-cpu-base 3KB
Dockerfile-custom-cpu-inner-moxing-cp27 1KB
Dockerfile-custom-gpu-cuda8-base 3KB
Dockerfile-custom-gpu-cuda8-inner-moxing-cp27 1KB
Dockerfile-custom-gpu-cuda9-base 3KB
Dockerfile-custom-gpu-cuda9-inner-moxing-cp27 1KB
Dockerfile-custom-gpu-cuda9-inner-moxing-cp36 1KB
Dockerfile-custom-gpu-cuda92-base 3KB
dummy 0B
dummy 0B
dummy 0B
dummy 0B
dummy 0B
dummy 0B
FETCH_HEAD 0B
video_generate.gif 3.44MB
共 2292 条
- 1
- 2
- 3
- 4
- 5
- 6
- 23
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7454
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JSP基于SSM校园二手书交易平台源码毕业案例设计.zip
- 电线线路隐藏风险检测35-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、VOC数据集合集.rar
- JSP基于SSM大学生求职招聘网站源码毕业案例设计.zip
- java课程设计,毕业设计选题系统.zip
- Java基于SSM校园购物商城设计源码毕业案例设计.zip
- Java基于SSM教务选课成绩管理系统设计毕业源码案例设计.zip
- CVPR2024《通过 TSP6K 数据集解析交通场景(Traffic Scene Parsing through the TSP6K Dataset)》+ PyTorch 代码+英文论文
- IMG_20241204_134912.jpg
- 4套PPT模板,专业设计,适用于学术答辩与商务汇报
- JAVA,数据库课程设计、毕业设计仓库管理系统使用MySQL和Java.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功