工程复现 -- airborne-detection-starter-kit

工程复现 – airborne-detection-starter-kit

参考
1. siammot环境配置
2. AOT baseline工程

效果

1)原视频

AOT原始视频举例

2)检测效果 (上面数字代表距离,下面数字代表置信度,中间代表追踪id)

AOT数据集检测结果


一. 下载与安装工程

  1. 下载工程
git clone [email protected]:amazon-prime-air/airborne-detection-starter-kit.git
  1. 安装依赖

法一: 采用官方方式

cd airborne-detection-starter-kit
pip3 install -r requirements.txt

法二: 在已经安装siammot虚拟环境 情况下,可以将虚拟环境拷贝一份再采用法一。

conda create -n airborne_det --clone siammot # 先克隆siammot虚拟环境
conda deactivate 
conda activate airborne_det

cd airborne-detection-starter-kit
pip3 install -r requirements.txt

二. AOT数据说明

详情参考docs/DATASET.md 文档

2.1 数据说明

  • 完整AOT数据集大小超过11TB, 可以只下载部分数据集500G,包含有效的两个配备定位设备的飞机相遇的连续帧。
  • 数据集地址:s3://airborne-obj-detection-challenge-training/
  • 数据集组织结构如下,data目录在工程根目录下,分为part1、part2、part3 三个部分。每个文件夹包含ImageSets和Images, ImageSets中的groundtruth.json文件存放真值。
    Images 中存放flight标识符文件夹,内部存放连续的图像帧。
data
├── part1
│   ├── ImageSets
│   │   └── groundtruth.json
│   └── Images
│       ├── 1497343b9d90411db5c305e785be9032
│       │   ├── 15580184151527797371497343b9d90411db5c305e785be9032.png
│       │   ├── 15580184153446871561497343b9d90411db5c305e785be9032.png
│       │   ├── 15580184154352609941497343b9d90411db5c305e785be9032.png
│       │   └── 15580184155474411311497343b9d90411db5c305e785be9032.png
│       │   └── [...]
│       ├── 1f9a42f2d2194622b845bf5ad9ba1fce
│       │   ├── 15445285838485478651f9a42f2d2194622b845bf5ad9ba1fce.png
│       │   ├── 15445285839226252081f9a42f2d2194622b845bf5ad9ba1fce.png
│       │   ├── 15445285840353354091f9a42f2d2194622b845bf5ad9ba1fce.png
│       │   ├── 15445285841304961601f9a42f2d2194622b845bf5ad9ba1fce.png
│       │   ├── [...]
│  
├── part2
│   └── ImageSets
│       └── groundtruth.json
│   └── Images
│       ├── [...]
│  
├── part3
│   ├── ImageSets
│   │   └── groundtruth.json
│   └── Images
│       └── f3b3af98f63543a0965fab8b005b13c7
│           ├── 1568218496792027402f3b3af98f63543a0965fab8b005b13c7.png
│           ├── 1568218496891165702f3b3af98f63543a0965fab8b005b13c7.png
│           ├── 1568218496986100575f3b3af98f63543a0965fab8b005b13c7.png
│           ├── 1568218497082896562f3b3af98f63543a0965fab8b005b13c7.png
  • 每个flight一般而言,包含2分钟,10hz,总共1200帧图像。
  • gt json中,主要包含信息有时间戳,帧数,id, bbox标注框,标签、航线id、图像名称。
{
    
    
    'time': 1550844897919368155,
    'blob': {
    
    
        'frame': 480,
        'range_distance_m': nan # signifies, it was an unplanned object
    },
    'id': 'Bird2',
    'bb': [1013.4, 515.8, 6.0, 6.0],
    'labels': {
    
    'is_above_horizon': 1},
    'flight_id': '280dc81adbb3420cab502fb88d6abf84',
    'img_name': '1550844897919368155280dc81adbb3420cab502fb88d6abf84.png'
}

2.2 one flight数据下载
由于完整数据集,太大,如果只是推理查看效果,可以只下载one flight数据集即可,参考脚本如下:

from core.dataset import Dataset

# 添加part1数据地址
dataset = Dataset(local_path='data/part1', s3_path='s3://airborne-obj-detection-challenge-training/part1/', prefix='part1', partial=True)

# 获取one flight数据
flight_ids = dataset.get_flight_ids() # 859flight
flight = dataset.get_flight(flight_ids[0]) # Loading single flight

flight.download()

上述提供脚本包含有效测试图片93张。

2.3 数据集简单使用

# test
airborne_objects = flight.get_airborne_objects() # Get all airborne objects
airborne_object = list(airborne_objects)[0] # 取第一个obj
airborne_object.location # Location of object in whole flight,
frames = flight.frames  # All the frames of the flight  93帧

# 获取航线帧数,利用帧数获取检测物体
frames = flight.frames # All the frames of the flight, dict
frame = list(frames.values())[0]
airborne_object_in_frame = frame.detected_objects

三. 运行

  1. 运行seg_test脚本,运行结果会默认保存到data/results/run0/flight_id下面。
./run.sh # 实际运行seg_test.py

注意
1)先修改脚本文件中 test_data_path 为本地测试文件路径,如test_data_path = '/data/part1/Images/part100bb96a5a68f4fa5bc5c5dc66ce314d2'
2)修改evaluator/airborne_detection.py, 36行,更改自己测试数据路径,因为后面用到get_all_flight_ids()
flight_id一般为下面形式:part100bb96a5a68f4fa5bc5c5dc66ce314d2。

self.test_data_path = os.getenv("TEST_DATASET_PATH", os.getcwd() + "/data/part1/Images/")
  1. 运行siam_mot_test脚本
    同样注意修改 test_data_path 路径。
python siam_mot_test.py
  1. 可以仿照siam-mot工程中demo的方法,对检测结果合成视频,并进行压缩,得到文章开头的结果。

四. 排疑

Q1: 执行测试seg_test.py时, SegDetector Init初始化model_transform ,invalid load key, ‘v’
A1: 需要下载pth模型文件,项目中给出的只是以.pth为结尾的文本文件。
参考 1.git lfs 大文件上传 2. git lfs常用命令指南

git lfs fetch  # 拉取大文件,解压zip文件
git config lfs.fetchinclude 'siam-mot/models'  # 接下来lfs操作只针对前面的目录下
git lfs ls-files  # 查看文件
git lfs pull      # 拉取

Q2: 执行siam_mot_test.py 时,No module named ‘siam_mot_tracker’
A2: 将工程内部siam-mot文件夹也加入到python环境变量,如下:

export PYTHONPATH=$PYTHONPATH:~/workspace/airborne-detection-starter-kit/siam-mot

Q3:执行siam_mot_test.py 时,ModuleNotFoundError: No module named ‘torchvision.models.utils’
A3
参考:torchvision版本问题,修改siam-mot/siammot/modelling/backbone/dla.py", line 11

#from torchvision.models.utils import load_state_dict_from_url  # 原版
from torch.hub import load_state_dict_from_url                  # 改版

Q4: 执行siam_mot_test.py 时,File “/home/cui/workspace/airborne-detection-starter-kit/siam-mot/siammot/modelling/backbone/dla.py”, line 405, in dla. Error: invalid load key, ‘v’.
A4: 同Q1,需要下载pth完整模型文件。

Q5: 调试seg_tracker/models_transformation.py, BUG: No module named ‘pytorch_model_summary’
A5:

pip install pytorch_model_summary

猜你喜欢

转载自blog.csdn.net/weixin_36354875/article/details/128635749