【YOLO学习】YOLOv2详解
文章目录
- 1. 概述
- 2. Better
- 2.1 Batch Normalization(批归一化)
- 2.2 High Resolution Classifier(高分辨率分类器)
- 2.3 Convolutional With Anchor Boxes(带有Anchor Boxes的卷积)
- 2.4 Dimension Clusters(维度聚类)
- 2.5 Direct location prediction(直接的位置预测)
- 2.6 Fine-Grained Features(细粒度的特征)
- 2.7 Multi-Scale Training(多尺度的训练)
- 3. Faster
- 4. YOLOV2训练
原论文:YOLO9000: Better, Faster, Stronger
作者 Joseph Redmon 和 Ali Farhadi 在 YOLOv1 的基础上,进行了大量改进,提出了 YOLOv2 和 YOLO9000,重点解决 YOLOv1 召回率和定位精度方面的不足。
1. 概述
YOLOv1 虽然检测速度快,但在定位方面不够准确,并且召回率较低。为了提升定位准确度,改善召回率,YOLOv2 在 YOLOv1 的基础上提出了几种改进策略,如下图所示,一些改进方法能有效提高模型的 mAP。
2. Better
2.1 Batch Normalization(批归一化)
1. YOLOv2 中在每个卷积层后加 Batch Normalization(BN)层,去掉了 dropout 层。 Batch
Normalization 层可以起到一定的正则化效果,能提升模型收敛速度,防止模型过拟合。YOLOv2 通过使用 BN 层使得 mAP 提高了2%。
2. Batch Normalization 通常放置在激活函数之前,即在卷积层或全连接层的输出之后进行归一化操作。Batch Normalization 的过程主要包括以下几个步骤:
(1) 计算小批量的均值和方差:对于一个 mini-batch B = [ x 1 , x 2 , . . . , x m ] B=[x_1,x_2,...,x_m] B=[x1,x2,...,xm] 首先计算该小批量的均值 μ B μ_B μB 和方差 σ 2 B {σ^2}_B σ2B
(2) 归一化:使用计算得到的均值和方差对每个输入数据进行归一化处理,得到新的输入。其中, ϵ ϵ ϵ 是一个很小的常数,用于防止分母为零。
(3) 归一化后的数据可能会破坏原始数据的表达能力,因此通过引入可学习的参数 γ γ γ 和 β β β,对归一化后的数据进行缩放和平移,以恢复数据的表达能力。
2.2 High Resolution Classifier(高分辨率分类器)
1. 所有最先进的检测方法都使用在 ImageNet 上预训练的分类器。从AlexNet开始,大多数分类器在小于 256×256 的输入图像上运行。最初的 YOLO 在 224×224 的情况下预训练分类器网络,并将分辨率提高到 448 以进行检测训练。这意味着网络在切换到检测学习时还必须调整到新的输入分辨率。
注:YOLOv1 在预训练阶段,输入尺寸是 224×224;而在检测阶段,输入尺寸则变为 448×448。这种变化是为了满足不同阶段和任务的需求,并实现更好的性能表现。
2. 对于 YOLOv2,我们首先在 ImageNet 上以 448×448 的完整分辨率对分类网络进行微调,并进行 10 个 epoch 的预训练。这让网络有时间调整其滤波器,以便在更高的分辨率输入下更好地工作。然后,我们再对检测网络的结果微调。这个高分辨率的分类网络使我们的 mAP 增加了近 4%。
注:YOLOv2 直接在预训练中输入的就是 448×448 的尺寸,微调的时候也是 448 × 448。
2.3 Convolutional With Anchor Boxes(带有Anchor Boxes的卷积)
1. 锚框(anchor box) / 先验框(prior bounding box):在众多经典的目标检测模型中,均有先验框的说法,有的 paper(如Faster RCNN)中称之为 anchor(锚点),有的 paper (如SSD)称之为 prior bounding box(先验框),实际上是一个概念,特此说明。
2. 对于一个 224×224 的图片,假设每个位置设置 3 个不同尺寸的先验框,那么就有 224×224×3=150528 个锚框,这个数量太大了。所以,更好的处理方式是先对原图进行下采样处理,得到 feature map,在 feature map 中生成锚框。以 vgg16 的 backbone 为例,把 224×224 的输入图片下采样了 5 次,得到 7×7 的 feature map,那就只需要得到 7×7×3=147 个先验锚框,这样的设置大大减少了先验框的数量,同时也能覆盖大多数情况。
3. 如先前所述,一般会在同一位置生成不同形状和大小的多个锚框来增加预测的成功率。形状和大小分别用尺度(scale)和宽高比(ratio)来描述。由于Anchor Box 通常是以 CNN 提取到的 Feature Map 的点为中心位置,生成边框,所以一个 Anchor Box 不需要指定中心位置。
- 尺度:描述基准锚框的大小信息。若尺度为 a a a,那么基准锚框由原图的宽和高分别缩小 a a a 倍所得。(注意,若宽高缩小为 a a a 倍,面积缩小 a 2 a^2 a2 倍)
- 宽高比:生成锚框的形状信息,即最终生成锚框的宽和长的比。在改变宽高比时,应维持最终生成的锚框和基准锚框的面积恒定。
4. 之前 YOLOv1:使用全连接层来直接预测边界框(x,y,w,h,c)其中边界框的坐标是相对于 cell 的,宽与高是相对于整张图片。由于各个图片中存在不同尺度和长宽比的物体,YOLOv1 在训练过程中学习适应不同物体的形状是比较困难的,这也导致 YOLOv1 在精确定位方面表现较差。
5. 相较于 YOLOv1,使用 Anchor,模型的 mAP 值从 69.5 降到了 69.2,下降了一丢丢,而召回率却从 81% 提高到了 88%。
关于精度和召回率的介绍可以参考这篇文章:https://blog.csdn.net/m0_62881487/article/details/133722683
6. 与 YOLOv1 类似。(1)在训练阶段,对于每个网格单元,只有那些与真实边界框具有最高 IoU(交并比)的锚点才会被标记为 “负责” 预测该物体。这意味着在训练中,每个真实边界框只会与一个最适合它的锚点进行匹配,而其他锚点则被视为 “负例”,即它们不包含任何物体,从而学习到不预测物体的情况。(2)在推断阶段,每个网格单元的 5 个锚点都会产生预测,但是 NMS 过程会去除那些重叠的低置信度预测,只保留最可能的检测结果。
7. YOLOv2 输出结构中每个 grid cell 输出 K 个 bounding boxes(K通常为5),每个 bounding box 包含:
- 4 个坐标值(x, y, w, h)
- 1个置信度分数
- 20 个类别概率分布
YOLOv2 每个 grid cell 输出:5 × (4 + 1 + 20) =125 个值
2.4 Dimension Clusters(维度聚类)
1. 在 Faster R-CNN 和 SSD 中,先验框的维度(长和宽)都是手动设定的,带有一定的主观性。如果选取的先验框维度比较合适,那么模型更容易学习,从而做出更好的预测。因此,YOLOv2 采用 k-means 聚类方法对训练集中的边界框做了聚类分析。因为设置先验框的主要目的是为了使得预测框与ground truth的IOU更好,到聚类中心的距离越小越好,但 IOU 值是越大越好,所以使用 1-IOU,这样就保证距离越小,IOU 值越大,所以聚类分析时选用 box 与聚类中心 box 之间的 IOU 值作为距离指标:
2. 边界框聚类步骤:
3. 如下图,选取不同的 k 值(聚类的个数)运行 K-means算法,并画出平均 IOU 和 K 值的曲线图。当 k = 5 时,可以很好的权衡模型复杂性和高召回率。与手工挑选的相比,K-means 算法挑选的检测框形状多为瘦高型。
2.5 Direct location prediction(直接的位置预测)
1. 传统 RPN 网络的位置预测:(1) 方法: 预测相对于 Anchor Box 的坐标的偏移,和相对于Anchor Box 的高宽的偏移。 (2) 计算公式: 预测框中心坐标 = 输出的偏移量 × Anchor 宽高 + Anchor 中心坐标。 (3) 不足: 这个公式是不受约束的,因此任何锚框可以出现在图像中的任何位置。在随机初始化的情况下,模型需要很长时间才能稳定到预测合理的偏移量。
2. YOLOv2 的改进:(1) 方法:预测边界框中心点相对于对应 cell 左上角位置的相对偏移值。将网格归一化为 1×1,坐标控制在每个网格内,同时配合 Sigmod 函数将预测值转换到 0~1 之间的办法,做到每一个 Anchor 只负责检测周围正负一个单位以内的目标 box。 (2) 计算公式:一个网格相对于图片左上角的偏移量是 cx,cy。先验框的宽度和高度分别是 pw 和 ph,则预测的边界框相对于特征图的中心坐标 (bx,by) 和宽高 bw、bh。 (3) 效果:使模型更容易稳定训练,mAP 值提升了约 5%。
2.6 Fine-Grained Features(细粒度的特征)
1. 为什么使用细粒特征:这个修改后的 YOLO 在 13×13 特征图上进行检测。虽然这对于大型对象来说已经足够了,但是对于较小的对象来说,更细粒度的特性可能会使得检测效果更好。使用后最终提升了 1% 的 mAP
2. 使用细粒度特征
(1) Faster R-CNN 和 SSD:使用了多尺度的特征图来分别检测不同大小的物体,前面更精细的特征图可以用来预测小物体。
(2) YOLOv2:不同的方法,为网络简单地添加一个直通层(passthrough layer),获取前层 26×26 分辨率特征。
3. 直通层( passthrough layer)
(1) 将相邻的特征叠加到不同的通道来,将高分辨率的特征与低分辨率的特征连接起来。
(2) 将前层 26×26×512 的特征图转换为 13×13×2048 的特征图,并与原最后层特征图进行拼接。
4. 具体过程:
- YOLOv2 提取 Darknet-19 最后一个 maxpooling 层的输入,得到 26×26×512 的特征图。经过 1×1×64 的卷积以降低特征图的维度,得到 26×26×64 的特征图,然后经过 pass through 层的处理变成 13×13×256 的特征图(抽取原特征图每个 2×2 的局部区域组成新的 channel,即原特征图大小降低 4 倍,channel 增加 4 倍),再与 13×13×1024 大小的特征图连接,变成 13×13×1280 的特征图,最后在这些特征图上做预测。
- 具体操作:一个 feature map,也就是在最后的池化之前,分成两路:一路是做拆分,分成四块,四块拼成一个长条,另一个是做正常的池化卷积操作,最后两个长条进行拼接叠加输出。
如何拆分成四块的:并不是简单的 “两刀切 4 块”,而是在每个 2×2 的小区域上都选择左上角块,具体看下图。
2.7 Multi-Scale Training(多尺度的训练)
1. YOLOv1:(1) 方法: 使用448×448的固定分辨率输入。
2. YOLOv2 的改进:
(1) 原理:YOLOv2 模型只使用了卷积和池化层,所以可以动态调整输入大小。每隔几次迭代就改变网络,而不是固定输入图像的大小。
(2) 做法:网络每 10 批训练后随机选择一个新的图像尺寸大小。由于模型下采样了 32 倍,从以下 32 的倍数 {320,352,…,608} 作为图像维度的选择。将网络输入调整到那个维度,并继续训练。
(3) 作用:这种机制使得网络可以更好地预测不同尺寸的图片,意味着同一个网络可以进行不同分辨率的检测任务,在输入 size 较大时,训练速度较慢,在输入 size 较小时,训练速度较快,而 multi-scale training 又可以提高准确率,因此算是准确率和速度都取得一个不错的平衡。
3. YOLOv2 和其他网络成绩对比:
在小尺寸图片检测中,YOLOv2 成绩很好,输入为 228×228 的时候,帧率达到 90FPS,mAP 几乎和 Faster R-CNN 的水准相同。使得其在低性能 GPU、高帧率视频、多路视频场景中更加适用。在大尺寸图片检测中,YOLOv2 达到了先进水平,VOC2007 上 mAP 为 78.6%,仍然高于平均水准。
3. Faster
1. (1) 通常目标检测框架:大多数检测框架依赖于 VGG-16 作为基本的特征提取器。VGG-16 是一个强大、精确的分类网络,但是它计算复杂。
(2) YOLO 框架:使用基于 GoogLeNet 架构的自定义网络。虽说整体 mAP 表现较 VGG-16 差一些,但是却换来更快速、更少的预测运算。
(3) YOLOv2 框架:使用的是一个全新的架构:Darknet-19。
2. Darknet-19 细节:有 19 个卷积层和 5 个 maxpooling 层。(v1 的 GooLeNet 是 4 个卷积层和 2 个全连接层)
4. YOLOV2训练
YOLOv2 训练分为三个阶段:
第一阶段:第一阶段就是先在 ImageNet 分类数据集上预训练 Darknet-19,此时模型输入为 224×224,共训练 160 个 epochs。
第二阶段:将网络的输入调整为 448x448,继续在 ImageNet 数据集上 finetune 分类模型,训练 10 个 epochs,此时分类模型的 top-1 准确度为 76.5%,而 top-5 准确度为 93.3%。
第三阶段:修改 Darknet-19 分类模型为检测模型,并在检测数据集上继续 finetune 网络。网络修改包括:移除最后一个卷积层、global avgpooling 层以及 softmax 层,并且新增了三个 3×3×1024卷积层,同时增加了一个 passthrough 层,最后使用 1×1 卷积层输出预测结果,输出的 channels 数为:num_anchors × (5 + num_classes),和训练采用的数据集有关系。
由于 anchors 数为 5,对于 VOC 数据集输出的 channels 数就是 125,而对于 COCO 数据集则为 425。这里以 VOC 数据集为例,最终的预测矩阵为 T(shape为(batch_size, 13, 13, 125)),可以 reshape 到(batch_size, 13, 13, 5, 25),其中 T[:, :, :, :,0:4] 为预测框的位置和大小,T[:, :, :, :,5] 为预测框的置信度,T[:, :, :, :,5:] 为类别预测值。
相关文章:
【YOLO学习】YOLOv2详解
文章目录 1. 概述2. Better2.1 Batch Normalization(批归一化)2.2 High Resolution Classifier(高分辨率分类器)2.3 Convolutional With Anchor Boxes(带有Anchor Boxes的卷积)2.4 Dimension Clusters&…...
windows 录音编码为flv格式时,pcm采样格式
这里使用的是0x3e,转换为二进制: 0 0 1 1 1 1 1 0 前四个字节为3,表示Linear Pcm, 后4个字节1 1 1 0 表示44100HZ采样, 16个bit,单声道。 故,windows 音频采样不支持48000HZ频率...
Qt开发技巧(九)去掉切换按钮,直接传样式文件,字体设置,QImage超强,巧用Qt的全局对象,信号槽断连,低量数据就用sqlite
继续讲一些Qt开发中的技巧操作: 1.去掉切换按钮 QTabWidget选项卡有个自动生成按钮切换选项卡的机制,有时候不想看到这个烦人的切换按钮,可以设置usesScrollButtons为假,其实QTabWidget的usesScrollButtons属性最终是应用到QTabWi…...
51c自动驾驶~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/11466109 #HTCL 超过所有视觉方案!HTCL:分层时间上下文问鼎OCC 本文是对ECCV2024接受的文章 HTCL: 的介绍,HTCL在SemanticKITTI基准测试中超过了所有基于相机的方法,甚至在和…...
Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进
作者:席翁 Nacos 社区刚刚迎来了 Star 突破 30000 的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助! Nacos /nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称,定位于一个更易于构建云原…...
PHP魔幻(术)方法
PHP中的魔幻方法,也被称为魔术方法(Magic Methods),是一组具有特殊功能的方法。这些方法在PHP中有固定的名称,并且会在特定的时机自动被PHP调用,而无需开发者显式调用。它们通常用于执行一些特殊的操作&…...
VS开发 - 静态编译和动态编译的基础实践与混用
目录 1. 基础概念 2. 直观感受一下静态编译和动态编译的体积与依赖项目 3. VS运行时库包含哪些主要文件(从VS2015起) 4. 动态库和静态库混用的情况 5. 感谢清单 1. 基础概念 所谓的运行时库(Runtime Library)就是WINDOWS系统…...
Golang | Leetcode Golang题解之第451题根据字符出现频率排序
题目: 题解: func frequencySort(s string) string {cnt : map[byte]int{}maxFreq : 0for i : range s {cnt[s[i]]maxFreq max(maxFreq, cnt[s[i]])}buckets : make([][]byte, maxFreq1)for ch, c : range cnt {buckets[c] append(buckets[c], ch)}an…...
零信任如何增强网络物理系统 (CPS) 安全性
远程访问对于管理关键基础设施至关重要,因为它允许企业优化和扩展运营并保持效率。然而,它也带来了许多安全漏洞,而且随着连接设备数量的增加,这些漏洞只会越来越多。 到 2025 年,企业和消费者环境中的物联网设备数量…...
V3D——从单一图像生成 3D 物体
导言 论文地址:https://arxiv.org/abs/2403.06738 源码地址:https://github.com/heheyas/V3D.git 人工智能的最新进展使得自动生成 3D 内容的技术成为可能。虽然这一领域取得了重大进展,但目前的方法仍面临一些挑战。有些方法速度较慢&…...
计算机网络期末复习真题(附真题答案)
前言: 本文是笔者在大三学习计网时整理的笔记,哈理工的期末试题范围基本就在此范畴内,就算真题有所更改,也仅为很基础的更改数值,大多跑不出这些题,本文包含简答和计算等大题,简答的内容也可能…...
Unity 的 UI Event System 是一个重要的框架
Unity 的 UI Event System 是一个重要的框架,用于处理用户界面中的输入事件。以下是它的主要特点和功能: 1. 事件管理 UI Event System 负责捕获和管理来自用户的输入事件,如鼠标点击、触摸、键盘输入等。 2. 事件传播 事件通过层次结…...
第十三章 集合
一、集合的概念 集合:将若干用途、性质相同或相近的“数据”组合而成的一个整体 Java集合中只能保存引用类型的数据,不能保存基本类型数据 数组的缺点:长度不可变 Java中常用集合: 1.Set(集):集合中的对象不按特定方式排序&a…...
子非线程池中物
线程池,又好上了 有任务队列 任务要处理就直接放到里面 预先创建好线程,本质上也是一个生产消费模型 线程池真是麻烦啊 我们可以直接沿用之前写过的代码,Thread.hpp: #pragma once #include <iostream> #include <functional&…...
Unraid的cache使用btrfs或zfs?
Unraid的cache使用btrfs或zfs? 背景:由于在unraid中添加了多个docker和虚拟机,因此会一直访问硬盘。然而,单个硬盘实在难以让人放心。在阵列盘中,可以通过添加校验盘进行数据保护,在cache中无法使用xfs格式…...
微服务实战——平台属性
平台属性 中间表复杂业务 /*** 获取分类规格参数(模糊查询)** param params* param catelogId* param type type"base"时查询基础属性,type"sale"时查询销售属性* return*/ Override public PageUtils listByCatelogId…...
半监督学习与数据增强(论文复现)
半监督学习与数据增强(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 半监督学习与数据增强(论文复现)概述算法原理核心逻辑效果演示使用方式 概述 本文复现论文提出的半监督学习方法,半监督学习&…...
css3-----2D转换、动画
2D 转换(transform) 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 移动:translate旋转:rotate缩放:scale 二维坐标系 2D 转换之移动 trans…...
SQL进阶技巧:统计各时段观看直播的人数
目录 0 需求描述 1 数据准备 2 问题分析 3 小结 如果觉得本文对你有帮助,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下: 数字化建设通关指南 专栏 原价99,现在活动价39.9,十一国庆后将上升至59.9&#…...
Stream流的终结方法
1.Stream流的终结方法 2.forEach 对于forEach方法,用来遍历stream流中的所有数据 package com.njau.d10_my_stream;import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.function.Consumer; import java.util…...
JavaWeb——Vue组件库Element(4/6):案例:基本页面布局(基本框架、页面布局、CSS样式、完善布局、效果展示,含完整代码)
目录 步骤 基本页面布局 基本框架 页面布局 CSS样式 完善布局 效果展示 完整代码 Element 的基本使用方式以及常见的组件已经了解完了,接下来要完成一个案例,通过这个案例让大家知道如何基于 Element 中的各个组件制作一个完整的页面。 案例&am…...
【c++】 模板初阶
泛型编程 写一个交换函数,在学习模板之前,为了匹配不同的参数类型,我们可以利用函数重载来实现。 void Swap(int& a, int& b) {int c a;a b;b c; } void Swap(char& a, char& b) {char c a;a b;b c; } void Swap(dou…...
R 语言 data.table 大规模数据处理利器
前言 最近从一个 python 下的 anndata 中提取一个特殊处理过的单细胞矩阵,想读入R用来画图(个人比较喜欢用R可视化 ),保存之后,大概几个G的CSV文件,如果常规方法读入R,花费的时间比较久&#x…...
Java 静态代理详解:为什么代理类和被代理类要实现同一个接口?
在 Java 开发中,代理模式是一种常用的设计模式,其中代理类的作用是控制对其他对象的访问。代理模式分为静态代理和动态代理,在静态代理中,代理类和被代理类都需要实现同一个接口。这一机制为实现透明的代理行为提供了基础…...
OpenCV C++霍夫圆查找
OpenCV 中的霍夫圆检测基于 霍夫变换 (Hough Transform),它是一种从边缘图像中识别几何形状的算法。霍夫圆检测是专门用于检测图像中的圆形形状的。它通过将图像中的每个像素映射到可能的圆参数空间,来确定哪些像素符合圆形状。 1. 霍夫变换的原理 霍夫…...
H.264编解码介绍
一、简介 H.264,又称为AVC(Advanced Video Coding),是一种广泛使用的视频压缩标准。它由国际电信联盟(ITU)和国际标准化组织(ISO)联合开发,并于2003年发布。 H.264的发展历史可以追溯到上个世纪90年代。当时,视频压缩技术的主要标准是MPEG-2,但它在压缩率和视频质…...
Java | Leetcode Java题解之第450题删除二叉搜索树中的节点
题目: 题解: class Solution {public TreeNode deleteNode(TreeNode root, int key) {TreeNode cur root, curParent null;while (cur ! null && cur.val ! key) {curParent cur;if (cur.val > key) {cur cur.left;} else {cur cur.rig…...
【CViT】Deepfake Video Detection Using Convolutional Vision Transformer
文章目录 Deepfake Video Detection Using Convolutional Vision Transformerkey points**卷积视觉变压器**FLViT实验总结Deepfake Video Detection Using Convolutional Vision Transformer 会议/期刊:2021 作者: key points 提出了一种用于检测深度伪造的卷积视觉变压器…...
安卓主板_MTK4G/5G音视频记录仪整机及方案定制
音视频记录仪方案,采用联发科MT6877平台八核2* A78 6* A55主频高达2.4GHz, 具有高能低耗特性,搭载Android 12.0智能操作系统,可选4GB32GB/6GB128GB内存,运行流畅。主板集成NFC、双摄像头、防抖以及多种无线数据连接,支…...
Qt 教程全集目录公布(方便查阅)
点击上方"蓝字"关注我们 Qt 安装 以下是常见安装方法和软件获取 Qt4Qt5Qt6版本下载(在线和离线)【网址】...
长春做网站哪家公司好/app拉新推广平台渠道
方法1 :使用mysql root(root权限)用户登陆直接赋权也能够创建用户/usr/bin/mysqladmin -u root password 123456mysql -uroot -p password查看全部username与passwordselect host ,user ,password from user;grant all on ec.* to root% identified by …...
wordpress博客cms风格主题/重庆网站搭建
关于OkHttp、Retrofit、阿里云存储中不兼容Android5.0以下系统的解决方案 文章目录关于OkHttp、Retrofit、阿里云存储中不兼容Android5.0以下系统的解决方案前言:环境:处理方式(一):处理方式(二):处理方式优劣之分:如何排查问题&a…...
有哪些网站是做分期付款的/2022最近十大的新闻热点
本文实例讲述了jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果。分享给大家供大家参考,具体如下:function openTopWindow(url, title, width, height) {title title undefined ? : title;width width undefined ? 800 : width;heigh…...
企业做网站用dedeCMS免费吗/广州网站seo
http://www.runoob.com/design-pattern/factory-pattern.html 菜鸟教程 1.工厂模式: 个人感觉就是利用 多态(例如动物,叫声那个例子)工厂(创建各个类的实列的自定义工厂)测试类(给定一种动物&am…...
广告设计与制作自我评价/seo品牌优化百度资源网站推广关键词排名
Osclass \ajax.php\本地文件包含漏洞发表日期:2015-01-19 14:04:59Osclass \ajax.php\本地文件包含漏洞BugTraq-ID:71841CVE-ID:CVE-2014-8084发布日期:2014-12-31更新日期:2015-01-12受影响系统:Osclass Osclass < 3.4.2详细信…...
ppt模板下载免费版幼儿园/seopc流量排行榜企业
问题:打开phpmyadmin显示高级功能尚未完全设置部分功能未激活,应该如何解决? 总共三步可以搞定 1、导入相关文件到数据库 2、更改配置文件config.inc.php 3、给于root用户相关权限 详细过程如下: 先找到 phpMyAdmin所在目录&a…...