resnet+fpn

时间: 2023-08-06 17:05:39 浏览: 44
回答: ResNet+FPN是一种结合了ResNet和特征金字塔网络(FPN)的模型。ResNet是一种深层网络结构,通过使用Bottleneck模块来构建网络。Bottleneck模块在输入和输出之间添加了一个卷积层,用于扩展输入的通道数。ResNet的不同阶段(conv2_x, conv3_x, conv4_x, conv5_x)具有不同的尺寸和语义信息。而FPN的目的是实现更好的特征融合,通过将底层到高层的特征图进行融合,充分利用各个阶段提取到的特征。FPN的构建过程是通过取出在主干特征提取网络中不同阶段的结果来构造特征金字塔结构。P2-P5是用于预测物体的边界框(bbox)、边界框回归(box regression)和掩码(mask)的,而P2-P6则用于训练RPN(Region Proposal Network),其中P6只用于RPN网络中。通过结合ResNet和FPN,ResNet+FPN模型能够更好地融合多尺度的特征,提高物体检测和分割的性能。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [ResNet+ FPN网络结构](https://blog.csdn.net/weixin_43937959/article/details/122489181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

相关推荐

在 PyTorch 中使用 faster_rcnn_resnet50_fpn 模型,可以按照以下步骤进行: 1. 安装 PyTorch 和 TorchVision 库(如果未安装的话)。 2. 导入必要的库和模块: python import torch import torchvision from torchvision.models.detection.faster_rcnn import FastRCNNPredictor 3. 加载预训练模型 faster_rcnn_resnet50_fpn: python model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True) 4. 修改模型的分类器,将其调整为适合你的任务。由于 faster_rcnn_resnet50_fpn 是一个目标检测模型,它的分类器通常是用来检测物体类别的。如果你的任务不需要检测物体类别,可以将分类器替换为一个只有一个输出的线性层: python num_classes = 1 # 只检测一个类别 in_features = model.roi_heads.box_predictor.cls_score.in_features model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes) 5. 将模型转换为训练模式,并将其移动到所选设备(如GPU)上: python device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu') model.to(device) model.train() # 转换为训练模式 6. 训练模型,可以使用自己的数据集来训练模型,或者使用 TorchVision 中的数据集,如 Coco 或 Pascal VOC 数据集。 7. 在测试阶段,可以使用以下代码来检测图像中的物体: python # 定义图像 image = Image.open('test.jpg') # 转换为Tensor,并将其移动到设备上 image_tensor = torchvision.transforms.functional.to_tensor(image) image_tensor = image_tensor.to(device) # 执行推理 model.eval() with torch.no_grad(): outputs = model([image_tensor]) # 处理输出 boxes = outputs[0]['boxes'].cpu().numpy() # 物体框 scores = outputs[0]['scores'].cpu().numpy() # 物体分数 需要注意的是,faster_rcnn_resnet50_fpn 是一个较大的模型,需要较高的计算资源和训练时间。在训练和测试时,建议使用GPU来加速计算。
ResNet50-FPN算法的数学公式如下: 首先,使用ResNet50作为主干网络,提取图像的特征。假设输入图像为X,ResNet50网络的输出为F(X)。 接着,使用FPN算法对特征进行处理。设F1(X), F2(X), F3(X), F4(X), F5(X)分别表示ResNet50网络中5个不同层级的特征图。FPN算法会根据这些特征图生成一系列新的特征图,用于不同尺度的目标检测。设P1, P2, P3, P4分别表示FPN算法生成的4个特征金字塔。 在得到特征金字塔后,使用RPN算法生成一系列候选区域。设A为所有锚点的集合,每个锚点可以表示为(ai, bi),其中ai表示锚点的中心位置,bi表示锚点的大小。对于每个锚点(ai, bi),RPN算法会输出一系列候选区域(ai, bi, t1, t2, t3, t4),其中t1, t2, t3, t4表示候选区域的位置偏移量。 接下来,使用Fast R-CNN算法对候选区域进行分类和回归。对于每个候选区域,Fast R-CNN算法会提取特征,并将这些特征输入到分类器和回归器中进行分类和位置回归。设f表示特征提取函数,c为分类器,r为回归器,则对于候选区域(ai, bi, t1, t2, t3, t4),Fast R-CNN算法的输出为: (1) 分类概率:p = c(f(X, ai, bi, t1, t2, t3, t4)) (2) 位置偏移量:v = r(f(X, ai, bi, t1, t2, t3, t4)) 最后,根据分类器的结果和位置回归器的结果,对候选区域进行筛选和修正,得到最终的目标检测结果。具体而言,对于每个候选区域(ai, bi, t1, t2, t3, t4),根据分类概率p和位置偏移量v,可以计算出最终的检测框位置和分数: (1) 检测框位置:(x1, y1, x2, y2) = (ai + bi*t1, ai + bi*t2, ai + bi*t3, ai + bi*t4) (2) 检测分数:s = p 通过对所有候选区域进行筛选和修正,可以得到最终的目标检测结果。
### 回答1: FasterRCNN_ResNet50_FPN 是一种目标检测网络模型,它使用了 ResNet50 作为特征提取器,FPN(Feature Pyramid Network)来改善网络在不同尺度上的特征提取能力,并使用 Faster RCNN 的框架来进行目标检测。 ### 回答2: fasterrcnn_resnet50_fpn是一种常用的目标检测算法,它的全称为Faster Region-based Convolutional Neural Network with ResNet50 Feature Pyramid Network。fasterrcnn_resnet50_fpn算法是通过使用深度神经网络在图像中自动识别和定位目标,从而实现目标检测的。 fasterrcnn_resnet50_fpn算法主要包含以下部分: 1. 物体分类网络:fasterrcnn_resnet50_fpn算法使用ResNet50深度神经网络来识别图像中的物体。 2. 特征金字塔网络(PFN):fasterrcnn_resnet50_fpn算法通过构建金字塔状的特征图,可以在不同的层级上提取图像的不同特征,从而提高目标检测的准确率和速度。 3. 区域建议网络(RPN):fasterrcnn_resnet50_fpn算法通过使用特征金字塔网络(PFN)来生成物体检测的候选区域,RPN可以判断每个候选区域是否包含物体,如果包含物体,则送给分类网络进行进一步判断。 4. 检测框回归网络:fasterrcnn_resnet50_fpn算法通过使用卷积神经网络对目标的精确位置进行回归,从而输出最终的检测框。 fasterrcnn_resnet50_fpn算法的优势在于它使用了深度神经网络对图像进行特征提取和目标检测,从而可以获取更高的准确率和更快的检测速度。此外,fasterrcnn_resnet50_fpn算法还可以进行多目标检测,可以同时检测多个目标。 fasterrcnn_resnet50_fpn算法在目标检测领域具有广泛的应用,如人脸识别、车辆检测、文字检测等。它的高效性和准确性已经得到了业界的广泛认可和应用。 ### 回答3: fasterrcnn_resnet50_fpn是目标检测领域常用的一种模型,它的全称为“Faster R-CNN with ResNet-50-FPN”,其中Faster R-CNN是一种两阶段的目标检测框架,ResNet-50-FPN则是它所使用的本地特征提取网络。 在传统的目标检测方法中,一般使用滑动窗口(sliding window)来搜索目标。这种方法存在很多问题,比如计算量大、效率低、尺寸不同的目标难以检测等等。因此,Faster R-CNN提出了一种新的思路,即先利用一个分类网络(CNN)对图片进行特征提取,然后在提取出的特征图上,再使用一些预选框(anchors)来选出可能包含目标的区域,最后再对这些框进行分类和回归,从而得到最终的目标检测结果。 而ResNet-50-FPN则是一种强大的特征提取网络。它采用了残差连接(residual connections)来缓解训练深层网络时的梯度消失问题,同时还使用了特征金字塔网络(Feature Pyramid Network,FPN)来提取多层次的特征,从而使得算法更加稳健和精准。 fasterrcnn_resnet50_fpn不仅在单张图片上表现出色,而且在视频目标检测等领域也展现了出色的性能。它不仅能够检测出一个物体的位置和大小,还能够准确地进行分类和关键点识别。它的应用范围非常广泛,可以用于智能监控、自动驾驶、无人机航拍等领域,是目前目标检测领域研究的重要成果之一。
### 回答1: b'fasterrcnn_resnet50_fpn\xe7\xbb\x93\xe6\x9e\x84' 是一个使用 Faster R-CNN 算法和 ResNet50 FPN(Feature Pyramid Network)结构进行目标检测的模型。 ### 回答2: Fast R-CNN是目标检测中使用非常广泛的算法,但是由于使用了滑动窗口法来提取区域,导致其速度较慢。为了提高速度,Faster R-CNN加入了RPN(Region Proposal Network)来替代原来的滑动窗口法,实现了快速的区域提取。Fast R-CNN和Faster R-CNN都是单阶段目标检测算法,它们并没有对特征图进行进一步的处理,使得精度略有欠缺。 为了提高目标检测精度,ResNet和FPN(Feature Pyramid Network)被加入到Fast R-CNN和Faster R-CNN中。ResNet主要是通过使用残差模块来加强特征的传递,避免了深度网络中的梯度消失和梯度爆炸问题。FPN则是通过设计特殊的网络结构,将不同层次的特征图进行融合,实现了多尺度特征提取。这样,就可以更全面、准确地对目标进行检测。 在Fast R-CNN和Faster R-CNN的基础上,fasterrcnn_resnet50_fpn结构在ResNet和FPN的基础上进行了进一步的优化。具体来说,它通过使用ResNet50作为骨干网络,将Conv1~Conv4的特征图输出给FPN来进行多尺度特征融合,最后通过ROI Pooling输出RoI特征图,实现目标检测。相比于原来的Fast R-CNN和Faster R-CNN,fasterrcnn_resnet50_fpn结构既提高了检测精度,又实现了快速的目标检测。它在对标准数据集上进行的测试表明,其目标检测精度已经接近于当前最优算法的水平。 ### 回答3: fasterrcnn_resnet50_fpn是一种常用的目标检测模型,是基于深度学习的Faster R-CNN算法在ResNet50和FPN架构的基础上进行改进得到的。它的主要特点是能够高效地检测出图片中出现的多个目标物体,具有较高的准确度和鲁棒性。 fasterrcnn_resnet50_fpn的架构主要分为两个阶段:提取特征和目标检测。 在特征提取阶段,使用ResNet50网络对输入图片进行特征提取,得到四个不同尺度的特征图,即C2、C3、C4、C5。然后使用FPN网络将这四个特征图进行合并,得到具有多种尺度信息的融合特征图。这样可以在不同的目标大小和尺度下都能够检测到目标。 在目标检测阶段,通过对融合特征图进行RoI(region of interest)对齐和裁剪,得到感兴趣的特征图,并用分类和回归器对RoI进行分类和位置推导。其中分类器用于判断RoI是否包含目标,回归器用于得到目标的位置和大小信息。 fasterrcnn_resnet50_fpn的优点在于,它可以快速准确地检测多种目标,因为它采用的是多阶段的特征提取和融合,使得网络能够较好地适应不同尺度目标物体。优化的RoI对齐和裁剪方式可以更好地保留目标的细节信息,从而提高检测准确度。同时,该模型在计算效率和精度上,也具有不错的平衡性,适用于多种计算环境。缺点是模型过于复杂,需要较多的计算、存储和优化成本。
ResNet50-FPN算法的每一步数学公式如下: 1. 使用ResNet50作为主干网络,提取图像的特征。假设输入图像为X,ResNet50网络的输出为F(X)。 2. 使用FPN算法对特征进行处理。设F1(X), F2(X), F3(X), F4(X), F5(X)分别表示ResNet50网络中5个不同层级的特征图。FPN算法会根据这些特征图生成一系列新的特征图,用于不同尺度的目标检测。具体而言,FPN算法会对F5(X)进行上采样操作,然后与F4(X)相加得到P5;再对P5进行上采样操作,然后与F3(X)相加得到P4;再对P4进行上采样操作,然后与F2(X)相加得到P3;最后对P3进行上采样操作,然后与F1(X)相加得到P2和P1。设Pi表示FPN算法生成的第i个特征图,其中i=1,2,3,4,5。 3. 在得到特征金字塔后,使用RPN算法生成一系列候选区域。设A为所有锚点的集合,每个锚点可以表示为(ai, bi),其中ai表示锚点的中心位置,bi表示锚点的大小。对于每个锚点(ai, bi),RPN算法会根据Pi生成一系列候选区域(ai, bi, t1, t2, t3, t4),其中t1, t2, t3, t4表示候选区域的位置偏移量。具体而言,RPN算法会对Pi进行卷积操作,然后分别对卷积结果进行分类和回归,得到每个锚点的分类概率和位置偏移量。 4. 使用Fast R-CNN算法对候选区域进行分类和回归。对于每个候选区域,Fast R-CNN算法会提取特征,并将这些特征输入到分类器和回归器中进行分类和位置回归。设f表示特征提取函数,c为分类器,r为回归器,则对于候选区域(ai, bi, t1, t2, t3, t4),Fast R-CNN算法的输出为: (1) 分类概率:p = c(f(X, ai, bi, t1, t2, t3, t4)) (2) 位置偏移量:v = r(f(X, ai, bi, t1, t2, t3, t4)) 5. 根据分类器的结果和位置回归器的结果,对候选区域进行筛选和修正,得到最终的目标检测结果。具体而言,对于每个候选区域(ai, bi, t1, t2, t3, t4),根据分类概率p和位置偏移量v,可以计算出最终的检测框位置和分数: (1) 检测框位置:(x1, y1, x2, y2) = (ai + bi*t1 + v1, ai + bi*t2 + v2, ai + bi*t3 + v3, ai + bi*t4 + v4) (2) 检测分数:s = p 通过对所有候选区域进行筛选和修正,可以得到最终的目标检测结果。
以下是使用PyTorch实现FPN的示例代码: python import torch.nn as nn import torch.nn.functional as F class FPN(nn.Module): def __init__(self, block, layers): super(FPN, self).__init__() self.inplanes = 64 self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False) self.bn1 = nn.BatchNorm2d(64) self.layer1 = self._make_layer(block, 64, layers[0]) self.layer2 = self._make_layer(block, 128, layers[1], stride=2) self.layer3 = self._make_layer(block, 256, layers[2], stride=2) self.layer4 = self._make_layer(block, 512, layers[3], stride=2) self.toplayer = nn.Conv2d(2048, 256, kernel_size=1, stride=1, padding=0) self.smooth1 = nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1) self.smooth2 = nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1) self.smooth3 = nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1) self.latlayer1 = nn.Conv2d(1024, 256, kernel_size=1, stride=1, padding=0) self.latlayer2 = nn.Conv2d(512, 256, kernel_size=1, stride=1, padding=0) self.latlayer3 = nn.Conv2d(256, 256, kernel_size=1, stride=1, padding=0) def _make_layer(self, block, planes, blocks, stride=1): downsample = None if stride != 1 or self.inplanes != planes * block.expansion: downsample = nn.Sequential( nn.Conv2d(self.inplanes, planes * block.expansion, kernel_size=1, stride=stride, bias=False), nn.BatchNorm2d(planes * block.expansion), ) layers = [] layers.append(block(self.inplanes, planes, stride, downsample)) self.inplanes = planes * block.expansion for i in range(1, blocks): layers.append(block(self.inplanes, planes)) return nn.Sequential(*layers) def _upsample_add(self, x, y): _, _, H, W = y.size() return F.upsample(x, size=(H, W), mode='bilinear') + y def forward(self, x): c1 = F.relu(self.bn1(self.conv1(x))) c1 = F.max_pool2d(c1, kernel_size=3, stride=2, padding=1) c2 = self.layer1(c1) c3 = self.layer2(c2) c4 = self.layer3(c3) c5 = self.layer4(c4) p5 = self.toplayer(c5) p4 = self._upsample_add(p5, self.latlayer1(c4)) p3 = self._upsample_add(p4, self.latlayer2(c3)) p2 = self._upsample_add(p3, self.latlayer3(c2)) p4 = self.smooth1(p4) p3 = self.smooth2(p3) p2 = self.smooth3(p2) return p2, p3, p4, p5 其中,block参数指的是ResNet中的基本块类型,例如BasicBlock或Bottleneck;layers参数指的是ResNet中每个stage中基本块的数量,例如[3, 4, 6, 3]表示ResNet50。在FPN中,我们首先通过ResNet的前四个stage得到c2、c3、c4和c5特征层,然后通过自下而上的方式将这些特征层融合起来,得到p2、p3、p4和p5特征层。最后,我们对这些特征层进行平滑处理,以便更好地进行目标检测。
FPN(FPN是一种特征金字塔网络)是在目标检测中常用的一种网络结构,用于处理不同尺度的特征图。在mmdetection中,FPN的参数配置可以在配置文件中的neck字典中进行设置。 在mmdetection的配置文件中,可以找到如下FPN参数配置: - type: FPN的类型,这里是指定为"FPN"。 - in_channels: 输入特征图的通道数,对应ResNet输出的4个尺度特征图的通道数。 - out_channels: 输出特征图的通道数。 - start_level: 额外输出层的特征图来源的起始索引,即从哪一个特征图开始使用。这里是从第二个特征图开始使用,即index为1的特征图。 - add_extra_convs: 额外输出层的特征图的生成方式,这里是"on_input",表示在输入特征图上生成额外的特征图。 - num_outs: FPN输出特征图的个数。 在mmdetection中,FPN的具体实现可以在两个文件中找到: 1. mmdet/models/necks/fpn.py:这个文件中包含了FPN的初始化过程。其中,lateral_convs和fpn_convs分别是最开始的一系列1x1卷积和最后的一系列3x3卷积。它们的输入特征通道数是不一样的。 2. mmdet/models/detectors/two_stage.py:这个文件中的extract_feat函数是用来提取特征的,其中调用了FPN的过程。 具体而言,在提取特征时,首先使用backbone提取特征x,然后如果指定了neck(FPN),就将特征x传入FPN中进行处理。最后返回处理后的特征。 值得注意的是,在使用ResNet作为backbone时,FPN会使用每个stage最后一个残差块的特征激活作为特征图的输出。这一点可以在引用中的描述中找到。 以上是关于mmdetection中FPN的代码相关信息。123 #### 引用[.reference_title] - *1* [【MMDet Note】MMDetection中Neck之FPN代码理解与解读](https://blog.csdn.net/weixin_47691066/article/details/125995663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MMDetection2.XX-Necks之FPN源码解析](https://blog.csdn.net/qq_42308217/article/details/122289709)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MMdetection之necks之FPN](https://blog.csdn.net/weixin_45085689/article/details/116609577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

