无人机红外图像下极小目标检测数据集,无人机红外小目标检测数据集 低空安防、机场净空监测、反无人机系统、鸟类迁徙监控 YOLOv8** 构建的 **无人机红外图像下极小目标检测系统

无人机红外图像下极小目标检测数据集,无人机红外小目标检测数据集 低空安防、机场净空监测、反无人机系统、鸟类迁徙监控 YOLOv8** 构建的 **无人机红外图像下极小目标检测系统

无人机红外图像下极小目标检测数据集,8302张,yolo和voc两种标注方式
4类,标注数量:
Plane:飞机 2163
Drone:无人机 3120
Heli:直升机 2217
Bird:鸟类 1958
image num: 8302

在这里插入图片描述


1

在这里插入图片描述


1

在这里插入图片描述


以下是 无人机红外图像下极小目标检测数据集 的完整统计表格:


📊 无人机红外极小目标检测数据集统计表

序号英文类别名称中文类别名称标注框数量
1Plane飞机2,163
2Drone无人机3,120
3Heli直升机2,217
4Bird鸟类1,958
总计9,458
  • 图像总数:8,302 张
  • 图像模态:红外(IR)图像
  • 目标特点:极小目标(通常 < 32×32 像素)
  • 标注格式:同时提供 YOLO (.txt)PASCAL VOC (.xml) 两种格式
  • 应用场景:低空安防、机场净空监测、反无人机系统、鸟类迁徙监控等

数据集适用于 红外小目标检测、弱信号识别、多类空中目标分类与跟踪 等前沿研究与工程应用。

基于 YOLOv8 构建的 无人机红外图像下极小目标检测系统 的详细代码实现。该系统支持:

  • 加载红外图像
  • 使用 YOLOv8 模型进行推理
  • 提供 Web 界面上传与可视化(Flask)
  • 支持 YOLO 和 VOC 格式数据训练(本例使用 YOLO 格式)

📁 一、项目结构

infrared_small_target_detection_yolov8/ ├── data/ │ └── dataset.yaml # 数据集配置(4类) ├── models/ │ └── best.pt # 训练好的 YOLOv8 模型 ├── static/ │ ├── uploads/ # 用户上传图像 │ └── results/ # 检测结果图 ├── templates/ │ ├── index.html # 主页(上传界面) │ └── result.html # 结果展示 ├── app.py # Flask Web 应用 ├── detect.py # 核心检测模块 ├── requirements.txt └── README.md 

