mmclassification

2023-11-13

mmclassification

一、MMCLS项目

0.下载链接

  • Torch安装方法
- CPU : pip install torch -i https://download.pytorch.org/whl/torch_stable.html  # 指定清华源
- GPU : CUDA和对应的torch版本
- https://download.pytorch.org/whl/torch_stable.html
- https://developer.nvidia.com/cuda-toolkit-archive
  • mmcv
    这里有一个官方出的版本对应表,https://github.com/open-mmlab/mmcv#installation
    1.配置好mmcv后,从GitHub上下载mmclassification的项目。

2.针对configs/resnet/resnet18_8xb16_cifar10.py文件进行说明,8xb16表示8个卡,每个卡的batch_size的大小是16,cifar10表示预训练模型使用的数据集。
configs\resnet\resnet50_8xb32-mixup_in1k.pymixup表示数据增强的策略。
在这里插入图片描述
3.configs/resnet/resnet18_8xb16_cifar10.py配置文件的解释

_base_ = [
    '../_base_/models/resnet18.py', '../_base_/datasets/imagenet_bs32.py',
    '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py'
]
# 网络结构的定义、数据集的定义、学习的策略(学习率的衰减、学习轮数)、模型保存位置 训练过程的一些

(1)查看../_base_/models/resnet18.py

# model settings
model = dict(
    type='ImageClassifier',                                     # 类名
    backbone=dict(
        type='ResNet',                                          # 选取的backbone,在models/backbones下选择
        depth=18,                                               # 网络层数.
        num_stages=4,                                           # stage的数量
        out_indices=(3, ),                                      # 输出特征层的索引,从0开始
        style='pytorch'),                                       # pytorch和caffee
    neck=dict(type='GlobalAveragePooling'),                     # 对backbone提取到的特征做一些融合策略
    head=dict(                                                  # 输出
        type='LinearClsHead',                                   # FC
        num_classes=1000,                                       # 分类数
        in_channels=512,                                        # 根据backbone和neck来,需要修改
        loss=dict(type='CrossEntropyLoss', loss_weight=1.0),    # 损失函数
        topk=(1, 5),                                            # 评估标准
    ))

type指定源码等会到哪去走,对应一个一个类名,不是瞎写的。比如ImageClassifier去下图中位置寻找在这里插入图片描述
比如ResNet到下图中位置寻找
在这里插入图片描述
之后可以在neck层中进行修改
(2)查看../_base_/datasets/imagenet_bs32.py

# dataset settings
dataset_type = 'ImageNet'                                                           # 后续这里修改成自己的
img_norm_cfg = dict(                                                                # 归一化,均值、标准差
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [
    dict(type='LoadImageFromFile'),                                                 # 读图像数据,这些方法在datase_type中有
    dict(type='RandomResizedCrop', size=224),                                       # 随机裁剪
    dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),                 # 翻转操作
    dict(type='Normalize', **img_norm_cfg),                                         # 归一化
    dict(type='ImageToTensor', keys=['img']),                                       # 转化成Tensor,需要做. keys表示对谁做操作,后面的值在dataset_type 中有
    dict(type='ToTensor', keys=['gt_label']),                                       # 标签转化成Tensor
    dict(type='Collect', keys=['img', 'gt_label'])                                  # 遍历dataloader,返回一个图像和标签
]
test_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='Resize', size=(256, -1)),
    dict(type='CenterCrop', crop_size=224),
    dict(type='Normalize', **img_norm_cfg),
    dict(type='ImageToTensor', keys=['img']),
    dict(type='Collect', keys=['img'])
]
data = dict(
    samples_per_gpu=32,                                                             # 单卡的batchsize;多卡每张卡的batchsize
    workers_per_gpu=2,
    train=dict(
        type=dataset_type,															# 指定dataset_type,可以自己写之后介绍
        data_prefix='data/imagenet/train',                                          # 读数据。自己数据的路径。不指定标签,拿文件夹的名字当作标签
        pipeline=train_pipeline),
    val=dict(
        type=dataset_type,
        data_prefix='data/imagenet/val',                                            # 读数据
        ann_file='data/imagenet/meta/val.txt',                                      # 读标签
        pipeline=test_pipeline),
    test=dict(
        # replace `data/val` with `data/test` for standard test
        type=dataset_type,
        data_prefix='data/imagenet/val',
        ann_file='data/imagenet/meta/val.txt',
        pipeline=test_pipeline))