最新推荐

基于单片机温度控制系统设计--大学毕业论文.doc

基于单片机温度控制系统设计--大学毕业论文.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

如何使用Promise.all()方法?

Promise.all()方法可以将多个Promise实例包装成一个新的Promise实例,当所有的Promise实例都成功时,返回的是一个结果数组,当其中一个Promise实例失败时,返回的是该Promise实例的错误信息。使用Promise.all()方法可以方便地处理多个异步操作的结果。 以下是使用Promise.all()方法的示例代码: ```javascript const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = Promise.resolve(3)

android studio设置文档

android studio默认设置文档

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�

MutableDenseMatrix' object has no attribute 'flatten'

根据提供的引用内容,可以看出这是一个关于Python中矩阵操作的问题。具体来说,'MutableDenseMatrix' object has no attribute 'flatten'的错误提示表明,矩阵对象没有名为'flatten'的属性。因此,我们需要使用其他方法来展平该矩阵对象。 以下是一种可能的解决方案: ```python # 导入必要的库 from sympy import Matrix # 创建一个矩阵对象 mat = Matrix([[1, 2], [3, 4]]) # 将矩阵对象转换为列表 mat_list = mat.tolist() # 将列表展平 flat

MySQL 75道面试题及答案.docx

MySQL 75道面试题及答案.docx

