跑通CLAM

项目场景:

从github上下载CLAM代码,上传Camelyon-16中的部分WSI图像,将代码跑通。

CLAM项目地址:

GitHub - mahmoodlab/CLAM: Data-efficient and weakly supervised computational pathology on whole slide images - Nature Biomedical EngineeringData-efficient and weakly supervised computational pathology on whole slide images - Nature Biomedical Engineering - GitHub - mahmoodlab/CLAM: Data-efficient and weakly supervised computational pathology on whole slide images - Nature Biomedical Engineeringhttps://github.com/mahmoodlab/CLAM

流程:

环境配置

按如下代码进行配置,参考链接:https://github.com/mahmoodlab/CLAM/blob/master/docs/INSTALLATION.md

// (1)安装openslide-toolssudo apt-get install openslide-tools// (2)使用项目已经写好的库依赖创建环境conda env create -n clam -f docs/clam.yaml// (3)由于topk库必须使用github安装,因而先退出CLAM文件夹克隆topk库,并进行安装git clone https://github.com/oval-group/smooth-topk.git
cd smooth-topk
python setup.py install

 但是由于我的CUDA版本为11.4,clam.yaml中安装的pytorch版本过低会导致与CUDA版本不匹配的问题。前一篇博文已解决此问题,参考链接

关于pytorch与CUDA版本匹配问题_DragonJ__的博客-CSDN博客


下载数据集:

CLAM所用需要使用WSI图像,本人所用数据集为Camelyon16,下载地址

Data - Grand Challenge (grand-challenge.org)

在下载后数据集按如何方式组织在项目主文件夹下建立一个Original_Image文件夹,并把所下载数据集放到该文件夹下,如下:

将WSI图像切为patch

 数据集调整好后,为方便模型的训练需要对WSI进行切片,并存储相应的坐标,运行如下代码:

// Original_Image文件夹下存储原始WSI图像
// Split Image下存储切片后的图像坐标相关信息
python create_patches_fp.py --source Original_Image  --save_dir Split_Image --patch_size 256 --seg --patch --stitch

切割完成后会在主目录下得到Split_Image文件夹,并按如下方式进行组织:

特征提取

CLAM首先使用预训练的ResNet50提取图像特征,执行如下代码:

// 其中process_list.csv为切割patch自动生成的process_list_autogen.csv去掉文件名的后缀得到的
// Extracted_feature 为提取后的特征的存储路径
CUDA_VISIBLE_DEVICES=0,1 python extract_features_fp.py --data_h5_dir Split_Image/ --data_slide_dir Original_Image/ --csv_path Split_Image/process_list.csv --feat_dir Extracted_feature/ --batch_size 512 --slide_ext .tif

 在执行特征提取后,特征会提取到Extracted_Feature文件夹下,以.pt文件格式存储,Extracted_Feature文件夹下目录如下:

 数据集划分

在训练开始前需要将数据集划分为训练集、验证集、测试集。这里是按照csv文件进行划分,共需要两个调整。首先在dataset_csv文件夹下创建一个test.csv文件,包含所有的样例,内部内容如下:

其次更改create_splits_seq代码将csv文件路径更改到test.csv,更改部分如下:

最后执行如下代码:

// 训练集占75%,共划分10次,类似10折交叉验证,每次划分均随机且不同。
python create_splits_seq.py --task task_1_tumor_vs_normal --seed 1 --label_frac 0.75 --k 10

划分后会在splits/task_1_tumor_vs_normal文件夹下产生10次划分的结果如下:

模型训练:

模型训练需要更改main.py中csv文件路径,如下:

 随后输入如下代码即可训练:

CUDA_VISIBLE_DEVICES=0 python main.py --drop_out --early_stopping --lr 2e-4 --k 10 --label_frac 0.75 --exp_code task_1_tumor_vs_normal_CLAM_75 --weighted_sample --bag_loss ce --inst_loss svm --task task_1_tumor_vs_normal --model_type clam_sb --log_data --data_root_dir Extracted_feature

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中经常使用的相关命令

查看硬盘存储容量使用情况: df -lh 列出 /bin 目录中的 5 个最大文件: ls -lSh /bin | head -5 删除文件和文件夹 在Linux中,要删除文件的命令是rm。你可以使用以下命令来删除一个文件: rm file_name如果要删除多个文件,可…

如何读取excel任意单元格内容的代码(vba,py)

如何读取excel任意单元格内容的代码 ━━━━━━━━━━━━━━━━━━━━━━ 你可以使用 VBScript(VBS)来读取 Excel 文件中的任意单元格内容。以下是一个简单的 VBScript 代码示例,使用 CreateObject 来操作 Excel 应用程序&#xff…

Tomcat系统架构与原理剖析及手写Tomcat及源码导入学习

文章目录 1 Tomcat官网2 Tomcat **系统架构与原理剖析**2.1 浏览器访问服务器的流程2.2 **Tomcat** **系统总体架构****2.2.1 Tomcat** **请求处理⼤致过程**2.2.2 **Tomcat Servlet**容器处理流程2.2.3 **Tomcat** 系统总体架构2.3 **Tomcat** **连接器组件** Coyote2.4 **Tom…