evaluation = dict(interval=1, metric='accuracy')                                    # 经过多少epoch,走一遍验证集,metric评估标准

dataset_type = 'ImageNet' 数据的格式,不一定是ImageNet,根据自己的数据选择合适的格式。此处指定ImageNet,就按照mmcls/datasets/imagenet.py中定义的进行读取。
在这里插入图片描述
samples_per_gpu=32, 单卡的batchsize;多卡每张卡的batchsize,如果训练过程中怎么调都会报显存,那就把以下代码中size的值调小。

train_pipeline = [
    dict(type='LoadImageFromFile'),                                                 # 读图像数据,这些方法在datase_type中有
    dict(type='RandomResizedCrop', size=224), 

(3)查看../_base_/schedules/imagenet_bs256.py

# optimizer
optimizer = dict(type='SGD', lr=0.1, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)						# 这个值不改
# learning policy 学习率衰减
lr_config = dict(policy='step', step=[30, 60, 90])          # 迭代多少次(step指定)之后开始衰减
runner = dict(type='EpochBasedRunner', max_epochs=100)      # 迭代epoch的次数

(4)查看../_base_/default_runtime.py

# checkpoint saving
checkpoint_config = dict(interval=1)            # 修改,此处是1个epoch进行保存
# yapf:disable
log_config = dict(
    interval=100,                               # 迭代多少次数,保存日志的信息
    hooks=[
        dict(type='TextLoggerHook'),
        # dict(type='TensorboardLoggerHook')
    ])
# yapf:enable

dist_params = dict(backend='nccl')
log_level = 'INFO'
load_from = None                                # 从哪加载模型
resume_from = None                              # 从上一个epoch中保存的checkpoint继续训练
workflow = [('train', 1)]                       # 默认值,单卡

二、生成完整的配置文件

指定所选模型的路径,在mmclassification的目录下,如D:\E\mmlab\mmclassification-master\tools\train.py,指定train.py中参数的路径,比如D:\E\mmlab\mmclassification-master\configs\resnet\resnet18_8xb32_in1k.py,运行一下train.py,执行之后会在此处D:\E\mmlab\mmclassification-master\tools\work_dirs\resnet18_b32x8_imagenet\resnet18_b32x8_imagenet.py生成配置文件。复制到D:\E\mmlab\mmclassification-master\configs\resnet路径下,并将其命名为my_resnet18_b32x8_imagenet.py

三、根据文件夹定义数据集

方法一:根据文件夹定义数据集,此方法适用于flower_data这类型的数据
(1)首先,修改上面生成的配置文件中的num_classes,此处以flower_data数据集进行说明,一共有102个种类,所以num_classes=102。并把mmcls/datasets/imagenet.pyCLASSES =[]进行修改。
(2)修改data中data_prefix字段,读数据的路径,如果省略掉ann_file,就直接把文件夹的名字当作标签的类别
(3)修改checkpoint_config的值,checkpoint_config = dict(interval=50) , 隔50个保存一次
方法二:构建自己的数据集
(1)所有的训练数据集都在一个文件夹下,训练集在train文件夹下。
(2)mmcls/datasets下自己写一个文件,仿照imagenet进行写,看人家怎么写,自己怎么写。

import numpy as np

from .builder import DATASETS
from .base_dataset import BaseDataset


@DATASETS.register_module()
class MyFilelist(BaseDataset):              # 继承BaseDataset,所以下面用到的self.ann_file和self.data_prefix就是从这来的
    CLASSES = [
        '我懒得写名字了,有102个。。。',
        '我懒得写名字了,有102个。。。',
        ………,
        '我懒得写名字了,有102个。。。',
        '我懒得写名字了,有102个。。。'
    ]

    def load_annotations(self):
        assert isinstance(self.ann_file, str)

        data_infos = []
        with open(self.ann_file) as f:
            samples = [x.strip().split(' ') for x in f.readlines()]
            for filename, gt_label in samples:
                info = {'img_prefix': self.data_prefix}
                info['img_info'] = {'filename': filename}
                info['gt_label'] = np.array(gt_label, dtype=np.int64)
                data_infos.append(info)
            return data_infos

(3)在mmcls/datasets\__init__中把自己定义的数据集处理进行加载,操作如下。
在这里插入图片描述
(4)在生成的完整配置文件中进行修改,数据部分要修改成以下格式,train、valid、test

type='MyFilelist',
data_prefix='D:\\eclipse-workspace\\PyTorch4\\mmclassification-master\\mmcls\\data\\flower_data\\train_filelist',
ann_file='D:\\eclipse-workspace\\PyTorch4\\mmclassification-master\\mmcls\\data\\flower_data\\train.txt',

四、测试demo的效果

(1)demo/image_demo.py下进行简单的测试

image_05094.jpg ../configs/resnet/today_resnet18_8xb32_in1k.py ../tools/work_dirs/resnet18_8xb32_in1k/epoch_100.pth

通过命令行分别指定img、config、checkpoint,通过这样进行单张图片的测试。

(2)测试评估模型效果:在tools/test.py文件下进行

#../configs/resnet/today_resnet18_8xb32_in1k.py ../tools/work_dirs/resnet18_8xb32_in1k/epoch_100.pth --show
#--show-dir ../tools/work_dirs/resnet18_8xb32_in1k/val_result
#--metrics accuracy recall

通过指定以上参数,进行批量数据的测试。

五、MMCLS中增加一个新的模块

在生成的完整配置文件中进行修改。
backbone一般是替换。
1.修改Neck层
有哪些可以换呢?在mmcls/models/necks地方寻找。
2.head层中的损失函数
如果自己想加一个损失函数,示例如下:
在这里插入图片描述
然后在__init__中添加
最后在配置文件中进行修改
3.添加数据增强
mmcls/datasets/pipelines/transforms.py中有一些数据增强的操作。添加一个数据处理的操作,如下:
在这里插入图片描述
4.可以指定预训练模型,通过load_from参数
5.添加mixup操作
configs/resnet/resnet50_b32x8_mixup_imagenet.py 文件中看到

_base_ = 'resnet50_8xb32-mixup_in1k.py'

_deprecation_ = dict(
    expected='resnet50_8xb32-mixup_in1k.py',
    reference='https://github.com/open-mmlab/mmclassification/pull/508',
)

然后去_base_指定的文件中,把train_cfg复制到自己的配置文件中head层中,并修改num_classes参数
在这里插入图片描述
在这里插入图片描述

六、数据增强流程可视化展示

tools/visualizations文件夹下,有一个可视化的模块。有3个文件,vis_cam.pyvis_lr.pyvis_pipeline.pyvis_cam.py是哪里是图像中关注的区域、vis_lr.py学习率的可视化变化、vis_pipeline.py图像由输入经过旋转、平移、缩放操作,最终放到模型当中,可视化这一系列操作是怎么做的,经历哪些阶段。(在输入模型之前都经历了哪些操作)
(1)vis_pipeline.py的介绍
常用参数的介绍:
config:配置文件的指定
--output-dir:输出图像的设置路径
--phase:选择可视化的数据集train、test、val
--number:选择可视化图像的数量
--mode:展示的模式,展示原始图像original,……

"original" means show images load from disk'
'; "transformed" means to show images after transformed; "concat" '
'means show images stitched by "original" and "output" images. '
'"pipeline" means show all the intermediate images. Default concat.'

--show:whether to display images in pop-up window. Default False.
--mode指定pipeline结果示例:
在这里插入图片描述
--mode指定transformed结果示例:转化完之后的结果示例
在这里插入图片描述
--mode指定concat结果示例:
在这里插入图片描述

(2)vis_cam.py的介绍,Grad-Cam可视化方法,可视化细节与效果分析

  • 首先需要安装pip install "grad-cam>=1.3.6"
  • 指定参数imgconfigcheckpoint--target-category表示The target category to get CAM、--target-layers可以指定查看哪一层特征图的CAM,默认是最后一层–the norm layer in the last block、--preview-model添加这个参数,会打印出模型的结构,其余参数不起作用了
  • 指定参数的示例
cat-dog.png ../../configs/resnet/resnet18_8xb32_in1k.py D:\\E\\mmlab\\mmclassification-master\\mmcls\\data\\resnet18_8xb32_in1k_20210831-fbbb1da6.pth
--target-category 238 --target-category 281

cat-dog.png ../../configs/resnet/resnet18_8xb32_in1k.py D:\\E\\mmlab\\mmclassification-master\\mmcls\\data\\resnet18_8xb32_in1k_20210831-fbbb1da6.pth
--target-layers backbone.layer2.1.conv2

七、模型分析脚本使用

tools/analysis_tools中绘制的图还不是很好看:analysis_logslog中有一些指标,打印出的,可以画出来get_flops.py所需的参数量和计算量
1.绘制评估结果,loss的结果图。
此目录下有日志文件
在这里插入图片描述
参数设置示例:

plot_curve ../work_dirs/resnet18_b32x8_imagenet/20220601_112055.log.json --keys loss accuracy_top-1

2.计算迭代时间
参数设置示例

cal_train_time ../work_dirs/resnet18_b32x8_imagenet/20220601_112055.log.json

平均一次迭代所需花的时间
在这里插入图片描述
3.get_flops.py所需的参数量和计算量
参数设置示例:

../../configs/resnet/today_resnet18_b32x8_imagenet.py --shape 224 224

在这里插入图片描述
参数量和训不训练没关系。和模型以及输入图像的大小有关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mmclassification 的相关文章

  • 目标检测笔记(十三): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程))

    文章目录 一 目标检测介绍 二 YOLOv5介绍 2 1 和以往版本的区别 三 代码获取 3 1 视频代码介绍 四 环境搭建 五 数据集准备 5 1 数据集转换 5 2 数据集验证 六 模型训练 七 模型验证 八 模型测试 九 评价指标 一
  • YOLOX的深入理解

    文章目录 前言 Focus Decouple head Strong data augmentation Anchor Free Multi positives SimOTA 代码实现 输入预处理 输出后处理 参考 前言 在目标检测2022
  • Shuffle Net系列【V1—V2】

    1 ShuffleNet V1 1 1 Abstract 我们提出了一个极其效率的CNN架构 ShuffleNet 其专为计算能力非常有限的移动设备设计 这个新的架构利用了两个新的操作 pointwise group conv和channe
  • Yolo置信度

    Yolo置信度 置信度是每个bounding box输出的其中一个重要参数 作者对他的作用定义有两重 一重是 代表当前box是否有对象的概率Pr Object 注意 是对象 不是某个类别的对象 也就是说它用来说明当前box内只是个背景 ba
  • ILSVRC竞赛详细介绍(ImageNet Large Scale Visual Recognition Challenge)

    ILSVRC ImageNet Large Scale Visual Recognition Challenge 是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一 代表了图像领域的最高水平 ImageNet数据集是ILSVRC竞赛使用
  • 保姆级使用PyTorch训练与评估自己的ResNeXt网络教程

    文章目录 前言 0 环境搭建 快速开始 1 数据集制作 1 1 标签文件制作 1 2 数据集划分 1 3 数据集信息文件制作 2 修改参数文件 3 训练 4 评估 5 其他教程 前言 项目地址 https github com Fafa D
  • Yolov5-7.0图像分类算法修改Resnet18/50主干网络流程

    网上大多数都是基于yolov5算法的目标检测网络进行修改主干网络 我最近在尝试图像分类算法 流程如下 以resnet50为例 1 打开models下的common py文件 添加下面的代码 模型 resnet50 class resnet5
  • 综述---图像处理中的注意力机制

    重磅好文 微软亚研 对深度神经网络中空间注意力机制的经验性研究 论文 An Empirical Study of Spatial Attention Mechanisms in Deep Networks 高效Transformer层出不穷
  • 半监督目标检测

    一 Soft Teacher 1 超实用半监督目标检测 Soft Teacher 及 MMDetection 最强代码实践 2 3 GitHub上mmdetection上有一个关于SSOD这个的教程 SSOD tutorial 4 配置mm
  • 图像分类之花卉图像分类(二)数据预处理代码

    经过上一节数据增强 我们来说说数据预处理吧 首先我们要知道图片进入网络训练都是要统一大小格式的 所以我们需要对训练集和验证集的图片进行裁剪 让他们大小统一 注意测试集不用裁剪 我选择裁剪成了64 64的 没改源码的裁剪大小 其实图片大些识别
  • 图像分类,物体检测,语义分割,实例分割的联系和区别

    从10月中旬开始 科研转为 Object Segment 即物体分割 这属于图像理解范畴 图像理解包含众多 如图像分类 物体检测 物体分割 实例分割等若干具体问题 每个问题研究的范畴是什么 或者说每个问题中 对于某幅图像的处理结果是什么 整
  • 人脸图像数据增强

    为什么要做数据增强 在计算机视觉相关任务中 数据增强 Data Augmentation 是一种常用的技术 用于扩展训练数据集的多样性 它包括对原始图像进行一系列随机或有规律的变换 以生成新的训练样本 数据增强的主要目的是增加模型的泛化能力
  • 模型实战(6)之Alex实现图像分类:模型原理+训练+预测(详细教程!)

    Alex实现图像分类 模型原理 训练 预测 图像分类或者检索任务在浏览器中的搜索操作 爬虫搜图中应用较广 本文主要通过Alex模型实现猫狗分类 并且将可以复用的开源模型在文章中给出 数据集可以由此下载 Data 本文将从以下内容做出讲述 1
  • 图像分类篇——AlexNet详解

    一 概述 AlexNet是由2012年ImageNet竞赛参赛者Hinton和他的学生Alex Krizhevsky设计的 AlexNet在当年赢得了ImageNet图像分类竞赛的冠军 使得CNN成为图像分类问题的核心算法模型 同时引发了神
  • ResNet详解:ResNet到底在解决什么问题?

    原作者开源代码 https github com KaimingHe deep residual networks 论文 https arxiv org pdf 1512 03385 pdf 1 网络退化问题 在ResNet诞生之前 Ale
  • 【SSD 代码精读】之 model (Backbone)& loss

    model 1 Backbone 1 ResNet 50 2 截取 ResNet 50 的前半部分作为 backbone 2 Module 3 Loss Function 1 location loss 2 confidence loss
  • DenseNet学习与实现

    Densely Connected Convolutional Networks 提出了DenseNet 它用前馈的方式连接每一层与所有其他层 L层网络共有 L L 1
  • 基于keras的图像分类CNN模型的搭建以及可视化(附详细代码)

    基于keras的图像分类CNN模型的搭建以及可视化 本文借助keras实现了热图像的分类模型的搭建 以及可视化的工作 本文主要由以下内容组成 Keras模型介绍 CNN模型搭建 模型可视化 Keras模型介绍 简介 Keras 是 Goog
  • CNN中特征融合的一些策略

    Introduction 特征融合的方法很多 如果数学化地表示 大体可以分为以下几种 X Y textbf X textbf Y X Y X
  • 利用pytorch训练网络---垃圾分类,(resnet18)

    数据集包含6种垃圾 分别为cardboard 纸箱 glass 玻璃 metal 金属 paper 纸 plastic 塑料 其他废品 trash 数据数量较小 仅供学习 数据集标准备工作 包括将数据集分为训练集和测试集 制作标签文件 代码