HAL多学科开放获取档案库的作用及代理重加密和认证委托的研究

0HAL编号:tel-038172580https://theses.hal.science/tel-038172580提交日期:2022年10月17日0HAL是一个多学科开放获取档案库,用于存储和传播科学研究文档,无论其是否发表。这些文档可以来自法国或国外的教育和研究机构,也可以来自公共或私人研究中心。0HAL多学科开放获取档案库旨在存储和传播法国或国外的教育和研究机构、公共或私人实验室发表或未发表的研究文档。0代理重加密和认证委托的贡献0Anass Sbai0引用此版本:0Anass Sbai. 代理重加密和认证委托的贡献. 离散数学[cs.DM]. 皮卡第朱尔大学, 2021. 法语. �NNT:2021AMIE0032�. �tel-03817258�0博士学位论文0专业“计算机科学”0提交给科技与健康学院博士学位学校0皮卡第朱尔大学0由0Anass SBAI0获得皮卡第朱尔大学博士学位0代理重加密和认证委托的贡献0于2021年7月5日,在评审人的意见后,面向考试委员会进行

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中,可以使用二分查找的方法来提高查找效率。具体实现如下: ```python def insert_num(arr, num): left = 0 right = len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == num: arr.insert(mid, num) return arr elif arr[m

基于单片机的语音门铃设计毕业论文.doc

基于单片机的语音门铃设计毕业论文.doc