# AerialView **Repository Path**: lylec/aerialview ## Basic Information - **Project Name**: AerialView - **Description**: 航拍图检测项目代码 基于Pytorch - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-18 - **Last Updated**: 2025-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: task ## README # AerialView ## 1. 项目部署 ### 1.1 硬件要求 具备 NVIDIA 入门级显卡,CPU 和内存为主流配置。 推荐配置: - CPU:AMD5600X 或同级以上 CPU - 显卡:NVIDIA 3060 或同级以上 CPU - 内存:16G 或更多 ### 1.2 环境配置 需要进行的配置包括: - 安装最新的显卡驱动 - 安装 CUDA 11.6 - 安装 cuDNN 8.5.0.x - 安装本地 whl 包: auxmodels - 安装本地 whl 包: torch+cu116 (默认会下载 cu118 的包,与 CUDA 版本不符) - 安装 requirements.txt 定义的依赖库 > `auxmodels`的本地安装包随压缩包一起提供 > `torch`的本地安装包可以从 `https://download.pytorch.org/whl/torch_stable.html` 下载 ## 2. 功能运行 ### 2.1 命令行模式 在项目根目录下运行: ```bash python app/run_cmd.py --inputs='path to input video' --weights='path to onnx weights' ``` 其中`--inputs`输入可以有三种形式: - `单个视频`:一个视频文件的路径,在该视频上运行功能,支持后缀为`.mp4`,`.avi` - `单个图片`:一个图片文件的路径,在该图片上运行功能,支持后缀为`.png`,`.jpg` - `多个图片`:一个文件夹的路径,该文件夹下可包含多张图片,支持后缀为`.png`,`.jpg` - 暂不支持以文件夹形式组织的多个视频连续运行 额外的控制参数: - `--outputs`:结果输出的保存目录,默认为`resources/demo`,需保证输出路径有可写入权限 - `--show`:如果增加此控制项,则显示运行过程,默认为不显示 - `--scale`:显示结果的缩放倍数,默认为 0.5,保证输入在(0,1)之间 - `--save_mode`:保存模式,只在输入为视频时生效,默认为`image`,可选输入 [`image`, `video`] - `--interval`:即每 interval 帧运行一帧识别功能,默认为 4,保证输入为正整数,间隔过大会影响识别效果 - `--conf_thres`:目标置信度阈值,大于该值则判定为目标,默认为 0.25 - `--max_age`:目标跟踪中,最大轨迹延续长度,即目标丢失后延续帧数,默认为 1 - `--min_hit`:目标跟踪中,建立新轨迹的最小累计帧数,默认为 3 - `--iou_thres`:目标跟踪中,前后帧目标匹配的 IOU 阈值,默认为 0.3 - `--min_pixel`:最小目标的像素尺寸,当目标框长/宽有至少一个维度超过该像素值,则输出该目标 - `--period`:片段截取区间,按照`mm:ss-mm:ss`的格式输入,当存在该输入时,保存模式强制切换为视频模式 ``` # 一个运行示例 python app/run_cmd.py --inputs=resources\videos\Y1.MP4 --weights=resources\weights\output\20230706.onnx --show --scale=0.6 --save_mode=video --interval=5 ``` ### 2.2 GUI 模式 在项目根目录下运行: ```bash python app/run_gui.py ``` 在界面上配置完所有输入信息和参数信息后,点击`开始`运行。 ## 3. 模型训练 ### 3.1 添加新数据 指定一个存放数据的根目录,在该目录下存放所有数据。数据分为两大类: - `pos`:包含目标的常规样本,通过指定格式的 json 文件标注目标,需要将图片和标注文件分别放在平级的`images`和`labels`文件夹下,保证一一对应(不对应的样本会被过滤); - `neg`:不包含目标的纯负样本,只需要图片,不包含 json 文件。 每一批次的数据放在一个单独的文件夹内,建议用添加的日期命名,便于区分和管理。文件名不要出现**中文**或者**空格**,比较容易出 bug。 最终形成的数据文件夹结构如下所示: ``` data_root pos 202306XX images labels 202307XX images labels …… neg 202306XX 202307XX …… ``` ### 3.2 生成数据列表 在项目根目录下运行: ```bash python tools/convert_labelme2pickle.py --data_root='path to root of dataset' ``` 生成数据集列表`ae_samples_train.pickle`和`ae_samples_val.pickle`。 ### 3.3 训练模型 模型训练分为三步进行: 1. 使用配置文件`config_finetune1.toml`,加载预训练权重,冻结模型前半部分,只训练输出层参数; 2. 使用配置文件`config_finetune2.toml`,加载上一步训练的权重,冻结模型 backbone 部分参数,训练其他参数; 3. 使用配置文件`config_finetune3.toml`,加载上一步训练的权重,训练模型全部参数。 在项目根目录下运行: ```bash # 启动训练 python tools/train_finetune.py --cfg='path to config file' # 一个运行示例 python tools/train_finetune.py --cfg=cfgs\config_finetune3.toml # 通过Tensorboard监控训练过程 tensorboard --logdir=resources\runs ``` > 如果是全新训练,需要走 1-3 阶段,如果有上一次的训练结果,只是新增加了部分数据,可加载上一次的最终结果,直接进行第 3 阶段 ### 3.4 导出模型 将`pth`格式的模型导出为`onnx`格式,便于执行调用。 在项目根目录下运行: ```bash python tools/export.py --checkpoint='checkpoint to export' --output_path='path of exported onnx' # 一个运行示例 python tools/export.py --checkpoint=resources\runs\20230703-130652\checkpoint\80.pth --output_path=resources\weights\output\20230703 # 运行成功后输出 > Export onnx to: resources\weights\output\20230703.onnx > Export pth to: resources\weights\output\20230703.pth ``` ### 3.5 测试模型 加载模型对图像进行推理测试,查看单帧预测效果。 在项目根目录下运行: ```bash python tools/test.py --video='path to input video' --weights='path to onnx weights' ```