随机推荐

  • Nginx中location规则 与 URL重写(rewrite)详解

    1 Nginx中location与rewrite 1 1 location与rewrite常用的正则表达式 符号 作用 匹配输入字符串的起始位置 匹配输入字符串的结束位置 匹配前面的字符零次或多次 如 ol 能匹配 o 及 ol oll 匹
  • matlab转化上三角矩阵,怎么样把矩阵H变成【A B】,A为上三角矩阵

    p eye 21 21 p1 eye 21 21 pm c zeros 252 672 a1 1 21 a2 22 42 a3 43 63 a4 64 84 a5 85 105 a6 106 126 a7 127 147 a8 148 16
  • 学习笔记——IPSec

    目录 一 整个IPsec工作过程 二 IKE阶段1 三 IKE阶段2 四 IPsec协议 五 华为设备配置命令 一 安全提议 xxx proposal 二 IKE对等体 ike peer 三 IPSec安全框架 ipsec profile
  • Emgu CV3+C#图像处理(一):Emgu CV学习目录+EmguCV安装配置与使用

    EmguCV学习目录 Emgu CV3 C 图像处理 一 Emgu CV学习目录 EmguCV安装配置与使用 Emgu CV3 C 图像处理 二 EmguCV主要模块简介 Emgu CV3 C 图像处理 三 使用EmguCV进行简单图像处理
  • 【重磅更新】图形处理工具NCSS 2019重磅上线!

    NCSS软件提供了370多种全面的统计和图形工具 用以对数据进行分析和实现可视化 我们很高兴地宣布NCSS 2019已经更新 这是统计分析和图形软件的最新版本 我们相信您会发现改进的和新增的程序非常适合您的研究需求 NCSS 2019免费下
  • 语义分割总结(未完待续)

    一 综述 由于工作中很长一段时间都是在做语义分割系列的工作 所以这篇文章主要对自己用到的一些方法做个简单的总结 包括其优缺点等 以便日后能够及时复习查看 目前语义分割的方法主要集中在两个大的结构上 1 encode decode的结构 图像
  • 深入理解计算机系统(原书第三版)系列 第十一章 网络编程

    第十一章 网络编程
  • 【剑指offer】数据结构——数

    目录 数据结构 数 直接解 剑指offer 43 1 n 整数中 1 出现的次数 剑指offer 44 数字序列中某一位的数字 剑指offer 49 丑数 剑指offer 60 n个骰子的点数 剑指offer 62 圆圈中最后剩下的数字 剑
  • 安卓端小黄鸟抓包保姆级教程(附带全套工具,完美解决无网络和ROOT问题)

    抓包工具 1 vmos pro 2 小黄鸟 3 JustTrustMe 4 JustMeplus 5 JustMeAlreadly 6 MT管理工具 抓包环境 vmos pro 虚拟机安卓9版本中 抓包教程 一 安装所需工具 工具安装包我会
  • jpa笔记

    ORM思想 主要目的 操作实体类就相当于操作数据库表 建立两个映射关系 实体类和表的映射关系 实体类中属性与表中字段的映射关系 不再重点关注 sql语句 JPA规范 jpa规范 实现jpa规范 内部是由接口和抽象类组成 实体类 配置映射关系
  • Java的assert断言以及常见的Assert工具类

    实际上Java有一个保留关键字assert 名字叫断言 断言这个东西可以看做是程序语言关于异常处理的一种高级方式 就是通过断言
  • 系统学习 TypeScript(一)——认识 TypeScript

    TypeScript 很流行 这是前端从业者众所周知的事 TypeScript 很好用 仁者见仁智者见智 但是 很多大型前端框架都使用 TypeScript 进行了重构 为了不落伍 我也需要系统的学习一下 TypeScript 相关知识了
  • 仔细看看css3带数字时钟,极漂亮CSS3数字时钟,带动画

    CSS3 Digital Clock with jQuery body background 202020 font bold 12px Arial Helvetica sans serif margin 0 padding 0 min w
  • 面试官问我HashMap哪里不安全,我憋了半天憋出了内伤?

    HashMap在JDK7和JDK8是有了一些不同的 具体体现如下 JDK7HashMap底层是数组 链表 而JDK8是数组 链表 红黑树 JDK7扩容采用头插法 而JDK8采用尾插法 JDK7的rehash是全部rehash 而JDK8是部
  • Flutter实体返回键与pop方法行为不一致

    问题描述 Flutter中连续跳转了多个Page后 按导航栏返回按钮 执行得pop方法 与按手机实体返回键返回行为不一致 复现步骤 有4个Page 分别为 Page1 Page2 Page3 Page4 跳转顺序 Page1 跳转后销毁 g
  • 数据结构课程设计实验一:图书信息管理系统的设计与实现

    目录 一 实验内容 二 实验目的 三 实验主要数据类型定义 四 系统功能概述 五 实验代码 六 实验内容展示 一 实验内容 设计并实现一个图书信息管理系统 根据实验要求设计该系统的菜单和交互逻辑 并编码实现增删改查的各项功能 该系统至少包含
  • 易班显示服务器错误,易班常见问题汇总

    Q1 为什么我退出的之后在线时间没有增加 A1 是否注意到网页右上方有一个退出的按钮 如图 只有点此退出才会计算在线时间 而且不同的在线时间也会得到不同的网薪和经验奖励哟 Q2 怎么才有VIP A2 有些同学总说VIP的就是版主 这个观念是
  • 深度学习的定义和未来发展趋势

    深度学习的定义和未来发展趋势 什么是深度学习 数学和编程的基础知识 深度学习的应用领域 深度学习的常见算法和模型 训练深度学习模型 深度学习的未来 个人简介 以山河作礼 Python领域新星创作者 CSDN实力新星认证 文章末尾扫描二维码可
  • bootloader详解

    一 bootloader介绍 bootloader是硬件在加电开机后 除BIOS固化程序外最先运行的软件 负责载入真正的操作系统 可以理解为一个超小型的os 目前在Linux平台中主要有lilo grub等 在Windows平台上主要有nt
  • mmclassification

    mmclassification 一 MMCLS项目 0 下载链接 Torch安装方法 CPU pip install torch i https download pytorch org whl torch stable html 指定清