CSS 选择器(二)

CSS 选择器(二)

交集选择器(了解)

给所有选择器选中的标签中相交的那部分标签设置属性
格式:选择器之间没有任何符号!

<!--选择器1选择器2 {
    属性:值;
}-->
<style>
p.p1 {
    color:red;
}
</style>
<p></p>
<p></p>
<p class="p1"></p>  <!--变红-->
<p class="p1"></p>  <!--变红-->
<p></p>
并集选择器(掌握)

给所有选择器中的标签设置属性
格式:选择器之间用逗号隔开!

<!--选择器1,选择器2 {
    属性:值;
}-->
<style>
.p1,.p2 {
    color:red;
}
</style>
<p></p>
<p></p>
<p class="p1"></p>  <!--变红-->
<p class="p2"></p>  <!--变红-->
<p></p>
兄弟选择器
相邻兄弟选择器(css2)

给指定选择器后面紧跟着的那一个选择器中的标签设置属性

<!--选择器1+选择器2 {
    属性:值;
}-->
<style>
h1+p {
    color:red;
}
</style>
<h1>标题</h1>
<p>段落</p> <!--变红-->
<p>段落</p>
<p>段落</p>  
<h1>标题</h1>
<p>段落</p>  <!--变红-->
<p>段落</p>
<p>段落</p>
通用兄弟选择器(css3)

给指定选择器后面所有的选择器中的标签设置属性

<!--选择器1~选择器2 {
    属性:值;
}-->
<style>
h1~p {
    color:red;
}
</style>
<h1>标题</h1>
<p>段落</p> <!--变红-->
<p>段落</p> <!--变红-->
<p>段落</p> <!--变红-->
<h2>标题</h2>
<p>段落</p>
<p>段落</p>
<p>段落</p>
序选择器(css3)

可以具体选择到同级别的某一个标签

<!--
1) first-child:只取同级别的第一个标签,不管是什么类型的,如果在段落1之前加上一个<h1>标签,那么段落1就不会被选中
格式:
选择器:first-child {
    属性:值;
}
2) first-of-type:取同级别的同类型的第一个标签,如过载段落1之前加上一个<h1>标签,那么段落1同样会会被选中
格式:
选择器:first-of-type {
    属性:值;
}
3) first(第一个)可以替换为last(最后一个)
4) nth-child(n):取同级别下的第n个标签设置属性,不区分类型,如果在段落1之前加上一个<h1>标签,那么段落6就不会被选中
格式:
选择器:nth-child(n) {
    属性:值;
}
5) nth-of-type(n):取同级别下的同类型第n个标签设置属性,区分类型
格式:
选择器:nth-of-type(n) {
    属性:值;
}
6) nth-last-of-type(n):取同级别下的同类型倒数第n个标签设置属性,区分类型
格式:
选择器:nth-last-of-type(n) {
    属性:值;
}
7) only-child:选中父元素中唯一的元素,不区分类型
格式:
选择器:only-child {
    属性:值;
}
8) only-of-type:选中父元素中类型唯一的元素,区分类型
格式:
选择器:only-of-type {
    属性:值;
}
-->
<style>
p:first-child {
    color:red;
}
p:first-of-type {
    color:blue;
}
p:nth-child(3) {
    color:yellow;
}
p:nth-of-type(2) {
    color:orange;
}
p:only-child {
    color:purple;
}
</style>
<p>段落1</p> <!--1.变红--><!--2.变蓝-->
<p>段落2</p> <!--4.变橙-->
<p>段落6</p> <!--3.变黄-->
<div>
<p>段落3</p>  <!--1.变红--><!--2.变蓝-->
<p>段落4</p>  <!--4.变橙-->
<p>段落5</p> <!--3.变黄-->
</div>
<div>
<p>段落7</p> <!--7.变紫-->
</div>
序选择器补充
<!--
1) nth-child(odd/even):取同级别下的第奇数/偶数个标签设置属性,不区分类型
格式:
选择器:nth-child(odd/even) {
    属性:值;
}
2) nth-of-type(odd/even):取同级别下的同类型的第奇数/偶数个个标签设置属性,不区分类型
格式:
选择器:nth-child(odd/even) {
    属性:值;
}
3) nth-child(xn+y):选择满足计算结果的标签。x,y是用户自定义的,n是一个计数器,从0开始递增。不区分类型
格式:
选择器:nth-child(xn+y) {
    属性:值;
}
-->
<style>
p:nth-child(odd) {
    color:yellow;
}
</style>
<p>段落1</p> <!--1.变黄-->
<p>段落2</p>
<p>段落3</p> <!--1.变黄-->
<p>段落4</p> 
<p>段落5</p> <!--1.变黄-->
<p>段落6</p>
<p>段落7</p> <!--1.变黄-->
通配符选择器

给当前界面上的所有标签设置属性。
注意:由于通配符选择器要遍历页面所有的标签,所以性能比较差,一般在企业开发中不会用到
格式:

<style>
* {
    padding:0;
    margin:0;
}
</style>
### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值