当前位置: 首页 > news >正文

网站建设全过程及如何赚钱物流信息网站

网站建设全过程及如何赚钱,物流信息网站,网站设计流程包括,濂溪区建设局网站主要内容如下#xff1a; 1、Visdrone2019数据集介绍 2、下载、制作YOLO格式训练集 3、模型训练及预测 4、Onnxruntime推理 运行环境#xff1a;Python3.8#xff08;要求3.8#xff09;#xff0c;torch1.12.0cu113#xff08;要求1.8#xff09;#xff0c…主要内容如下 1、Visdrone2019数据集介绍 2、下载、制作YOLO格式训练集 3、模型训练及预测 4、Onnxruntime推理 运行环境Python3.8要求3.8torch1.12.0cu113要求1.8onnxruntime-gpu1.12.0 原始数据集百度AI stduio下载链接https://aistudio.baidu.com/datasetdetail/115729 Visdrone-YOLO格式数据集下载链接https://aistudio.baidu.com/datasetdetail/295374 训练资源占用bacth16workers8yolov8s显存需16Gbacth8的话8G够用RTX4080大约1min一个epoch。 往期内容 【超详细】跑通YOLOv8之深度学习环境配置1-Anaconda安装 【超详细】跑通YOLOv8之深度学习环境配置2-CUDA安装 【超详细】跑通YOLOv8之深度学习环境配置3-YOLOv8安装 【超详细】基于YOLOv8的PCB缺陷检测 【超详细】基于YOLOv8改进1-Drone-YOLO复现 1 数据集介绍 1.1 简介 VisDrone数据集是由天津大学等团队开源的一个大型无人机视角的数据集官方提供的数据中训练集是6471、验证集是548、测试集1610张。数据集共提供了以下12个类分别是‘忽略区域’, ‘pedestrian’, ‘people’, ‘bicycle’, ‘car’, ‘van’,‘truck’, ‘tricycle’, ‘awning-tricycle’, ‘bus’, ‘motor’, ‘others’其中忽略区域、others是非有效目标区域本项目中予以忽略 1.2 示例 1.3 标签格式 **标签含义** 1. 边界框左上角的x坐标 2. 边界框左上角的y坐标 3. 边界框的宽度 4. 边界框的高度 5. GROUNDTRUTH文件中的分数设置为1或0。1表示在计算中考虑边界框而0表示将忽略边界框。 6. 类别忽略区域0、行人1、人2、自行车3、汽车4、面包车5、卡车6、三轮车7、雨篷三轮车8、公共汽车9、摩托车10其他11。 7. GROUNDTRUTH文件中的得分表示对象部分出现在帧外的程度即无截断0截断比率0%部分截断1截断比率1%°´50%。 8. GROUNDTRUTH文件中的分数表示被遮挡的对象的分数即无遮挡0遮挡比率0%部分遮挡1遮挡比率1%°´50%重度遮挡2遮挡率50%~100%。2 下载和制作YOLO格式数据集 2.1 下载原始数据集 百度AI stduio下载链接https://aistudio.baidu.com/datasetdetail/115729 注意可直接下载已完成转换的YOLO格式数据进行训练可跳过该阶段直接训练链接为https://aistudio.baidu.com/datasetdetail/295374 下载解压 注意由于格式不是YOLO直接可以训练的格式所以需进行转换 2.2 制作YOLO格式数据集 1新建visdrone2yolo.py脚本脚本内容如下 2修改路径参数–dir_path的值即自己下载路径 2结果会在原始每个文件夹下生成一个label文件夹即YOLO格式标签 import os from pathlib import Path import argparsedef visdrone2yolo(dir):from PIL import Imagefrom tqdm import tqdmdef convert_box(size, box):# Convert VisDrone box to YOLO xywh boxdw 1. / size[0]dh 1. / size[1]return (box[0] box[2] / 2) * dw, (box[1] box[3] / 2) * dh, box[2] * dw, box[3] * dh(dir / labels).mkdir(parentsTrue, exist_okTrue) # make labels directorypbar tqdm((dir / annotations).glob(*.txt), descfConverting {dir})for f in pbar:img_size Image.open((dir / images / f.name).with_suffix(.jpg)).sizelines []with open(f, r) as file: # read annotation.txtfor row in [x.split(,) for x in file.read().strip().splitlines()]:if row[4] 0: # VisDrone ignored regions class 0continuecls int(row[5]) - 1 # 类别号-1box convert_box(img_size, tuple(map(int, row[:4])))lines.append(f{cls} { .join(f{x:.6f} for x in box)}\n)with open(str(f).replace(os.sep annotations os.sep, os.sep labels os.sep), w) as fl:fl.writelines(lines) # write label.txtif __name__ __main__:# Create an argument parser to handle command-line argumentsparser argparse.ArgumentParser()parser.add_argument(--dir_path, typestr, defaultrE:\datasets\visdrone2019, helpvisdrone数据集路径)args parser.parse_args()dir Path(args.dir_path)# Convertfor d in VisDrone2019-DET-train, VisDrone2019-DET-val, VisDrone2019-DET-test-dev:visdrone2yolo(dir / d) # convert VisDrone annotations to YOLO labels 3 模型训练及预测 3.1 模型训练 3.1.1 修改数据集配置文件 文件路径ultralytics-main\ultralytics\cfg\datasets\VisDrone.yaml 3.1.2 创建模型训练脚本 1训练方式1-脚本训练 在ultralytics-main目录新建一个train.py脚本内容如下 注意如爆显存降低batch大小 【如下配置显存需16Gbacth8的话8G够用RTX4080大约1min一个epoch】 from ultralytics import YOLOif __name__ __main__:# Load a model# model YOLO(yolov8n.yaml) # build a new model from scratchmodel YOLO(yolov8s.pt) # load a pretrained model (recommended for training)# Use the modelmodel.train(dataVisDrone.yaml, imgsz640, batch16, workers8, cacheTrue, epochs100) # train the modelmetrics model.val() # evaluate model performance on the validation set# results model(ultralytics\\assets\\bus.jpg) # predict on an imagepath model.export(formatonnx, opset13) # export the model to ONNX format2训练方式2-终端命令行 cd ../ultralytics-main yolo taskdetect modetrain modelyolov8s.pt dataultralytics/cfg/datasets/VisDrone.yaml batch16 epochs100 imgsz640 workers8 cacheTrue device03.1.3 数据分布情况可视化 特点类别不均衡、小目标较多640*640输入精度不会太高可提高输入分辨率如1280、1536等。 3.1.4 训练结果可视化 训练100epoch结果如下增加epoch还能提升。 3.2 模型预测 在ultralytics-main目录新建一个predict.py脚本内容如下 from ultralytics import YOLOif __name__ __main__:# Load a modelmodel YOLO(rE:\Code\ultralytics-main\runs\detect\train\weights\best.pt) # load modelmodel.predict(sourcerE:\datasets\visdrone2019\VisDrone2019-DET-test-dev\images\0000006_01111_d_0000003.jpg, saveTrue, save_confTrue, save_txtTrue, nameoutput) 结果如下 4 Onnxruntime推理 在ultralytics-main目录新建一个onnx_infer.py脚本内容如下 注意如导出动态onnxmodel.export(format“onnx”, opset13, dynamicTrue) import argparse import time import cv2 import numpy as npimport onnxruntime as ort # 使用onnxruntime推理用上pip install onnxruntime-gpu1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple默认安装CPU import os os.environ[CUDA_VISIBLE_DEVICES] 0class YOLOv8:YOLOv8 object detection model class for handling inference and visualization.def __init__(self, onnx_model, imgsz(640, 640)):Initialization.Args:onnx_model (str): Path to the ONNX model.# 构建onnxruntime推理引擎self.ort_session ort.InferenceSession(onnx_model,providers[CUDAExecutionProvider, CPUExecutionProvider]if ort.get_device() GPU else [CPUExecutionProvider])print(ort.get_device())# Numpy dtype: support both FP32 and FP16 onnx modelself.ndtype np.half if self.ort_session.get_inputs()[0].type tensor(float16) else np.singleself.model_height, self.model_width imgsz[0], imgsz[1] # 图像resize大小def __call__(self, im0, conf_threshold0.4, iou_threshold0.45):The whole pipeline: pre-process - inference - post-process.Args:im0 (Numpy.ndarray): original input image.conf_threshold (float): confidence threshold for filtering predictions.iou_threshold (float): iou threshold for NMS.Returns:boxes (List): list of bounding boxes.# 前处理Pre-processt1 time.time()im, ratio, (pad_w, pad_h) self.preprocess(im0)pre_time round(time.time() - t1, 3)# print(det预处理时间{:.3f}s.format(time.time() - t1))# 推理 inferencet2 time.time()preds self.ort_session.run(None, {self.ort_session.get_inputs()[0].name: im})[0]# print(det推理时间{:.2f}s.format(time.time() - t2))det_time round(time.time() - t2, 3)# 后处理Post-processt3 time.time()boxes self.postprocess(preds,im0im0,ratioratio,pad_wpad_w,pad_hpad_h,conf_thresholdconf_threshold,iou_thresholdiou_threshold,)# print(det后处理时间{:.3f}s.format(time.time() - t3))post_time round(time.time() - t3, 3)return boxes, (pre_time, det_time, post_time)# 前处理包括resize, pad, HWC to CHWBGR to RGB归一化增加维度CHW - BCHWdef preprocess(self, img):Pre-processes the input image.Args:img (Numpy.ndarray): image about to be processed.Returns:img_process (Numpy.ndarray): image preprocessed for inference.ratio (tuple): width, height ratios in letterbox.pad_w (float): width padding in letterbox.pad_h (float): height padding in letterbox.# Resize and pad input image using letterbox() (Borrowed from Ultralytics)shape img.shape[:2] # original image shapenew_shape (self.model_height, self.model_width)r min(new_shape[0] / shape[0], new_shape[1] / shape[1])ratio r, rnew_unpad int(round(shape[1] * r)), int(round(shape[0] * r))pad_w, pad_h (new_shape[1] - new_unpad[0]) / 2, (new_shape[0] - new_unpad[1]) / 2 # wh paddingif shape[::-1] ! new_unpad: # resizeimg cv2.resize(img, new_unpad, interpolationcv2.INTER_LINEAR)top, bottom int(round(pad_h - 0.1)), int(round(pad_h 0.1))left, right int(round(pad_w - 0.1)), int(round(pad_w 0.1))img cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value(114, 114, 114)) # 填充# Transforms: HWC to CHW - BGR to RGB - div(255) - contiguous - add axis(optional)img np.ascontiguousarray(np.einsum(HWC-CHW, img)[::-1], dtypeself.ndtype) / 255.0img_process img[None] if len(img.shape) 3 else imgreturn img_process, ratio, (pad_w, pad_h)# 后处理包括阈值过滤与NMSdef postprocess(self, preds, im0, ratio, pad_w, pad_h, conf_threshold, iou_threshold):Post-process the prediction.Args:preds (Numpy.ndarray): predictions come from ort.session.run().im0 (Numpy.ndarray): [h, w, c] original input image.ratio (tuple): width, height ratios in letterbox.pad_w (float): width padding in letterbox.pad_h (float): height padding in letterbox.conf_threshold (float): conf threshold.iou_threshold (float): iou threshold.Returns:boxes (List): list of bounding boxes.x preds # outputs: predictions (1, 84, 8400)# Transpose the first output: (Batch_size, xywh_conf_cls, Num_anchors) - (Batch_size, Num_anchors, xywh_conf_cls)x np.einsum(bcn-bnc, x) # (1, 8400, 84)# Predictions filtering by conf-thresholdx x[np.amax(x[..., 4:], axis-1) conf_threshold]# Create a new matrix which merge these(box, score, cls) into one# For more details about numpy.c_(): https://numpy.org/doc/1.26/reference/generated/numpy.c_.htmlx np.c_[x[..., :4], np.amax(x[..., 4:], axis-1), np.argmax(x[..., 4:], axis-1)]# NMS filtering# 经过NMS后的值, np.array([[x, y, w, h, conf, cls], ...]), shape(-1, 4 1 1)x x[cv2.dnn.NMSBoxes(x[:, :4], x[:, 4], conf_threshold, iou_threshold)]# 重新缩放边界框为画图做准备if len(x) 0:# Bounding boxes format change: cxcywh - xyxyx[..., [0, 1]] - x[..., [2, 3]] / 2x[..., [2, 3]] x[..., [0, 1]]# Rescales bounding boxes from model shape(model_height, model_width) to the shape of original imagex[..., :4] - [pad_w, pad_h, pad_w, pad_h]x[..., :4] / min(ratio)# Bounding boxes boundary clampx[..., [0, 2]] x[:, [0, 2]].clip(0, im0.shape[1])x[..., [1, 3]] x[:, [1, 3]].clip(0, im0.shape[0])return x[..., :6] # boxeselse:return []if __name__ __main__:# Create an argument parser to handle command-line argumentsparser argparse.ArgumentParser()parser.add_argument(--det_model, typestr, defaultrE:\Code\ultralytics-main\runs\detect\train\weights\best.onnx, helpPath to ONNX model)parser.add_argument(--source, typestr, defaultstr(rE:\datasets\visdrone2019\VisDrone2019-DET-test-dev\images), helpPath to input image)parser.add_argument(--out_path, typestr, defaultstr(rE:\Code\ultralytics-main\runs/res), help结果保存文件夹)parser.add_argument(--imgsz_det, typetuple, default(640, 640), helpImage input size)parser.add_argument(--classes, typelist, default[pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus, motor], help类别)parser.add_argument(--conf, typefloat, default0.25, helpConfidence threshold)parser.add_argument(--iou, typefloat, default0.6, helpNMS IoU threshold)args parser.parse_args()if not os.path.exists(args.out_path):os.mkdir(args.out_path)print(开始运行)# Build modeldet_model YOLOv8(args.det_model, args.imgsz_det)color_palette np.random.uniform(0, 255, size(len(args.classes), 3)) # 为每个类别生成调色板for i, img_name in enumerate(os.listdir(args.source)):try:t1 time.time()# Read image by OpenCVimg cv2.imread(os.path.join(args.source, img_name))# 检测Inferenceboxes, (pre_time, det_time, post_time) det_model(img, conf_thresholdargs.conf, iou_thresholdargs.iou)print({}/{} 总耗时间: {:.3f}s, 其中, 预处理: {:.3f}s, 推理: {:.3f}s, 后处理: {:.3f}s, 识别{}个目标.format(i1, len(os.listdir(args.source)), time.time() - t1, pre_time, det_time, post_time, len(boxes)))for (*box, conf, cls_) in boxes:cv2.rectangle(img, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])),color_palette[int(cls_)], 2, cv2.LINE_AA)cv2.putText(img, f{args.classes[int(cls_)]}: {conf:.3f}, (int(box[0]), int(box[1] - 9)),cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA)cv2.imwrite(os.path.join(args.out_path, img_name), img)except Exception as e:print(e) 资源占用显存不到2GRTX4080推理耗时20几毫秒。 结果可视化如下
http://www.w-s-a.com/news/126278/