高级RAG(四):RAGAs评估

之前我完成了父文档检索器和llamaIndex从小到大的检索这两篇博客,我在这两篇博客中分别介绍了使用langchain和llamaIndex进行文档检索的方法和步骤,其中包含了不同的RAG的检索策略,通常来说一个典型的RAG系统一般包含两个主要的部件&#xff…

程序媛的mac修炼手册--MacOS系统更新升级史

啊,我这个口罩三年从未感染过新冠的天选免疫王,却被支原体击倒😷大意了,前几天去医院体检,刚检查完出医院就摘口罩了🤦大伙儿还是要注意戴口罩,保重身体啊!身体欠恙,就闲…

‘react-native‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

原因:没有下载react-native 解决下载react-native npm i -g react-native-cli

向日葵远程工具的使用Mysql5.7的安装与配置

目录 一、向日葵远程安装与使用 二、Mysql 5.7 安装与配置 2.1 安装 2.2 Navicat Premium 12 测试连接 本机测试连接 外部访问MySQL测试连接 三、思维导图 一、向日葵远程安装与使用 简介: 向日葵远程控制是一款用于对远程PC进行管理和服务的软件,拥有5秒快速…

uniapp从入门到精通(全网保姆式教程)~ 别再说你不会开发小程序了

目录 一、介绍 二、环境搭建(hello world) 2.1 下载HBuilderX 2.2 下载微信开发者工具 2.3 创建uniapp项目 2.4 在浏览器运行 2.5 在微信开发者工具运行 2.6 在手机上运行 三、项目基本目录结构 四、开发规范概述 五、全局配置文件&#xff0…

移动神器RAX3000M路由器变身家庭云之四:开放LuCI管理界面,网站服务

前面已经改造成了家庭云供外网访问了。由于这个路由本来就是openwrt,openwrt本身的管理界面LuCI-admin很好用,但被屏蔽了,需要打开。 打开界面 ssh登录路由器,修改 /etc/config/uhttpd配置文件如下: config uhttpd …

【JUC】Synchronized及JVM底层原理

Synchronized使用方式 Synchronized有三种应用方式 作用于实例方法,当前示实例加锁进入同步代码前要获得当前实例的锁,即synchronized普通同步方法,调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置。 如果设置了,执行…

前端发布项目自动更新

思路:无论vue还是react打包都会有dist文件夹,内部有index.html。我是想根据index.html中的script src地址是否改变,判断项目是否有新内容。 具体代码如下 首先先拿到生产环境中index.html文本,由于是单页面应用使用fetch(/?_st…

JS字符串API: slice、split、JSON.stringify、trim、concat 、indexOf...

substring() 字符串的截取可以使用substring()方法和slice()方法。其中substring()方法接受两个参数,第一个参数是起始位置,第二个参数是结束位置,截取的字符串不包括结束位置的字符。 let str "Hello, World!"; let str2 &quo…

性能测试之(五):JMeter 入门1

一、性能测试工具(JMeter、LoadRunner) 1、LoadRunner是一种工业级的测试工具 ,可以模拟上万用户实施测试, 优点:多用户(支持数量单位万)、详细分析报表、支持IP欺骗 缺点:收费、体…

金融中IC和IR的定义

当谈到金融领域时,IC(Information Coefficient)和IR(Information Ratio)通常是用来评估投资组合管理绩效的指标。它们都涉及到投资者对信息的利用和管理的效果。 信息系数(IC - Information Coefficient&a…

学习Go语言Web框架Gee总结--分组控制Group(四)

学习Go语言Web框架Gee总结--分组控制Group 学习网站来源:Gee 相当于上一篇,这节只改变了gee/gee.go文件,其他文件一样 路由分组是指将相似的路由规则分组到一起,以便更好地管理和维护路由 就比如在网络中,路由分组可以…

基于ssm毕业设计选题系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业设计选题系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

SPCA双模认证和CSMM认证的区别

SPCA(Software Process and Capability Maturity Model)和CSMM(China Software Maturity Model)都是软件过程成熟度模型,但它们在起源、目标和实施方式上有所不同。这些差异也影响了它们对企业的注重点。 1.起源和背景…

软文推广宣发遵循的基本流程

在软文发稿的旅程中,制定明确的策略思路是确保成功的关键。软文发稿有一定的流程需要我们遵循,才能达到理想的软文宣发效果。首先,我们要明确发稿的地区,然后精准选择目标受众,最后才能展开内容的创作。下面&#xff0…

实验笔记之——下载数据到服务器

开发过程中经常需要把数据传到服务器上,太麻烦了,为此本博文记录采用百度云来传输数据 百度云 使用bypy包。 安装:pip install bypy 配置bypy连接百度网盘: 终端输入bypy info将命令行提示的链接复制到浏览器,并复制…

MySQL如何从数据中截取所需要的字符串

有这样的一个场景,我想从我的表里面进行数据截取,我的数据内容大致如下: 张三-建外SOHO-2-16 POA 20210518.pdf 我想获取数据中的:20210518这一日期部分, 这种情况可以使用MySQL的SUBSTRING_INDEX函数来实现: SELECT …