Hovernet代码复现

实验室最近收集了一个大型细胞数据集,准备发一篇论文,导让我跑一下hovernet对细胞进行分割,忙叨了一天啥也没弄出来,准备用CSDN记录一下我的心酸学习历程。

2024年4月11日

一、创建环境

1、

安装了上面的,接下来就开始安装requirements了

PS: pip install torch==1.6.0 torchvision==0.7.0 -i https://pypi.mirrors.ustc.edu.cn/simple/ 这句代码来安装清华镜像源~

pip install -r requirements.txt 安装requirements文件  

事已至此,环境已经准备好了! 我去上个厕所了~~~~~

---------------------------------------------------------------------------------------------------------------------------------

二、图像处理

这里写了必须先在这个ex.py进行数据处理,然后得到可以用来训练的数据集

结果如下  生成的新文件~

三、配置文件修改

Step1:设置数据文件路径 在config.py

Step2:设置checkpoints 的存储路径(这个checkpoints是啥我还不太清楚)

Step3:下载权重文件  文件里面写的存在着,我就建了个文件夹然后放进去了

Step4:修改参数之类的 我先没改一会跑跑看看

四、训练前检查

开始报错 一直都是一些数组的问题 所以想到调用一下生成的npy文件看一下

里面的数组是五维的,应该是生成的时候用错了函数,因为这里明确说了,分割是要四维,分割加分类才需要五维,回去查看ex.py

ps:报错显示pytorch版本和cuda版本不兼容,升级pytorch版本

ex.py文件里

不知道是不是这个分类要改成false 一会试试(等待pytorch升级中)

这里也被改了

今天先不改了 ,明天再试试

---------------------------------------------------------------------------------------------------------------------------------

4月15日

气shu我了!环境没配好!重新来一遍!!!!

1、创建pyhton版本为3.6的虚拟环境 

2、安装pytorch

pip install torch==1.6.0 torchvision==0.7.

3、安装cuda

conda install cudatoolkit==指定版本

查看cudatoolkit版本命令 conda search cudatoolkit

参考:使用虚拟环境conda安装不同版本的cuda,cudnn,pytorch_conda安装cuda-CSDN博客

然后报错了,是通道的问题 

查看现有通道命令:conda config --get

下10.2没成功 下的11.8先试试吧

现在extra文件可以跑通,但是还是训练不了。。。。可能是数据集的问题,明天试试下个新的数据集(创建了新的环境hovernet)

我的数据集最后一位标签是0,看见一行代码,0好像是背景,明天改一下改成1试试

---------------------------------------------------------------------------------------------------------------------------------

4月16日 

1、这里面写了三个数据集的数据预处理方案。extract_patches.py里面进行了调用。

2、数据集下载 我在Google上搜了一下,有个好人给出了

链接在这里  CPM15 and CPM17 dataset · Issue #5 · vqdang/hover_net · GitHub

引用数据集写论文请注明原论文出处!!!!!!!!!!!!!!!!!!!!!科研不易!!

.mat 文件中,inst_map 这个键(key)所对应的值包含了实例分割的标注信息。这里的“实例分割”指的是图像中每个独立物体(本例中为细胞核)被识别并区分的过程。

inst_map 中的内容是一个图像,其中每个像素的值代表了不同的实例(细胞核)。这些值是唯一的整数,用来标识每一个独立的细胞核。这些整数的范围从 0 到 N,其中:

  • 0 代表背景:也就是说,图像中所有值为0的像素都是背景,不属于任何一个细胞核。
  • 1 到 N 代表不同的细胞核:每一个从1到N的整数都对应一个特定的细胞核,不同的整数代表不同的细胞核。这样,图像上相同数值的像素群组就形成了一个细胞核的图像区域。

通过这种方式,可以清楚地区分和识别图像中的每一个细胞核,每个细胞核都有一个独一无二的标识符(整数值),这对于进行生物医学图像分析等应用是非常有用的。

下载了cpm17数据集 然后修改extract_patches.py文件如下

2、运行extract_patches.py 得到了处理后的cpm17

3、修改config文件里的数据路径(下图是还没改的,我先去修改毕业论文了,886!PS:看着电视敲代码真的会效率加倍!小城故事多真好看!)

---------------------------------------------------------------------------------------------------------------------------------

4月17日  喝完酒回来了,敲代码!

昨天下载好了新的数据集,然后按部就班的开始做官方给出的四个步骤。

一、

1、在config.py文件中设置数据路径 

2、设置checkpoints存储路径

3、设置预训练权重文件路径

4、设置参数

二、

出现的问题都是因为ex文件处理数据集之后的问题,下面来读一下ex.py文件

4月25 实验有了新进展

import numpy as np

import matplotlib.pyplot as plt

# 修改此路径到你的 .npy 文件位置

data = np.load('xxxx')

# # 输出数据形状

# print('Data Shape:', data.shape)

# # 选择性地可视化数据

# # 例如,可视化第一个通道

# plt.imshow(data[:, :, 0], cmap='gray')

# plt.colorbar()

# plt.title('Channel 1 Visualization')

# plt.show()

# 如果数据不是 uint8 类型或数值范围不在 0-255 之间,需要先进行转换

if data.dtype != np.uint8:

    # 归一化到 0-1 范围

    normalized_data = (data - data.min()) / (data.max() - data.min())

    # 将数据缩放到 0-255 并转换为整型

    data = (normalized_data * 255).astype(np.uint8)

# 显示前三个通道作为 RGB 图像

plt.imshow(data[:, :, :3])

plt.title('RGB Visualization')

plt.show()

-----------------------------------------------分割线-------------------------------------------------------------------------

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

# 加载.npy文件

data = np.load('0.raw.0.npy')


 

# 获取每个像素点最可能的类别

prediction = np.argmax(data, axis=-1)

# 创建颜色映射

colors = [

    (0, 0, 0.5),  # 深蓝色,肿瘤

    (0.5, 0.7, 1.0),  # 浅蓝色,基质

    (0, 0.5, 0),  # 深绿色,炎症

    (0.5, 1, 0.5),  # 浅绿色,坏死

    (1.0, 1.0, 0)  # 黄色,其它区域

]

cmap = ListedColormap(colors)

# 可视化分割结果

plt.figure(figsize=(10, 10))

plt.imshow(prediction, cmap=cmap)

plt.colorbar(ticks=range(len(colors)))  # 添加颜色条

plt.title('Semantic Segmentation Map')

plt.show()

>>> from tiatoolbox.models.architecture.hovernet import HoVerNet
>>> import torch
>>> import numpy as np
>>> batch = torch.from_numpy(image_patch)[None]
>>> # image_patch is a 256x256x3 numpy array
>>> weights_path = "A/weights.pth"
>>> pretrained = torch.load(weights_path)
>>> model = HoVerNet(num_types=6, mode="fast")
>>> model.load_state_dict(pretrained)
>>> output = model.infer_batch(model, batch, on_gpu=False)
>>> output = [v[0] for v in output]
>>> output = model.postproc(output)

存在ok.ipynb 文件中,没找到权重文件

checkpoint:hover-net-pytorch-weights - Google 云端硬盘

下载好了权重文件 但是数据没处理好,下班 明天出去开会

---------------------------------------2024.5.1 实验结果图--------------------------------------------------------------

评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值