Skip to content

URS1023/Satellite_Image_Object_Detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

卫星图片目标检测系统

作者:UR的出不克

项目简介

这是一个基于YOLOv5和Flask的卫星图片目标检测Web应用系统。系统可以对卫星图片中的特定目标进行检测和识别,包括油罐、船只、桥梁和飞机等目标。

功能特点

  • 支持Web界面图片上传和检测
  • 支持API接口调用
  • 实时显示检测结果和置信度
  • 支持多目标同时检测
  • 检测目标类别:
    • 油罐(oilcan)
    • 船只(vessel)
    • 桥梁(bridge)
    • 飞机(plane)

环境要求

  • Python 3.7+
  • PyTorch 1.7.0+
  • Flask
  • OpenCV
  • 其他依赖见requirements.txt

安装步骤

  1. 克隆项目到本地
git clone [项目地址]
cd yolo-flask-master
  1. 下载YOLOv5
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt
cd ..
  1. 安装项目依赖
pip install -r requirements.txt
  1. 准备模型文件
  • 将训练好的模型文件 best.pt 放在 yolov5 目录下
  1. 创建main.py 在 yolov5 目录下创建 main.py 文件,内容如下:
import torch
from models.experimental import attempt_load
from utils.general import non_max_suppression
from utils.datasets import letterbox
import cv2
import numpy as np

def detect(weights, source, device):
    # 加载模型
    model = attempt_load(weights, device=device)
    
    # 读取图像
    img0 = cv2.imread(source)
    img = letterbox(img0, 640, stride=32)[0]
    img = img.transpose((2, 0, 1))[::-1]
    img = np.ascontiguousarray(img)
    img = torch.from_numpy(img).to(device)
    img = img.float()
    img /= 255.0
    if img.ndimension() == 3:
        img = img.unsqueeze(0)
    
    # 推理
    pred = model(img, augment=False)[0]
    pred = non_max_suppression(pred, 0.25, 0.45)
    
    # 处理结果
    det = pred[0]
    if len(det):
        det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round()
        
    return det

def scale_coords(img1_shape, coords, img0_shape):
    gain = min(img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1])
    pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2
    
    coords[:, [0, 2]] -= pad[0]
    coords[:, [1, 3]] -= pad[1]
    coords[:, :4] /= gain
    
    coords[:, 0].clamp_(0, img0_shape[1])
    coords[:, 1].clamp_(0, img0_shape[0])
    coords[:, 2].clamp_(0, img0_shape[1])
    coords[:, 3].clamp_(0, img0_shape[0])
    
    return coords
  1. 运行应用
python app.py

使用说明

  1. Web界面使用:

    • 访问 http://localhost:5000
    • 点击上传按钮选择图片
    • 点击"目标检测"按钮进行检测
    • 查看检测结果和置信度
  2. API接口使用:

    • 接口地址:http://localhost:5000/api
    • 请求方式:POST
    • 请求格式:JSON
    • 参数说明:
      {
          "img_base64": "图片base64编码字符串"
      }

技术架构

  • 后端:Flask
  • 深度学习框架:YOLOv5 + PyTorch
  • 前端:Bootstrap
  • 图像处理:OpenCV

联系方式

作者:UR的出不克

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published