首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

目标检测目标检测目标检测目标检测

人工智能 4.4KB 15 需要积分: 1
立即下载

资源介绍:

目标检测目标检测目标检测目标检测
import torch from torch import nn from torchsummary import summary import matplotlib.pyplot as plt import config ############################ # road cls header ############################ # -------------- 路面分类头部网络 -----------------# class ClassifyHead(nn.Module): """" 功能说明:路面分类 header """ def __init__(self,num_classes=4): super().__init__() # Batch norm parameters momentum = 0.01 epsilon = 1e-3 in_channels = 448 out_channels = 1280 self.head = nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=1, padding=0, bias=False), nn.BatchNorm2d(num_features=out_channels, momentum=momentum, eps=epsilon), nn.ReLU6(inplace=True), ) self.avgpool = torch.nn.AdaptiveAvgPool2d((1, 1)) dropout_rate = 0.3 if dropout_rate > 0: self.dropout = nn.Dropout(dropout_rate) else: self.dropout = None self.fc = torch.nn.Linear(out_channels, num_classes) # [1 448 7 7] def forward(self, x): # [1,1280,7,7] x = self.head(x) # [1,1280,1,1] x = self.avgpool(x) # [1,1280] x = x.view(x.size(0), -1) if self.dropout is not None: x = self.dropout(x) # [1,4] x = self.fc(x) return x if __name__ == '__main__': num_class = config.class_num model = ClassifyHead(num_class) model.to('cuda') summary(model, input_size=(448,7,7)) # input_size=(channels, H, W) ############################ # loss ############################ # 功能:分类损失计算 loss_function = nn.CrossEntropyLoss() # 使用方法说明 # 导入:from use_in_yolox import loss_function # 调用:loss = loss_function(outputs, labels) # 输入格式说明:outputs:(1,class_num) labels:(class_id) # 功能:输出训练过程中的路面分类指标 import numpy from sklearn.metrics import classification_report class ConfusionMatrix(object): """ 混淆矩阵 """ # 初始化 def __init__(self, class_num: int): self.matrix = numpy.zeros((class_num, class_num)) self.class_num = class_num self.pred=[] self.true=[] # 统计更新 def update(self, pred, label): # p代表Predicted label、t代表True label for p, t in zip(pred, label): self.matrix[p, t] += 1 self.pred.append(p) self.true.append(t) # 输出准确度 def acc(self): acc = 0 for i in range(self.class_num): acc += self.matrix[i, i] acc = acc / numpy.sum(self.matrix) return acc # 打印结果 def report(self): report = classification_report(self.true, self.pred, digits=4) return report ############################ # predict ############################ # 输入:1*class_num的tensor # 输出:预测类别 def road_classify_decode(road_cls_output): predict = torch.softmax(torch.squeeze(road_cls_output).cpu(), dim=0) predicted_road_classify_result = torch.argmax(predict).numpy() print('predicted class id: ', predicted_road_classify_result) return predicted_road_classify_result ############################ # 验证指标 test.py ############################ # 输入:model,images, labels, confusion_matrix,device # 输出:路面验证结果 def road_cls_validation(model,images, labels, confusion_matrix,device): images, labels = images.to(device), labels.to(device) road_cls_input = model(images) confusion_matrix.update(road_cls_input.argmax(1).cpu().numpy(), labels.cpu().numpy()) return confusion_matrix.report() # 调用示例: # from use_in_yolox import ConfusionMatrix, road_cls_validation # confusion_matrix = ConfusionMatrix(config.class_num) # with torch.no_grad(): # confusion_matrix.__init__(config.class_num) # for images, labels in test_loader: # road_cls_valid_result = road_cls_validation(net,images, labels,confusion_matrix, device) # print(road_cls_valid_result) ############################ # train.py ############################ # 功能: 绘制训练过程的路面分类LOSS曲线图 # 调用示例: # confusion_matrix = ConfusionMatrix(class_num) # for i in range(1, 总训练轮数): # 训练 # model.train() # confusion_matrix.__init__(config.class_num) # for images, labels in train_loader: # 根据输出更新混淆矩阵 # outputs = model(images) #confusion_matrix.update(outputs.argmax(1).cpu().numpy(), labels.cpu().numpy()) # 打印: print("train accurancy", confusion_matrix.acc()) # 验证 # model.eval() # confusion_matrix.__init__(config.class_num) # for images, labels in val_loader: # 根据输出更新混淆矩阵 # outputs = model(images) #confusion_matrix.update(outputs.argmax(1).cpu().numpy(), labels.cpu().numpy()) # 打印: print("val accurancy", confusion_matrix.acc()) # 功能: 绘制训练过程的路面分类LOSS曲线图 def draw_cls_loss(train_losses,val_losses,epochs): """" 功能说明:记录每一轮训练过程中的分类loss """ plt.figure() plt.title('Road Sufrace Classify LOSS during training') # 标题 plt.plot(epochs, train_losses, label="train loss") plt.plot(epochs, val_losses, label="val loss") plt.xlabel('epochs') plt.ylabel('loss') plt.legend() plt.grid() # TODO save_path = "./" ### 这里需要修改一下保存地址 ### plt.savefig(f'{save_path}/Road Surface Classify LOSS.png') # 调用示例: # from use_in_yolox draw_cls_loss # 开始训练... # epochs = [] # t_loss = [] # for i in range(1, 总训练轮数): # 记录epoch # epochs.append(i + 1) # 记录train_loss # t_loss.append(train_loss) # 记录val_loss # val_loss.append(valid_loss) # 调用该函数绘制路面分类曲线图 # draw_cls_loss(train_losses=t_loss,val_losses=val_loss,epochs=epochs) ############################### # EfficientNet-Lite Backbone ############################### import torch.functional as F import math def round_filters(filters, multiplier, divisor=8, min_width=None): """Calculate and round number of filters based on width multiplier.""" if not multiplier: return filters filters *= multiplier min_width = min_width or divisor new_filters = max(min_width, int(filters + divisor / 2) // divisor * divisor) # Make sure that round down does not go down by more than 10%. if new_filters < 0.9 * filters: new_filters += divisor return int(new_filters) def round_repeats(repeats, multiplier): """Round number of filters based on depth multiplier.""" if not multiplier: return repeats return int(math.ceil(multiplier * repeats)) def drop_connect(x, drop_connect_rate, training): if not training: return x keep_prob = 1.0 - drop_connect_rate batch_size = x.shape[0] random_tensor = keep_prob random_tensor += torch.rand([batch_size, 1, 1, 1], dtype=x.dtype, device=x.device) binary_mask = torch.floor(random_tensor) x = (x / keep_prob) * binary_mask return x class MBConvBlock(nn.Module): def __init__(self, inp, final_oup, k, s, expand_ratio, se_ratio, has_se=False): super(MBConvBlock, self).__init__() self._momentum = 0.01 self._epsilon = 1e-3 self.input_filters = inp self.output_filters = final_oup self.stride = s self.expand_ratio = expand_ratio

