国外网站建设视频教学seo优化网站的手段
2026/5/21 20:53:18 网站建设 项目流程
国外网站建设视频教学,seo优化网站的手段,民用网络架构,自己做的网站怎么上传到浏览器第一步#xff1a;YOLOv4介绍 YOLOv4是一种目标检测算法#xff0c;它在精度和速度之间取得了最佳的平衡。它是YOLO#xff08;You Only Look Once#xff09;系列算法的最新版本#xff0c;通过将目标检测任务转化为一个回归问题#xff0c;实现了实时目标检测。YOLOv4…第一步YOLOv4介绍YOLOv4是一种目标检测算法它在精度和速度之间取得了最佳的平衡。它是YOLOYou Only Look Once系列算法的最新版本通过将目标检测任务转化为一个回归问题实现了实时目标检测。YOLOv4采用了一系列的调优手段使得其在目标检测任务中表现出色。YOLOv4的框架原理主要包括以下几个方面BackBoneYOLOv4使用了CSPDarknet53作为其主干网络该网络结构具有较强的特征提取能力。训练策略YOLOv4采用了多尺度训练和数据增强等策略来提高模型的泛化能力和检测精度。推理策略YOLOv4使用了多尺度推理和后处理技术来提高检测速度和准确性。检测头训练策略YOLOv4使用了Mosaic数据增强和CIoU损失函数等策略来提高小目标的检测精度。检测头推理策略YOLOv4使用了YOLOv3和YOLOv4的检测头结合策略提高了模型的检测能力。总之YOLOv4是一种高效准确的目标检测算法具有较好的精度和速度表现。它在目标检测领域具有广泛的应用前景。标注数据YOLOv4的训练和测试步骤各路大神都已经做了很多工作我就不再写了这里有几个写的比较好的博客可以参考【项目实践】YOLO V4万字原理详细讲解并训练自己的数据集pytorch完整项目打包下载-腾讯云开发者社区-腾讯云YOLOv4 的各种新实现、配置、测试、训练资源汇总第二步YOLOv4网络结构第三步代码展示#-------------------------------------# # 创建YOLO类 #-------------------------------------# import cv2 import numpy as np import colorsys import os import torch import torch.nn as nn from nets.yolo4 import YoloBody import torch.backends.cudnn as cudnn from PIL import Image, ImageFont, ImageDraw from torch.autograd import Variable from utils.utils import non_max_suppression, bbox_iou, DecodeBox, letterbox_image, yolo_correct_boxes class YOLO(object): _defaults { model_path: model_data/yolov4_maskdetect_weights1.pth, anchors_path: model_data/yolo_anchors.txt, classes_path: model_data/mask_classes.txt, model_image_size : (608, 608, 3), confidence: 0.5, cuda: True } classmethod def get_defaults(cls, n): if n in cls._defaults: return cls._defaults[n] else: return Unrecognized attribute name n #---------------------------------------------------# # 初始化YOLO #---------------------------------------------------# def __init__(self, **kwargs): self.__dict__.update(self._defaults) self.class_names self._get_class() self.anchors self._get_anchors() self.generate() #---------------------------------------------------# # 获得所有的分类 #---------------------------------------------------# def _get_class(self): classes_path os.path.expanduser(self.classes_path) with open(classes_path) as f: class_names f.readlines() class_names [c.strip() for c in class_names] return class_names #---------------------------------------------------# # 获得所有的先验框 #---------------------------------------------------# def _get_anchors(self): anchors_path os.path.expanduser(self.anchors_path) with open(anchors_path) as f: anchors f.readline() anchors [float(x) for x in anchors.split(,)] return np.array(anchors).reshape([-1, 3, 2])[::-1,:,:] #---------------------------------------------------# # 获得所有的分类 #---------------------------------------------------# def generate(self): self.net YoloBody(len(self.anchors[0]), len(self.class_names)).eval() # 加快模型训练的效率 print(Loading pretrained weights.) model_dict self.net.state_dict() pretrained_dict torch.load(self.model_path) pretrained_dict {k: v for k, v in pretrained_dict.items() if np.shape(model_dict[k]) np.shape(v)} model_dict.update(pretrained_dict) self.net.load_state_dict(model_dict) if self.cuda: os.environ[CUDA_VISIBLE_DEVICES] 0 self.net nn.DataParallel(self.net) self.net self.net.cuda() print(Finish loading!) self.yolo_decodes [] for i in range(3): self.yolo_decodes.append(DecodeBox(self.anchors[i], len(self.class_names), (self.model_image_size[1], self.model_image_size[0]))) print({} model, anchors, and classes loaded..format(self.model_path)) # 画框设置不同的颜色 hsv_tuples [(x / len(self.class_names), 1., 1.) for x in range(len(self.class_names))] self.colors list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples)) self.colors list( map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), self.colors)) #---------------------------------------------------# # 检测图片 #---------------------------------------------------# def detect_image(self, image): image_shape np.array(np.shape(image)[0:2]) crop_img np.array(letterbox_image(image, (self.model_image_size[0],self.model_image_size[1]))) photo np.array(crop_img,dtype np.float32) photo / 255.0 photo np.transpose(photo, (2, 0, 1)) photo photo.astype(np.float32) images [] images.append(photo) images np.asarray(images) with torch.no_grad(): images torch.from_numpy(images) if self.cuda: images images.cuda() outputs self.net(images) output_list [] for i in range(3): output_list.append(self.yolo_decodes[i](outputs[i])) output torch.cat(output_list, 1) batch_detections non_max_suppression(output, len(self.class_names), conf_thresself.confidence, nms_thres0.3) try: batch_detections batch_detections[0].cpu().numpy() except: return image top_index batch_detections[:,4]*batch_detections[:,5] self.confidence top_conf batch_detections[top_index,4]*batch_detections[top_index,5] top_label np.array(batch_detections[top_index,-1],np.int32) top_bboxes np.array(batch_detections[top_index,:4]) top_xmin, top_ymin, top_xmax, top_ymax np.expand_dims(top_bboxes[:,0],-1),np.expand_dims(top_bboxes[:,1],-1),np.expand_dims(top_bboxes[:,2],-1),np.expand_dims(top_bboxes[:,3],-1) # 去掉灰条 boxes yolo_correct_boxes(top_ymin,top_xmin,top_ymax,top_xmax,np.array([self.model_image_size[0],self.model_image_size[1]]),image_shape) font ImageFont.truetype(fontmodel_data/simhei.ttf,sizenp.floor(3e-2 * np.shape(image)[1] 0.5).astype(int32)) thickness (np.shape(image)[0] np.shape(image)[1]) // self.model_image_size[0] mask_num 0 nomask_num 0 with open(test.txt, w) as f: for i, c in enumerate(top_label): predicted_class self.class_names[c] score top_conf[i] top, left, bottom, right boxes[i] top top - 5 left left - 5 bottom bottom 5 right right 5 top max(0, np.floor(top 0.5).astype(int32)) left max(0, np.floor(left 0.5).astype(int32)) bottom min(np.shape(image)[0], np.floor(bottom 0.5).astype(int32)) right min(np.shape(image)[1], np.floor(right 0.5).astype(int32)) # 画框框 label {}: {:.2f}.format(predicted_class, score) draw ImageDraw.Draw(image) label_size draw.textsize(label, font) label label.encode(utf-8) f.write(str(label)) f.write(\n) f.write(top: str(top) left: str(left) bottom: str(bottom) right: str(right)) f.write(\n) print(label) print(top: str(top) left: str(left) bottom: str(bottom) right: str(right)) if top - label_size[1] 0: text_origin np.array([left, top - label_size[1]]) else: text_origin np.array([left, top 1]) for i in range(thickness): draw.rectangle( [left i, top i, right - i, bottom - i], outlineself.colors[self.class_names.index(predicted_class)]) draw.rectangle( [tuple(text_origin), tuple(text_origin label_size)], fillself.colors[self.class_names.index(predicted_class)]) draw.text(text_origin, str(label,UTF-8), fill(0, 0, 0), fontfont) if str(label)[2:8]nomask: nomask_num 1 else: mask_num 1 del draw return image, nomask_num, mask_num第四步运行运行界面识别效果第五步整个工程的内容项目完整文件下载请见演示与介绍视频的简介处给出➷➷➷https://www.bilibili.com/video/BV1o3U6YqEd6/

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询