📦 二、环境依赖(requirements.txt

ultralytics==8.2.0 flask==2.3.3 opencv-python==4.8.0 numpy==1.24.3 Pillow==9.5.0 matplotlib 

安装:

pip install -r requirements.txt 

📄 三、数据集配置 data/dataset.yaml

train: ../data/images/train val: ../data/images/val test: ../data/images/test nc:4names:['Plane','Drone','Heli','Bird']

🔍 四、核心检测模块 detect.py

# detect.pyimport cv2 import os from ultralytics import YOLO # 中英文类别名称映射 CLASS_NAMES ={0:"飞机",# Plane1:"无人机",# Drone2:"直升机",# Heli3:"鸟类"# Bird}defrun_detection(input_path, output_dir="static/results", model_path="models/best.pt"):""" 对单张红外图像进行极小目标检测 :param input_path: 输入图像路径 :param output_dir: 输出目录 :param model_path: 模型路径 :return: (输出图像路径, 检测统计) """ model = YOLO(model_path) img = cv2.imread(input_path)if img isNone:raise ValueError("无法读取图像,请检查路径") results = model(img, conf=0.4)# 设置置信度阈值为0.4 annotated_img = img.copy() boxes = results[0].boxes class_counts ={name:0for name in CLASS_NAMES.values()}for box in boxes: x1, y1, x2, y2 =map(int, box.xyxy[0]) conf =float(box.conf[0]) cls_id =int(box.cls[0])if cls_id notin CLASS_NAMES:continue class_name = CLASS_NAMES[cls_id] class_counts[class_name]+=1# 绘制边界框和标签 color =(0,255,0)# 默认绿色,可根据需要调整颜色 cv2.rectangle(annotated_img,(x1, y1),(x2, y2), color,2) label =f"{class_name}{conf:.2f}" cv2.putText(annotated_img, label,(x1, y1 -10), cv2.FONT_HERSHEY_SIMPLEX,0.5, color,1)# 保存标注后的图像 os.makedirs(output_dir, exist_ok=True) filename = os.path.basename(input_path) output_path = os.path.join(output_dir,f"det_{filename}") cv2.imwrite(output_path, annotated_img)return output_path, class_counts 

🌐 五、Web 应用 app.py

# app.pyfrom flask import Flask, render_template, request, redirect, url_for, send_from_directory import os from detect import run_detection app = Flask(__name__) UPLOAD_FOLDER ='static/uploads' RESULT_FOLDER ='static/results' ALLOWED_EXTENSIONS ={'png','jpg','jpeg'} app.config['UPLOAD_FOLDER']= UPLOAD_FOLDER app.config['RESULT_FOLDER']= RESULT_FOLDER defallowed_file(filename):return'.'in filename and filename.rsplit('.',1)[1].lower()in ALLOWED_EXTENSIONS @app.route('/')defindex():return render_template('index.html')@app.route('/upload', methods=['POST'])defupload_file():if'file'notin request.files:return redirect(request.url)file= request.files['file']iffile.filename ==''ornot allowed_file(file.filename):return redirect(request.url)# 保存上传文件 filename =file.filename filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)file.save(filepath)try:# 执行检测 output_path, counts = run_detection( filepath, output_dir=app.config['RESULT_FOLDER'], model_path="models/best.pt") result_filename = os.path.basename(output_path)except Exception as e:returnf"<h2>检测失败:{str(e)}</h2>"# 过滤掉数量为0的类别 non_zero_counts ={k: v for k, v in counts.items()if v >0}return render_template('result.html', original=filename, detected=result_filename, counts=non_zero_counts)if __name__ =='__main__': app.run(debug=True, host='0.0.0.0', port=5000)

🖼️ 六、前端模板

templates/index.html

<!DOCTYPEhtml><html><head><title>红外极小目标检测系统</title><style>body{font-family: Arial;text-align: center;margin-top: 40px;}.btn{padding: 8px 16px;margin: 5px;background: #007bff;color: white;border: none;cursor: pointer;}.btn:hover{background: #0069d9;}</style></head><body><h2>🔍 无人机红外极小目标检测系统</h2><formmethod="post"enctype="multipart/form-data"action="/upload"><inputtype="file"name="file"accept="image/*"required><br><br><buttontype="submit"class="btn">上传并检测</button></form></body></html>

templates/result.html

<!DOCTYPEhtml><html><head><title>检测结果</title><style>body{font-family: Arial;margin: 20px;}img{max-width: 95%;margin: 10px;border: 1px solid #ddd;}.stats{background: #f8f9fa;padding: 15px;border-radius: 5px;margin: 20px 0;}.item{display: inline-block;margin-right: 15px;}</style></head><body><h2>📊 检测结果</h2><imgsrc="{{ url_for('static', filename='uploads/' + original) }}"alt="原始图"><imgsrc="{{ url_for('static', filename='results/' + detected) }}"alt="检测结果"><divclass="stats"><strong>检测到的目标:</strong> {% for name, count in counts.items() %} <spanclass="item">{{ name }}: {{ count }} 处</span> {% endfor %} </div><ahref="/">← 返回上传</a></body></html>

▶️ 七、运行系统

python app.py 

访问:http://localhost:5000


🎯 八、系统特点

特性说明
🔥 红外图像处理针对极小目标设计,适用于低空安防等场景
🚁 多类空中目标包含飞机、无人机、直升机、鸟类四类目标
🖼️ 中文标签显示前端直接显示中文设备名
📊 统计计数显示每类目标检测数量
🚀 轻量部署Flask + YOLOv8,适合边缘服务器

💡 扩展建议

  • 视频流检测:接入 RTSP 视频流实现实时监控
  • 模型优化:针对极小目标,考虑增加数据增强策略或采用更高级的网络架构
  • API 接口:提供 /api/detect 供其他系统调用
  • 移动端适配:响应式设计以适应不同设备

Read more

OpenCode:开源版Claude Code来了,附Windows客户端

OpenCode:开源版Claude Code来了,附Windows客户端

大家好,我是 Ai 学习的老章 今天给大家介绍一个我最近在用的 AI 编程神器 —— OpenCode。4.6万 Star,500+ 贡献者,每月被 65 万开发者使用。这货基本上就是开源版的 Claude Code,而且完全不绑定任何一家模型提供商! 简介 OpenCode 是一个 100% 开源的 AI 编程智能体,可以在终端、桌面应用或 IDE 里使用。 和 Claude Code 有什么区别?官方自己也说了: * 完全开源:代码全在 GitHub 上,想怎么改就怎么改 * 不绑定模型:Claude、GPT、Gemini、DeepSeek 甚至本地模型都能用,75+ 个 LLM

By Ne0inhk
Github如何上传项目(超详细小白教程)

Github如何上传项目(超详细小白教程)

目录 * 一、Github与Git * 二、git的下载安装 * 三、Github的注册 * 四、Github的上传 * 1.GitHub的上传原理 * 2.远程仓库的申请 * 3.本地仓库的关联 * 4.项目的首次上传 * 5.上传时的常见错误 一、Github与Git 1.Git 是一个免费的开源分布式版本控制系统,你可以使用它来跟踪文件中的更改。你可以在 Git 中处理所有类型的项目。使用 Git,你可以将更改添加到代码中,然后在准备好时提交(或保存)它们。这意味着你还可以返回之前所做的更改。开发者常将 Git 与 GitHub 一起使用。 2.GitHub是一个基于git的代码托管平台,在github上可以建立仓库用于存放项目。GitHub 是一个免费的开源系统,所以我们可以在上面找到有用的资料,也可以保存自己做的一些开源项目,以供别人参考,当然GIthub也提供了付费的私人仓库,以供有人需要将一些不公开的项目放入云端仓库,

By Ne0inhk
用 Rust 构建 Git 提交历史可视化工具

用 Rust 构建 Git 提交历史可视化工具

在软件开发中,版本控制系统的历史记录往往承载着项目的演进脉络。然而,当项目规模扩大、分支增多时,纯文本的 git log 输出很难直观地展现提交之间的复杂关系。今天,我想分享一个用 Rust 构建的轻量级工具 —— git-graph-rs,它能把 Git 仓库的提交历史转换为可视化的图结构,为代码审查、项目复盘和工程决策提供直观的支持。 目录 * 为什么需要可视化? * 技术方案的选择 * 1. 利用系统 Git 命令 * 2. 模块化的 Rust 架构 * 3. 双格式输出策略 * 核心实现解析 * Git 数据获取的艺术 * 图结构的一致性保证 * 合并提交的可视化区分 * 工程化思维体现 * 错误处理的前置化 * 参数设计的克制 * 输出格式的稳定性 * 实际应用场景 * 1. CI/CD 集成 * 2. 代码审查辅助 * 3. 项目文档化

By Ne0inhk
OpenManus开源自主规划智能体解析

OpenManus开源自主规划智能体解析

OpenManus 开源自主规划智能体详解 OpenManus 是一款聚焦“自主任务执行”的开源智能体项目,核心价值在于打破传统智能体对人工干预的依赖,能够自主拆解复杂任务、规划执行路径,并在隔离环境中调用多样化工具完成目标,适用于数据爬取、代码编写、多步骤办公自动化等复杂场景。以下从核心定义、核心架构、实现原理、关键能力、适用场景与优势五个维度展开详解: 一、核心定义:具备“自主决策+工具执行”的开源智能体 OpenManus 的本质是一款以“自主规划”为核心的智能体框架,其核心特征可概括为: * 开源属性:代码完全开放,支持开发者二次定制、扩展功能模块(如新增工具、优化规划逻辑),适配不同行业场景的个性化需求; * 自主执行能力:无需用户拆分任务步骤,仅需输入最终目标(如“爬取某行业TOP10企业近3年营收数据并生成可视化图表”),即可自主完成规划、执行、反馈全流程; * 隔离化工具调用:基于虚拟机环境运行工具操作(如代码执行、网络爬虫),避免本地环境冲突或安全风险,保障任务执行的稳定性与安全性;

By Ne0inhk