资源文件列表:

use_in_yolox.zip 大约有1个文件
  1. use_in_yolox.py 14.67KB
0评论
提交 加载更多评论
其他资源 基于JAVA的助农管理系统(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的助农管理系统是一个功能全面、易于使用的平台,旨在帮助农民提高生产效率和管理水平。该系统分为用户前台和管理后台两个部分,以满足不同角色的需求。管理员、工作人员和普通用户都可以根据自己的权限访问相应的功能模块。 用户前台主要提供农产品展示、助农新闻浏览、农产品订单查询等功能,方便用户了解农产品信息和市场动态。管理后台则为管理员和工作人员提供了更丰富的管理功能,包括农产品管理、助农新闻发布、订单处理、工组人员管理以及用户管理等模块。 在农产品模块中,管理员可以添加、编辑和删除农产品信息,包括产品名称、描述、价格、库存等。助农新闻模块允许管理员发布和更新新闻,以传播农业知识和政策信息。农产品订单模块则用于处理用户的购买请求,包括订单审核、发货和物流跟踪等。 演示录屏:https://www.bilibili.com/video/BV1mYYne2E2b 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
基于JAVA的助农管理系统(Vue.js+SpringBoot+MySQL) 基于JAVA的助农管理系统(Vue.js+SpringBoot+MySQL) 基于JAVA的助农管理系统(Vue.js+SpringBoot+MySQL)
基于JAVA的助农产品采购平台(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的助农产品采购平台是一个综合性的电子商务解决方案,旨在帮助农产品销售和推广。该平台分为用户前台和管理后台,支持管理员、商家和普通用户三种角色,以满足不同用户的需求。在用户前台,普通用户可以浏览和购买各种农产品,查看商品资讯,参与论坛讨论,同时可以参与捐赠项目,查看捐赠记录。商家可以发布和管理自己的商品,接收订单和处理退款。管理员则可以对整个平台进行监控和管理,包括商品管理、捐赠项目管理、捐赠记录管理、商品资讯管理和论坛管理等模块。通过这个平台,农产品可以更有效地销售,同时帮助有需要的人获得帮助。 演示录屏:https://www.bilibili.com/video/BV1X7YDeuE74 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
prettyZoo.zip
prettyZoo.zip
OpenXMLSDKv25.msi
openxmlsdkv25.msi 是 Open XML SDK 的安装文件。Open XML SDK 是微软开发的一套用于处理和生成 Office
北京五环、四环、三环、二环矢量数据
适用于对北京五环进行空间分析的相关研究,可以通过Arcgis pro 、Qgis、SuperMap等打开。
springboot3+java21+druid+springDoc+MybatisPlus(包含生成器)+redis 完整版
集成了springboot3+java21+druid+springDoc+MybatisPlus(包含生成器)+redis+spring data 的基于接口编程的工程框架
方便好用的x97下载推荐
1
编译原理词法分析、语法分析程序
这个一个C--语言的语法分析器,包括词法分析、语法分析、语义处理等。 zhou.cfg 文法相关如解释文法、计算first、follow集合等 zhou.lex 词法分析相关 zhou.parser >语法分析,同时进行语法制导翻译,按照老师要求,采用递归下降分析方法,Descent.java为分析器。 zhou.view UI组件 实现功能 类型检测、重复定义或未定义、方法调用等 输入输出 输入:c语言测试代码 、文法 输出:词法分析结果、文法推导过程、中间代码或上述遇到的错误。