【论文复现】自动化细胞核分割与特征分析
📝个人主页🌹:Eternity._
🌹🌹期待您的关注 🌹🌹
❀自动化细胞核分割与特征分析
- 引言
- 1. 效果展示
- 2. HoverNet概述
- 3. HoverNet原理分析
- 整体网络框架
- 实例分割原理
- 4. HoverNet评估结果
- 5. 复现过程
- 6. 细胞核特征应用说明
- 7. 参考文献
- 8. 总结
- 备注
引言
细胞核的分割与分类在医学研究和临床诊断中扮演着至关重要的角色。精确的细胞核分割技术能够显著提升医生对细胞核形态学特征的识别与分析能力,进而在疾病诊断、癌症筛查以及药物开发方面提供有力支持。HoverNet作为一种前沿的深度学习网络模型,具备同时进行细胞核分割与分类的强大功能。除了这两项基本任务,进一步提取细胞核的关键特征,诸如面积、半径、形状等,能够深入探究细胞核的生物学特性,这对于肿瘤学研究、病理诊断等多个医学领域都具有重要的实用价值。
本文将依托Pytorch框架,实现HoverNet模型对细胞核的分割与分类,并在此基础上自主完成细胞核特征的提取工作,旨在为医学领域的相关研究提供有力工具。此外,该技术还可应用于计算病理学的相关研究,增强相关文章的可解释性。
本文能够实现从细胞核分割和分类到提取细胞核相关特征全自动化。以及最后分析了提取到的细胞核特征可以有哪些应用(主要是进行了举例说明)。
1. 效果展示
图像链接
2. HoverNet概述
HoVer-Net是一种精心构思的多分支深度学习架构,它专为应对多组织显微图像中细胞核实例分割与精确分类这一复杂挑战而打造。该网络凭借其独特的策略,成功攻克了细胞核在密集区域难以清晰辨识的难题,并实现了对各类细胞核类型的精细划分。此外,HoVer-Net还巧妙地融入了一个专门的上采样分支,这一设计旨在进一步细化每个成功分割出的细胞核实例的分类。该分支充分利用了高级语义信息,并结合精心规划的分类机制,能够精确识别每个细胞核的类别,为医学研究提供了极具价值的细胞级信息。
本文所涉及的所有资源的获取方式:这里
3. HoverNet原理分析
整体网络框架
上图中展示了整体的网络框架。HoverNet使用了一个深度神经网络来提取图像中的重要特征。这个网络是基于一个叫做“预激活残差网络”(Preact-ResNet50)的模型,但为了保留更多的细节信息,对这个模型做了一些调整,比如减少了图像缩小的次数。然后,网络通过三个不同的分支来处理图像:
- 核像素分支(NP分支):判断每个像素是否属于核(细胞核)还是背景。
- HoVer分支:计算核像素到其中心的水平和垂直距离。这有助于将紧挨在一起的核分开。
- 核分类分支(NC分支):根据前两个分支的信息,进一步确定每个核的类型。
这样设计整体网络结构能够提高模型性能和效率主要是:
-
上采样分支的架构设计
每个上采样分支都是通过一系列的上采样操作和“密集连接单元”来构建的。你可以把“密集连接单元”想象成一组很小且廉价的计算模块,堆叠多个这样的模块能够使模型获得更大的视野范围(即感受野),并且所需的计算参数更少。这种方式相比直接使用大卷积核的单一操作,更高效地传播梯度,帮助模型更好地训练,如图中Upsample模块。 -
跳跃连接与特征融合
在模型中,通过跳跃连接(类似于在建筑中搭桥梁)将编码器(负责特征提取的部分)中的信息传递到上采样部分。这里,模型使用了“加法”而不是“拼接”的方式来融合这些信息。这种方法特别有助于图像分割任务,因为它能更精确地描绘出物体的边界。 -
有效卷积与边界预测
在上采样过程中,使用了“有效卷积”来确保边界的预测结果不会出现问题。由于这种卷积操作,输出图像的尺寸会比输入图像小一些。 -
共享编码器
与其为每个任务(比如分割和分类)创建单独的网络,不如使用一个共享的编码器(特征提取部分),这样可以同时训练分割和分类任务的模型。这不仅减少了训练时间,还能利用不同任务间的共享信息,提升整体性能。 -
根据标签调整模型
模型可以根据是否有核的分类标签来调整其工作方式。如果没有分类标签,模型只会执行分割任务;如果有分类标签,则会同时进行分割和分类。
这个方法确保不仅能准确分割出每个核,还能正确分类它们的类型。在这里HoVer分支是这篇文章能够取得非常好的重要原因之一。
实例分割原理
HoVer分支分支使用水平和垂直距离来帮助分开紧挨在一起的细胞核,其背后的原理是利用了这些距离信息来识别和分离相邻的核。如下图:
具体来说,HoVer分支会计算每个核像素到其质心(核的中心点)的水平和垂直距离。这些距离信息有助于在以下几个方面起作用:
识别边界:当两个或多个核紧挨在一起时,常常会导致它们的边界变得模糊,难以区分。通过计算每个像素到质心的水平和垂直距离,可以更清晰地确定哪些像素更接近哪个质心。这有助于识别核的实际边界。
分离相邻核:对于相邻的核,HoVer分支生成的距离图会在这些核的交界处表现出显著的变化。因为每个核的质心不同,越靠近核质心的像素,其水平和垂直距离会变得更小,而靠近核边界的像素,这些距离值会变得不一致或剧烈变化。因此,利用这些距离信息可以有效地分离出紧挨在一起的核。
避免错误合并:传统的分割方法可能会错误地将相邻的核合并成一个整体,而HoVer分支通过分析这些距离,确保每个核都能被正确地分离和识别,而不会被错误地合并。
4. HoverNet评估结果
不同数据集得到的分割和分类结果。
不同数据集不同模型评估指标对比。
5. 复现过程
- 源码获取:
可以通过这个链接从github上下载:https://github.com/vqdang/hover_net。但是,从这里下载的链接并没有提供模型的预训练权重,需要自己寻找。所以建议可以直接下载我提供的附件。附件如图:
- 环境配置:
创建环境conda env create -f environment.yml
利用conda这一开源的、强大的包与环境管理工具,可以方便地设置、运行及更新软件包及其依赖项。为了创建一个新的Python环境,可以执行conda env create命令,并借助-f选项指定一个名为environment.yml的配置文件。这个文件详细列出了新环境所需的所有软件包及其特定版本,从而确保环境的一致性和可重复性。从下图可以看到虽然创建以基本的HoverNet环境,但是没有pytorch。
所以需要自行在创建的环境中安装一个基于cuda的pytorch。
-
激活环境
conda activate hovernet
-
安装pytorch
pip install torch==1.6.0+cu118 torchvision==0.15.1+cu118 torchaudio==1.6.1+cu118 -f https://download.pytorch.org/whl/torch_stable.html
这里pytorch的安装可以参考官网,根据自己的显卡版本安装。
- 代码库结构:
下面是这个项目代码库的主要目录和文件的详细解释:
代码库结构在附件中的这个文件夹下:ExtractCellularFeatureFrompng
dataloader:包含数据加载器和数据增强流程的代码。数据加载器负责从存储介质中读取数据并将其组织成适合模型训练和推理的格式。
models:包含模型定义、主要运行步骤和超参数设置。这是定义神经网络结构、选择损失函数、优化器等核心组件的地方。
dataset:主要用户存放输入图像和输出的文件(包括分割后的图片,细胞轮廓等)。
run_utils:定义训练/验证循环和回调函数。训练循环是模型学习数据的过程,而回调函数可以在训练过程中的特定时刻执行额外的操作,如保存模型、打印日志等。
run_tile.sh:用于进行分割组织病理学图像中的肿瘤区域的patch。
run_wis.sh:用于进行分割整个组织病理学图像的细胞。
cell_seg_feature.py:提取分割好的细胞核特征脚本。
ExtractCellularFeatureFromPng.sh:从分割分类到提取特征完整的脚本。
- 提取的细胞核特征种类:
特征种类 | 相关描述 |
---|---|
面积,area | 细胞占据的二维空间大小,是评估细胞大小的基本参数。 |
边界粗糙度,bbox area | 描述细胞边缘的不规则程度,可以通过计算边缘上相邻点之间距离的标准差来估算。 |
凸包面积,convex area | 能包含细胞所有点的最小凸多边形的面积,用于评估细胞的“外凸”程度。 |
离心率,eccentricity | 描述细胞形状相对于圆形的拉长程度,通常定义为细胞主轴与短轴之比。 |
等效直径,equivalent diameter | 具有与细胞相同面积的圆的直径,是另一种衡量细胞大小的参数。 |
欧拉数,euler number | 拓扑学中的一个概念,对于二维形状,它等于连通区域的数量减去孔洞的数量。在细胞形态学中,可以用来描述细胞内部结构的复杂性。 |
圆形度,extent | 也称为圆度或形状因子,是细胞面积与其周长平方之比的四倍π的倒数。它接近1时表示细胞接近圆形。 |
费雷特,filler area | 在多个方向上测量的细胞最大和最小宽度,提供了细胞形状在不同方向上的信息。 |
惯性矩,inertia tensor eigvals x | 描述细胞形状关于其质心旋转的难易程度,包括主轴惯性矩和次轴惯性矩,可用于进一步分析细胞的取向和形状稳定性。x方向 |
惯性矩,inertia tensor eigvals y | 描述细胞形状关于其质心旋转的难易程度,包括主轴惯性矩和次轴惯性矩,可用于进一步分析细胞的取向和形状稳定性。y方向 |
长轴长度,major axis length | 细胞形状中最长的直径。 |
短轴长度,Minor Axis Length | 细胞形状中最短的直径。 |
位置,orientation | 与区域具有相同二阶矩的椭圆的长轴与x轴之间的角度 |
周长,perimeter | 围绕细胞边缘的长度,反映了细胞的尺寸和边界的复杂性。 |
固实度,Solidity | 细胞面积与其凸包面积之比,反映了细胞边界的凹凸程度。 |
在细胞生物学和医学成像领域,细胞形态的分析对于理解细胞的生理状态、病理变化以及细胞间的相互作用至关重要。为了精确描述和量化细胞形态,科学家们开发了多种形状描述符(也称为形态学参数)。这些描述符可以捕获细胞形态的关键特征,如大小、形状、边缘复杂度等。以下是15个常用的定量测量的形状描述符的概述,它们被广泛用于评估细胞形态。
提取细胞核特征过程:
def CalCellFeature(input_path,output_path):json_path = glob.glob(input_path + "/*.json")for json_file_path in json_path:cell_feature_data = []cell_type_list = []type_prob_list = []cell_centroid_list = []print("running:",json_file_path)G_name = os.path.basename(json_file_path)[:-5]with open(json_file_path, "r") as file:json_data = json.load(file)for key, value in json_data["nuc"].items():contour_data = value["contour"]cell_type = value["type"]type_prob = value["type_prob"]cell_centroid = value["centroid"]cell_type_list.append(cell_type)type_prob_list.append(type_prob)cell_centroid_list.append(cell_centroid)# 计算细胞轮廓图像的尺寸contour_width = max(point[0] for point in contour_data) + 1contour_height = max(point[1] for point in contour_data) + 1# 创建与细胞轮廓contour相同形状的二值图像contour_image = np.zeros((contour_height, contour_width), dtype=np.uint8)for point in contour_data:contour_image[point[1], point[0]] = 1# 使用measure.regionprops函数计算区域属性regions = measure.regionprops(contour_image)# 遍历每个区域
........
-
代码执行过程:
进入到ExtractCellularFeatureFrompng文件夹后,执行:sh ExtractCellularFeatureFrompng.sh
Linux环境下,在Windows中不支持shell,当然也可以自行查看如何在Windows中使用shell。但是这个代码最好在有GPU的环境中运行。
- 结果文件:
图中的input_png是输入图片,可以更改为自己的数据;1:是HoverNet分割产生的结果文件,包括分割图和细胞轮廓。2:是细胞核特征提取产生的结果文件。里面包含了上述表格中的15个特征。产生的分割图和特征如下:
6. 细胞核特征应用说明
- 首先分析了提取到的面积(area)特征:它是细胞占据的二维空间大小,是评估细胞大小的基本参数。将不同细胞的种类进行分组后得到的比较图如下:
由图可知,肿瘤细胞在面积上,或者说大小上与其他类型的细胞存在明显差异,(也即是肿瘤细胞更大)。这能够说明虽然单纯的肿瘤细胞面积大小并不能直接确定肿瘤的恶性程度,但通常来说,恶性程度较高的肿瘤细胞往往具有更大的面积和更强的侵袭性。
同时了解肿瘤细胞的形态和大小特征有助于医生制定更合适的治疗方案。如果肿瘤细胞面积较大且恶性程度高,可能需要采用更积极的治疗措施(如手术切除、化疗、放疗等)。
- 其次分析了提取到的凸包面积在不同类型细胞中的差异:能包含细胞所有点的最小凸多边形的面积,用于评估细胞的“外凸”程度。
由图可知肿瘤细胞的凸包面积比其他类型的细胞要大,这说明:肿瘤细胞的增殖活性增强,肿瘤细胞通常具有比正常细胞更快的增殖速度。凸面积的增大可能反映了肿瘤细胞在增殖过程中所占据的更大空间,这是其快速增殖的一个直接表现。细胞扩张快,随着肿瘤细胞的分裂和增殖,它们会不断扩张并占据更多的组织空间,从而导致凸面积的增大。
- 接着分析了提取到的等效直径equivalent diameter在不同类型细胞中的差异:具有与细胞相同面积的圆的直径,是另一种衡量细胞大小的参数。
很明显肿瘤细胞的该值也是比较大的,等效直径的增大可能是肿瘤细胞异型性的一种表现,反映了它们在生长过程中形态上的显著变化。其中异型性是指它们与正常细胞在形态和结构上的差异程度。
- 最后分析了肿瘤细胞和淋巴细胞的数量差异:
在该柱状图中,淋巴细胞的数量明显多于肿瘤细胞,这说明:淋巴细胞是免疫系统的重要组成部分,负责识别和清除外来病原体及异常细胞。当体内存在肿瘤细胞时,免疫系统会启动免疫应答,激活淋巴细胞以攻击和清除这些异常细胞。因此,淋巴细胞数量增多可能表明机体的免疫反应正在积极应对肿瘤细胞。
注:上述图像1,2,3来自我们运行后产生的test1.csv文件中的数据,图像4来自test2.csv产生的数据。所有图像的画法均来自该网站:https://hiplot.com.cn/cloud-tool/drawing-tool/list
7. 参考文献
- 1.Graham S, Vu Q D, Raza S E A, et al. Hover-net: Simultaneous segmentation and classification of nuclei in multi-tissue histology images[J]. Medical image analysis, 2019, 58: 101563.
- 2.Lu W, Toss M, Dawood M, et al. SlideGraph+: Whole slide image level graphs to predict HER2 status in breast cancer[J]. Medical Image Analysis, 2022, 80: 102486.
8. 总结
HoverNet不仅在分割精度上实现了显著提升,还通过融合多任务学习策略有效降低了计算成本,展现了其在各类细胞图像数据集上的卓越性能,尤其是在复杂背景中的细胞核识别与分类任务上,其鲁棒性和准确性尤为突出。
该网络的多任务架构实现了分割与分类的并行处理,这一创新极大地简化了操作流程,加速了全面分析结果的获取。在临床诊断和病理分析的实际应用中,这种高效的处理机制能够大幅缩减分析时间,显著提升医疗工作的效率。
在细胞特征提取层面,HoverNet通过对分割后的细胞核进行几何特征(如面积、半径、形状因子等)的提取,提供了更为详尽的细胞核信息。这些信息在肿瘤检测、细胞形态学分析等领域具有广泛应用价值,同时也为深入的生物学研究奠定了坚实基础。例如,利用细胞核的面积和形状特征,可以精确区分不同类型的癌细胞,辅助医生做出更为精确的诊断。
通过展示这些特征提取及相关应用的结果,可以生成丰富的图片资料,不仅充实了研究内容,还为后续的机器学习模型训练或统计分析提供了更为全面的数据支持。这种方法将复杂的图像处理过程转化为直观易懂的数值数据,降低了研究门槛,促进了细胞形态与疾病关系探索的深入发展。
备注
附件下载完成后,首先看ExtractCellularFeature.md,其次找到ExtractCellularFeatureFromPng.sh这个文件,该文档集成度非常高,只要环境配置没有问题,可以直接实现分割分类和细胞核特征提取。要了解详细过程请参考readme.md。
编程未来,从这里启航!解锁无限创意,让每一行代码都成为你通往成功的阶梯,帮助更多人欣赏与学习!
更多内容详见:这里
相关文章:
【论文复现】自动化细胞核分割与特征分析
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀自动化细胞核分割与特征分析 引言1. 效果展示2. HoverNet概述3. HoverNet原理分析整体网络框架实例分割原理 4. HoverNet评估结果5. 复现过程…...
排序算法 -快速排序
文章目录 1. 快速排序(Quick Sort)1.1、 简介1.2、 快速排序的步骤 2. Hoare 版本2.1、 基本思路1. 分区(Partition)2. 基准选择(Pivot Selection)3. 递归排序(Recursive Sorting) 2…...
K8S 查看pod节点的磁盘和内存使用情况
查看某个节点的磁盘使用率: kubectl exec -it pod名称 -n 命名空间 – df -h 查询所有节点的已使用内存: kubectl top pods --all-namespaces | grep itsm 查询某个节点的总内存, kubectl describe pod itsr-domain-59f4ff5854-hzb68 --nam…...
华为HCIP——MSTP/RSTP与STP的兼容性
一、MSTP/RSTP与STP的兼容性的原理: 1.BPDU版本号识别:运行MSTP/RSTP协议的交换机会根据收到的BPDU(Bridge Protocol Data Unit,桥协议数据单元)版本号信息自动判断与之相连的交换机的运行模式。如果收到的是STP BPDU…...
AI 大模型如何重塑软件开发流程:现状与未来展望
随着人工智能技术的飞速发展,AI 大模型的出现正在深刻改变软件开发行业的传统模式。从代码生成到智能测试,AI 已渗透到软件开发的各个环节,为开发者提供了前所未有的效率提升,同时也带来了全新的挑战与思考。在本文中,…...
3步实现贪吃蛇
方法很简单,打开页面,复制,粘贴 一.整体思维架构 我们根据游戏的开始,运行,结束,将整个游戏划分成三个部分。在每个部分下面又划分出多个功能,接下来我们就根据模块一一实现功能。 二.Gamesta…...
华东师范大学数学分析第五版PDF习题答案上册及下册
“数学分析”是数学专业最重要的一门基础课程,也是报考数学类专业硕士研究生的专业考试科目。为了帮助、指导广大读者学好这门课程,编者编写了与华东师范大学数学科学学院主编的《数学分析》(第五版)配套的辅导用书,以帮助读者加深对基本概念…...
MySQL之联合查询
前文我们了解到了数据库设计的范式要求,故生活中很多相互关联的数据被拆分开来,但彼此之间通过某种条件链接,此文联合查询就是通过多表之间的连接关系,来查询我们想要的数据,即 《联合查询》 1. 联合查询简介 1.1 为什…...
[C/C++] 定位新表达式 placement new
在C中,表达式 new (ptr) T(); 展示了一种特殊的内存分配和对象构造方式,这被称为定位新表达式(placement new)。 通常,当我们使用 new 关键字时,它会在堆上动态分配内存,并调用相应的构造函数来…...
【MySQL】MySQL的笛卡尔积现象是什么?简单说说
笛卡尔积好像是个科学家,也是个学术概念,在MySQL中表示交叉连接,即:匹配一切所有的可能 举例如下: 准备两张表 【employee表】 emp_idlast_namedept_id1Smith12Johnson2 【department表】 dept_iddepartment_nam…...
《InsCode AI IDE:编程新时代的引领者》
《InsCode AI IDE:编程新时代的引领者》 一、InsCode AI IDE 的诞生与亮相二、独特功能与优势(一)智能编程体验(二)多语言支持与功能迭代 三、实际应用与案例(一)游戏开发案例(二&am…...
微搭低代码私有化部署搭建教程
目录 1 下载远程工具2 查看服务器配置3 下载部署包4 安装部署包5 系统登录总结 最近微搭推出了私有化部署版本,正好官方赠送了我一台云服务器,练习一下部署的过程,本篇作为一个实践的记录 1 下载远程工具 一般我们使用的是云服务器ÿ…...
【在Linux世界中追寻伟大的One Piece】多路转接epoll(续)
目录 1 -> epoll的工作方式 1.1 -> 水平触发(Level Triggered)工作模式 1.2 -> 边缘触发(Edge Triggered)工作模式 2 -> 对比LT与ET 3 -> 理解ET模式和非阻塞文件描述符 4 -> epoll的使用场景 5 -> epoll示例 5.1 -> epoll服务器(LT模式) 5.2…...
【不写for循环】玩玩行列
利用numpy的并行操作可以比纯用Python的list快很多,不仅如此,代码往往精简得多。 So, 这篇来讲讲进阶的广播和花哨索引操作,少写几个for循环()。 目录 一个二维的例题 一个三维的例题 解法一 解法二 更难的三维例题…...
【Nginx】反向代理Https时相关参数:
在Nginx代理后台HTTPS服务时,有几个关键的参数需要配置,以确保代理服务器能够正确地与后端服务器进行通信。一些重要参数的介绍: proxy_ssl_server_name:这个参数用于指定是否在TLS握手时通过SNI(Server Name Indicati…...
第 17 章 - Go语言 上下文( Context )
在Go语言中,context包为跨API和进程边界传播截止时间、取消信号和其他请求范围值提供了一种方式。它主要应用于网络服务器和长时间运行的后台任务中,用于控制一组goroutine的生命周期。下面我们将详细介绍context的定义、使用场景、取消和超时机制&#…...
Android Framework AMS(16)进程管理
该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读AMS 进程方面的知识。关注思维导图中左上侧部分即可。 我们本章节主要是对Android进程管理相关知识有一个基本的了解。先来了解下L…...
STM32设计防丢防摔智能行李箱
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展,嵌入式系统、物联网技术、智能设备…...
【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法
博主介绍:✌全网粉丝21W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
ML 系列: 第 23 节 — 离散概率分布 (多项式分布)
目录 一、说明 二、多项式分布公式 2.1 多项式分布的解释 2.2 示例 2.3 特殊情况:二项分布 2.4 期望值 (Mean) 2.5 方差 三、总结 3.1 python示例 一、说明 伯努利分布对这样一种情况进行建模:随机变量可以采用两个可能的值&#…...
Webpack 1.13.2 执行 shell 命令解决 打印时没有背景色和文字颜色的问题
这是因为 Webpack 1.13.2 不支持新的插件钩子 API。Webpack 1 的插件系统使用的是 plugin 方法,而不是 Webpack 4 中的 hooks。 在 Webpack 1 中,你可以使用以下代码来确保 sed 命令在打包完成后执行: const { exec } require(child_proce…...
C++构造函数详解
构造函数详解:C 中对象初始化与构造函数的使用 在 C 中,构造函数是一种特殊的成员函数,它在创建对象时自动调用,用来初始化对象的状态。构造函数帮助我们确保每个对象在被创建时就处于一个有效的状态,并且在不传递任何…...
POI实现根据PPTX模板渲染PPT
目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…...
【论文模型复现】深度学习、地质流体识别、交叉学科融合?什么情况,让我们来看看
文献:蓝茜茜,张逸伦,康志宏.基于深度学习的复杂储层流体性质测井识别——以车排子油田某井区为例[J].科学技术与工程,2020,20(29):11923-11930. 本文目录 一、前言二、文献阅读-基于深度学习的复杂储层流体性质测井识别2.1 摘要2.2 当前研究不足2.3 本文创新2.4 论文…...
树的直径计算:算法详解与实现
树的直径计算:算法详解与实现 1. 引言2. 算法概述3. 伪代码实现4. C语言实现5. 算法分析6. 结论在图论中,树的直径是一个关键概念,它表示树中任意两点间最长路径的长度。对于给定的树T=(V,E),其中V是顶点集,E是边集,树的直径定义为所有顶点对(u,v)之间最短路径的最大值。…...
conda创建 、查看、 激活、删除 python 虚拟环境
1、创建 python 虚拟环境 ,假设该环境命名为 “name”。 conda create -n name python3.11 2、查看 python 虚拟环境。 conda info -e 3、激活使用 python 虚拟环境。 conda activate name 4、删除 python 虚拟环境 conda remove -n name --all 助力快速掌握数据集…...
vs2022搭建opencv开发环境
1 下载OpenCV库 https://opencv.org/ 下载对应版本然后进行安装 将bin目录添加到系统环境变量opencv\build\x64\vc16\bin 复制该路径 打开高级设置添加环境变量 vs2022新建一个空项目 修改属性添加头文件路径和库路径 修改链接器,将OpenCV中lib库里的o…...
NVIDIA NIM 开发者指南:入门
NVIDIA NIM 开发者指南:入门 NVIDIA 开发者计划 想要了解有关 NIM 的更多信息?加入 NVIDIA 开发者计划,即可免费访问任何基础设施云、数据中心或个人工作站上最多 16 个 GPU 上的自托管 NVIDIA NIM 和微服务。 加入免费的 NVIDIA 开发者计…...
探索Python网络请求新纪元:httpx库的崛起
文章目录 **探索Python网络请求新纪元:httpx库的崛起**第一部分:背景介绍第二部分:httpx库是什么?第三部分:如何安装httpx库?第四部分:简单的库函数使用方法1. 发送GET请求2. 发送POST请求3. 超…...
学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着
ArcGIS水文分析实战教程(7)细说流域提取_汇流域栅格-CSDN博客 ArcGIS水文分析实战教程(6)河流提取与河网分级_arcgis的dem河流分级-CSDN博客 ArcGIS水文分析实战教程(5)细说流向与流量-CSDN博客 ArcGIS …...
做网站虚拟主机推荐/怎么创建一个网页
Linux课上的作业周三交,若有考虑不周到的地方,还请多多不吝赐教。shell处理文本相关的经常使用命令见此博客##假设输入两个參数 则第一个为统计单词的个数。第二个为要统计的文章#假设输入一个參数 则默认统计单词的个数为10#详细思路:将各种…...
ecshop网站后台/如何做地推推广技巧
luom 2014/04/25 12:070x00 背景Cobalt Strike 一款以metasploit为基础的GUI的框框架式渗透工具,Armitage的商业版,集成了端口发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成&a…...
教育网站开发公司/长尾词seo排名
IF函数是Excel中的一个逻辑函数,它在我们的实际工作中应用非常广泛,使用IF函数可以很方便的帮助我们完成一些条件判断。今天就来给大家介绍一下IF函数的用法。01IF函数概念判断是否满足某个条件,如果满足则返回一个值,如果不满足则…...
中国商标网商标查询官方网站/互联网营销推广方案
刷题链接:链接: acwing. 1 01背包问题 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价…...
wordpress主题静态页面/排名优化网站seo排名
在Vue单页应用中,如果在某一个具体路由的具体页面下点击刷新,那么刷新后,页面的状态信息可能就会丢失掉。这时候应该怎么处理呢?如果你也有这个疑惑,这篇文章或许能够帮助到你一、问题现在产品上有个需求:单…...
个人备案网站有什么限制/西安seo推广
只要尽力,努力了,就算失败了,输了,也不要遗憾,也不会遗憾!其实也算成功了!你不努力,不尽力,失败了,输了,那你会遗憾,甚至是终身&#…...