相关文章:

  • 浙江门户网站建设公司做网站上哪买空间
  • 郑州网站怎么推广贵阳市网站建设
  • 规范网站建设福州外贸网站建设推广
  • 平台电商网站开发传媒公司排行
  • 在哪给人做网站怎么样制作一个网页
  • 网站更改文章标题广西新闻
  • 专业做网站路桥寺院网站建设方案
  • 网站维护与优化教程广州做网站的网络公司排名
  • 网站做贷款许可证网站改版方案模板
  • 装饰公司怎么做网站嘉兴网站制作推广
  • 深圳兼职做网站涿州网站制作
  • 能找本地人做导游的网站app模板素材下载免费
  • 网站积分的作用网站开发需要看相关书籍
  • 建设银行总行网站alexa排名与什么有关系
  • 阿里云服务器发布网站收款网站怎么建设
  • 开发东莞网站制作公司做网站优化步骤
  • 网站版权信息的正确写法如何制作网络游戏
  • 郑州移动端网站建设如何在网上推广自己的公司
  • 企业建站源码系统破解网站后台
  • 石家庄网站开发报价企业注册资本代表什么
  • 招商平台公司宁波seo教程推广平台
  • 哪些网站可以做房产推广垂直门户网站都有什么
  • 不得不知道的网站金石项目管理软件
  • 怎么恢复网站数据库网站开发作业代做
  • 哪里建设网站最好用中国第五冶金建设公司医院网站
  • 雄安网建 网站建设订餐网站建设
  • 广州视频网站建站公司网站 体系
  • 青浦门户网站网站推广烟台公司电话
  • 湖北荆门建设银行网站wordpress购物模板下载
  • 学ui+wordpress模板北京推广优化