<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>口腔科研相关资料</title>
    <link>https://runzhliu.cn/oral/</link>
    <description>Recent content on 口腔科研相关资料</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 20 Mar 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://runzhliu.cn/oral/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>WandB访问tips</title>
      <link>https://runzhliu.cn/oral/posts/oral/wandb%E8%AE%BF%E9%97%AEtips/</link>
      <pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/wandb%E8%AE%BF%E9%97%AEtips/</guid>
      <description>概述 通过 WandB，用户可以方便地记录训练过程、模型、数据等信息，因此大部分的训练相关的指标都可以在 WandB 查询获取。&#xA;访问方式 因为网络条件的限制，WandB 有下面的访问规则，其中 T-1 意思是非实时数据，时间会延迟一天同步，登录的账号是 runzhliu09@gmail.com，密码是 vipshop。&#xA;地址 访问场景 数据时效 http://[240e:3b4:461:f8d0:2032:4dff:fe07:ce32]:8880/home 学校/手机 实时 http://192.168.1.164:8088 家里 T-1 http://runzhliu.men:8880 家里/手机 实时 TODO 为了家里可以访问到实时的数据，可能还需要调整家里的路由器的拨号方式，目标还是希望家里和学校，或者任何地方都可以用同一个网址进行访问。</description>
    </item>
    <item>
      <title>螺丝松紧分析-5</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-5/</link>
      <pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-5/</guid>
      <description>数据检查 通过下面的脚本，检查一下数据量。&#xA;find . -type d ! -path &amp;#34;*/.*&amp;#34; | while read folder do # 忽略隐藏文件夹中的文件，统计当前目录内的 .png 文件数量 count=$(find &amp;#34;$folder&amp;#34; -maxdepth 1 -type f -iname &amp;#34;*.png&amp;#34; ! -iname &amp;#34;.*&amp;#34; | wc -l) # 根据层级生成树状结构 indent=$(echo &amp;#34;$folder&amp;#34; | awk -F&amp;#39;/&amp;#39; &amp;#39;{for(i=2;i&amp;lt;NF;i++) printf &amp;#34;│ &amp;#34;; if(NF&amp;gt;1) printf &amp;#34;├── &amp;#34;}&amp;#39;) # 输出目录及文件数量 echo &amp;#34;${indent}${folder##*/} ($count)&amp;#34; done 可以检查一下下面 patient 和 model 用于训练和验证的数据量是否准确，以及进入文件夹里做一下基础的数据验证。&#xA;# patient ├── loose (121) ├── tight (720) ├── train (0) │ ├── loose (95) │ ├── tight (575) ├── val (0) │ ├── loose (13) │ ├── tight (72) ├── test (0) │ ├── loose (13) │ ├── tight (73) # model ├── loose (465) ├── tight (547) ├── train (0) │ ├── loose (369) │ ├── tight (433) ├── val (0) │ ├── loose (49) │ ├── tight (59) ├── test (0) │ ├── loose (47) │ ├── tight (55) 结果分析 从训练的过程看，大部分都是正常的。</description>
    </item>
    <item>
      <title>TMJ第五轮训练结果</title>
      <link>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%BA%94%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</link>
      <pubDate>Sat, 04 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%BA%94%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</guid>
      <description>概述 这次的数据结构有很大变化，不需要用代码通过 labelme 来切图，直接训练模型即可。&#xA;CNN训练 图片很多，应该是要跑挺久的。另外有一张图片是有问题的，需要 check 一下: 无法加载图像: dataset/train/N/P933907P.png_N_2_right.png。&#xA;数据量比较大，服务器内存 32g 撑爆了。&#xA;把其他机器的内存条换到 GPU 服务器，加到 64g，之后就可以正常运行程序了。程序一共运行了近90分钟。&#xA;下面是结果。&#xA;汇总的百分比如下。&#xA;另外可以看一下 result.csv，结果里有关于 Test 集的判断结果，可以看看哪些图片是判错的。</description>
    </item>
    <item>
      <title>螺丝松紧分析-4</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-4/</link>
      <pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-4/</guid>
      <description>概述 拿来训练的图片跟之前的不太一样，已经切割好了，所以不需要用 labelme 等工具进行切图，可以直接跑训练代码。&#xA;Raw CNN 需要关注下面不同分类的数据量，防止实验结果有偏差&#xA;Train/Test/Val 的比例分别是0.8/0.1/0.1，可以看到训练启动时候打印的图片数量是准确的。&#xA;Fine-tuned CNN 需要关注下面不同分类的数据量，防止实验结果有偏差</description>
    </item>
    <item>
      <title>螺丝松紧分析-3</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-3/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-3/</guid>
      <description>概述 因为所有图片的图片量不少，感觉不太需要先训练 yolo 再去切图再训练，这个应该也比较好理解，个人觉得由有经验的医生进行切图（数量大），效果应该会比 yolo 好，所以可以先根据 labelme 的结果，直接切图，将切出来的图直接进行两轮 CNN，然后看看结果。&#xA;数据preview 需要关注下面不同分类的数据量，防止实验结果有偏差&#xA;基于lableme结果 nonpatient切图训练CNN 需要关注下面不同分类的数据量，防止实验结果有偏差&#xA;根据上面的数据，先跑一轮 CNN，可以看到使用的数据量如下。&#xA;下面这个图，跟上图是类似的，可以关注一下各个指标的可视化。&#xA;patient切图fine-tuned 需要关注下面不同分类的数据量，防止实验结果有偏差&#xA;根据上面的数据，用 patient 的真实图片，再跑一轮 CNN 作为 fine-tuned，可以看到使用的数据量如下。&#xA;最后根据这个模型所得的结果，对部分病人图片（15%作为测试集）进行了一次判断，可以参考 result.csv 的结果，查看判错的情况，这个结果可以参考 fine-tuned-confusion_matrix.png 一起看看。&#xA;grad-cam结果 grad-cam 的结果可以查看下面的文件夹。&#xA;实验总结 这个结果是基于labelme标记直接切图出来的没有经过yolo 个人觉得直接切图应该是比yolo更好的，但实际没有比之前的结果更好 后面准备做一次基于yolo的结果再做对比 </description>
    </item>
    <item>
      <title>TMJ第四轮训练结果</title>
      <link>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E5%9B%9B%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</link>
      <pubDate>Sat, 26 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E5%9B%9B%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</guid>
      <description>概述 TMJ 隔了很久没做了，这次收集到的数据比较大，数据量大了，处理实际也上升一个量级，光是切割数据集都需要一小时以上。&#xA;实验过程 实验分两个类型做，第一种是通过先训练 Yolo 模型再进行一轮的 CNN 训练，第二种是直接基于 labelme 的结果切割图片之后进行 CNN 训练。&#xA;第一种 刚拿到数据的时候按螺丝松紧模型的方法做过一次，效果不是很好，猜测是 Left 和 Right 的差距比较大，当前的数据量下不应该引入 Left 和 Right 的影响因素的。&#xA;第二种 鉴于第一种的结果出现的问题，第二种开始做的时候，就考虑先区分 Left 和 Right 了。这部分代码处理的逻辑会麻烦一点，要基于 labelme 的结果重新写一个数据预处理的代码，处理的代码逻辑如下:&#xA;{ &amp;#34;version&amp;#34;: &amp;#34;5.5.0&amp;#34;, &amp;#34;flags&amp;#34;: {}, &amp;#34;shapes&amp;#34;: [ { &amp;#34;label&amp;#34;: &amp;#34;N&amp;#34;, &amp;#34;points&amp;#34;: [ [ 246.82051282051276, 117.38461538461546 ], [ 527.6708860759495, 433.64556962025324 ] ], &amp;#34;group_id&amp;#34;: null, &amp;#34;description&amp;#34;: &amp;#34;&amp;#34;, &amp;#34;shape_type&amp;#34;: &amp;#34;rectangle&amp;#34;, &amp;#34;flags&amp;#34;: {}, &amp;#34;mask&amp;#34;: null }, { &amp;#34;label&amp;#34;: &amp;#34;N&amp;#34;, &amp;#34;points&amp;#34;: [ [ 2409.641025641026, 130.</description>
    </item>
    <item>
      <title>螺丝松紧分析-2</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-2/</link>
      <pubDate>Sat, 12 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E6%9E%90-2/</guid>
      <description>概述 因为之前的实验中，发现有些图片重复和命名格式的问题，重新整理之后再跑一次。&#xA;训练流程 Yolo训练和切割图片 因为有很多模型图片，计划是通过模型图片训练一个用于螺丝的语义分割模型出来，这样有利于以后用模型的方式，快速增加预训练的样本量。下面是用于 Yolo 训练的图片整理的结果，从下图看，参与 Yolo 训练的图片中，可能会有1-5个左右的螺丝。&#xA;模型训练出来之后，我们通过 Yolo 来分别针对 tight 和 loose 分割图片，用于做分类模型的预训练，从分割的结果可以看到，Yolo 已经将原始的图片的螺丝的部分分割出来了。&#xA;另外还需要对病人的真实图片进行 Yolo 的分割，之后这部分的图片会用于 fine-tuned 上面提到的预训练的模型，图片的分割结果如下。&#xA;分类模型的预训练 使用上面准备好的训练图片，进行第一步的预训练，70%做训练集，数据量如下。&#xA;训练的结果如下，模型的在训练集上准确率达到95%，在另外的15%验证集图片上表现也还可以，达到了85%的准确率。&#xA;fine-tuned模型 我们用上述提到的经过 Yolo 分割的病人的真实螺丝图片进行模型 fine-tuned，还是一样的70%的图片数量作为训练集。&#xA;训练的结果如下，训练集的准确率很高，达到了100%，并且在验证集上也有90%的准确率，不过我们可能还不能认为他这是一个好模型，关键是因为某一分类的图片太少了，病人 loose 的图片参与训练只有不到30张，参与训练的 tight 的图片有300+张。&#xA;这个结果还是不错的，基本上 tight 的能预测到是 tight 的，loose 同样。&#xA;grad-cam结果 虽然我们在上面的结果中，因为图片数量的问题怀疑模型的准确度，所以我们再用 grad-cam 来看看这个 CNN 分类模型的依据是否能在图片中很直观的观察到。从下面的结果看，这个 grad-cam 并不能准确的指出如何判断螺丝松紧的。&#xA;实验复盘 fine-tuned过程病人loose图片太少 这个问题是一直以来都有的了，病人真实的 loose 图片不好收集，从预训练的结果可以猜测到，实际上图片量上百上千之后，效果应该还是可以的，那么图片就只能继续收集了。&#xA;能否用预训练模型对病人的螺丝直接进行分类 理论上，当然不太建议，毕竟用模型直接去推理病人的，应该是有 gap 的，不过可以试一试。从这个结果看，大部分 predict 成 loose 的，实际都是 tight，模型的准确度是一般的，只有35%，所以预训练的模型用在病人的图片上分类的效果是比较差的。&#xA;grad-cam的结果有没有必要 从 grad-cam 的结果没有把 CNN 真正有效的可视化，可能是需要 review 一下 grad-cam 的代码了。</description>
    </item>
    <item>
      <title>螺丝松紧分割</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E5%89%B2/</link>
      <pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%9E%BA%E4%B8%9D%E6%9D%BE%E7%B4%A7%E5%88%86%E5%89%B2/</guid>
      <description>概述 实验的时间和条件如下，关于实验背景，需要参考 CNN和Yolo结合的流水线 。&#xA;实验准备 看了下新的图片，loose 病人的图片经过 yolo 分割之后很少，查了一下原始图片格式有些问题。&#xA;loose 病人的图片比较少，比较难找，我想了一下，感觉 loose 病人的螺丝区域可以试一下手工截出来，因为用 yolo 直接切原片有可能有误差会排除掉很多松的螺丝。像这个如果图片里两个螺丝都是松的话 yolo 只切出了比较垂直那个。 训练流程 训练流程再回忆一下。&#xA;预训练: 用yolo或者labelme的影像模型做CNN模型的预训练材料，最终获得预训练模型 fine-tuned: 用病人真实的图片，将预训练模型再继续训练 另外还要注意的是，下面的训练是基于 yolo 的模型分割的图片做的，主要目的是增加了样本量，但是分割出来的图片没有进行过人工审核，有可能出现一些有问题的分割图片，可能会对模型的精度有一定的影响。&#xA;训练记录 确认一下预训练的数据分类没有问题。&#xA;进行预训练。&#xA;预训练的结果如下，从结果看，直接用 yolo 出来的图片效果准确率在90%左右。&#xA;确认一下 fine-tuned 的数据分类有没有问题。&#xA;进行 fine-tuned。&#xA;从 fine-tuned 最终的结果看到，效果一般。&#xA;从 loss 曲线看比较早就过拟合了。&#xA;另一方面，看 grad-cam 的结果也可以知道，fine-tuned 模型在分类的时候几乎没有找到「抓手」。&#xA;问题总结 yolo 模型在对原始图片进行语义分割，可能会有精度问题，虽然可以短时间内获取大量预训练的图片，但有些图片的质量会比较差。&#xA;鉴于 yolo 出来的图片质量存在瑕疵，有两个方法进行调整:&#xA;继续增加训练yolo模型的图片量，持续训练一个精度较好的yolo模型 yolo分割出来的图片增加人工审核的环节，排除质量差的图片 如果 yolo 效果一般，也可以考虑增加人力，通过 labelme 人工标注目标位置。</description>
    </item>
    <item>
      <title>3D-UNet学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/3d-unet%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/3d-unet%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 算法的代码就是写的差，在网上几乎很难找到环境容易配置、代码写的清晰的例子。&#xA;3DUnetCNN 3DUnetCNN 可以运行起来。因为数据集在 Kaggle 可以直接下载，通过 Kaggle 官方的配置即可。&#xA;git clone https://github.com/ellisdg/3DUnetCNN.git cd 3DUnetCNN export PYTHONPATH=${PWD}:${PYTHONPATH} # 下载到/tf/oral/3d/3DUnetCNN/examples/brats2020 kaggle datasets download -d awsaf49/brats20-dataset-training-validation # 解压数据 unzip brats20-dataset-training-validation.zip # 启动 python /tf/oral/3d/3DUnetCNN/unet3d/scripts/train.py --config_filename brats2020_config.json 显存占用和 GPU 利用率在可控的范围。&#xA;数据集格式。&#xA;root@node5:/tf/oral/3d/3DUnetCNN/examples/brats2020/BraTS2020_TrainingData/MICCAI_BraTS2020_TrainingData/BraTS20_Training_001# tree . ├── BraTS20_Training_001_flair.nii ├── BraTS20_Training_001_seg.nii ├── BraTS20_Training_001_t1.nii ├── BraTS20_Training_001_t1ce.nii └── BraTS20_Training_001_t2.nii pytorch-3dunet https://github.com/wolny/pytorch-3dunet&#xA;CardiacMRI_3D_UNet_Pytorch https://github.com/aimalrehman92/CardiacMRI_3D_UNet_Pytorch&#xA;3D-UNet https://github.com/AghdamAmir/3D-UNet&#xA;Medical Segmentation Decathlon 这个是一个医疗3d语义分割的图像库。&#xA;http://medicaldecathlon.com/&#xA;MedicalZooPytorch https://github.com/black0017/MedicalZooPytorch&#xA;Kaggle 可以从 Kaggle 里找到一些相关的代码 brats20-dataset-training-validation。&#xA;参考资料 Implement 3D-UNet for Cardiac Volumetric MRI Scans in PyTorch </description>
    </item>
    <item>
      <title>基于3D-UNet的CBCT上气道图像分割的研究</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E5%9F%BA%E4%BA%8E3d-unet%E7%9A%84cbct%E4%B8%8A%E6%B0%94%E9%81%93%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2%E7%9A%84%E7%A0%94%E7%A9%B6/</link>
      <pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E5%9F%BA%E4%BA%8E3d-unet%E7%9A%84cbct%E4%B8%8A%E6%B0%94%E9%81%93%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2%E7%9A%84%E7%A0%94%E7%A9%B6/</guid>
      <description>概述 阅读一篇文献，基于 3D U-Net 的 CBCT 上气道图像分割的研究，分析一下 3D U-Net 的基本流程。&#xA;论文阅读 高质量的数据集有助于此后顺利提取上气道图像的特征规律。本研究将270例上气道DICOM 3.0标准格式的CBCT图像数据中的分段上气道逐例逐层进行灰度值标记，共计标记切面70249层，获得270个NIFTI格式的标记文件，交叉检查标记质量后，最终保留258例NIFTI格式的上气道分段人工标记完成的文件，构建高质量的CBCT上气道分割数据集。最后，将该数据集平均随机分为训练集（129 例）和测试集（129 例）。&#xA;数据的获取对实验非常关键，从论文可以看到这个标记量肯定是不小的，7w+层的标记。&#xA;实验基于 PyTorch 框架构建的 3D U-Net 网络模型，实验环境如下：Ubuntu 16.04 LTS 64 位操作系统，AMD Ryzen 7 2700X CPU，NVIDIA GeForce 3080ti GPU 一块，运行内存 128GB。&#xA;作者的环境比较一般，GPU也不算好，单卡训练会收到显存规模的影响，无法做数据量大的计算。&#xA;本实验使用测试集样本（129 例）对该算法的医学图像分割效果进行评价。&#xA;作者实验使用的数据量应该算比较少，不过一个病人样本的三维图像的层数是不少的，如果要标注，工作量也不会小。&#xA;本研究采用一系列参数和统计学方法对该算法的医学图像分割效果进行客观评价即定量分析。&#xA;这里是需要学习一下的，具体需要哪些方案来对图像分割的效果进行分析。&#xA;Dice相似系数是一种用于计算两个样本的相似程度的集合相似度度量函数 CM常被用于机器学习领域，用来评价二分类模型的性能 采用独立样本t检验、Mann-Whitney U检验、非参数Kruskal-Wallis H检验等分析测试集样本不同分组类型（不同性别、年龄和是否患有AH）对TPV的影响 采用Kruskal-Wallis检验分别比较4个上气道VOI自动分割精确性的组间差异 采用外部验证评估基于3D U-Net自动分割上气道辅助诊断的效果 通过对比人工分割上气道图像和使用算法自动分割结果对比，证明了3D U-Net网络模型在分割上气道不同平面（轴状面、矢状面、冠状面）的CBCT二维图 像时取得不错的效果。&#xA;3D U-Net 看来也可以直接用在二维的截面上。&#xA;从结果看，人工和算法的差别确实不大，上面的图是基于三个截面的。&#xA;上面这个图是基于3维模型的。</description>
    </item>
    <item>
      <title>MONAI学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/monai%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Tue, 27 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/monai%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 发现 MONAI 有包含 3d 语义分割的全套件，还支持 3d-slicer 等工具，值得研究一下。&#xA;数据问题 初步试了一下，数据大部分下载都非常麻烦，需要给数据方递交申请表等审核等等。国外对这些病历照片还是比较重视的，大部分类似的数据都不容易获取。&#xA;基础流程了&#xA;运行测试实例 需要运行一个测试的实例，目的是为了在测试实例的基础上，通过修改数据的格式，可以将我们自己的模型训练 run 起来，参考这个测试实例 Task09_Spleen。解决了数据问题之后，一开始在容器里测试了很久，最后发现是内存的配置导致在容器里没法把训练跑起来。&#xA;cd /tf/oral/3d/tutorials/auto3dseg/tasks/msd/Task09_Spleen python -m monai.apps.auto3dseg AutoRunner run --input=&amp;#39;./input.yaml&amp;#39; 显卡是比较一般了，运行可以想象会非常慢，可能开始要用公司资源做测试了。&#xA;warn_deprecated(argname, msg, warning_category) &amp;lt;string&amp;gt;:1: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`.</description>
    </item>
    <item>
      <title>TMJ第三轮训练结果</title>
      <link>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%B8%89%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</link>
      <pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%B8%89%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</guid>
      <description>概述 TMJ 的 YoloV8 的语义分割的效果还是比较差，下面总结一下近期尝试过的一些方法和最终的效果。&#xA;各种尝试 尝试方式 原因 效果 其他 不区分L和R，统一标签TMJ 减少了分类，增加了样本 分割效果跟之前比较相差不大 代码可以直接替换标签 直接到处全片 去除了边框软件的图像区域 分割效果跟之前比较相差不大 总结 总结下来，应该还是数据量不足导致的。</description>
    </item>
    <item>
      <title>TMJ第二轮训练结果</title>
      <link>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%BA%8C%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</link>
      <pubDate>Sat, 17 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%BA%8C%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</guid>
      <description>概述 TMJ 数据收集第二轮之后的训练记录。&#xA;训练过程记录 Yolov8过程 先将数据通过 labelme2yolov8 转换成 Yolov8 训练需要的格式。&#xA;按照参数，80%作为训练集，20%作为验证集，这里说明一下，参数和比例后面都可以调节的，主要是初步看一下结果。&#xA;标记图片。&#xA;如果想看 WandB 的指标可以后面再加，想快速出结果的话，暂时把 WandB 拿掉会比较快。模型结果保存后，使用模型来对所有的图片进行分割和标记。&#xA;seg代表分割，annotated代表标记&#xA;从分割的结果看，似乎还是跟上次的问题类似，为什么呢。后面会写个总结，回顾一下这个问题。&#xA;尝试通过代码，以 labelme 的结果来做图片的裁剪，效果是不错的，为什么训练的过程里，完全没学到呢，按道理来说数据量已经不少了，100张图片还不够么。&#xA;可以看到labelme裁剪出来的结果都是好的&#xA;CNN过程 因为 Yolo 训练效果不佳，先用 labelme 的数据试一下。因为数据集不符合标准格式，需要花点时间做一下数据集。&#xA;TMJ227nn.png 通过 corp 程序，可以裁剪出 TMJ227nn_cropped_1.jpg TMJ227nn_cropped_2.jpg。&#xA;因为不确定 _1 是左还是右，按我理解，先判断成右吧，所以所有 _1 都代表右侧，_2 都代表左侧了，根据文件名前缀，TMJ227nn，第一个 n 算右侧的吧，第二个 n 算左侧的吧，所以单张图片有下面的演化关系。&#xA;TMJ227nn.png | TMJ227nn_cropped_1.jpg // 代表右侧为n TMJ227nn_cropped_2.jpg // 代表左侧为n 再举几个例子。&#xA;TMJ225abab.png | TMJ225abab_cropped_1.jpg // 代表右侧为ab TMJ225abab_cropped_2.jpg // 代表左侧为ab TMJ217nab.png | TMJ217nab_cropped_1.jpg // 代表右侧为n TMJ217nab_cropped_2.jpg // 代表左侧为ab 关于 CNN 的训练，因为跟之前有人工模型的图片那样，所以这次训练应该是从头训练的，或者是拿 VGG 这些去做 fine tuned，测试过程中，先用 CNN 有个稳定不错的结果之后再考虑用 VGG 等预训练完的网络。</description>
    </item>
    <item>
      <title>TMJ第一轮训练结果</title>
      <link>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%B8%80%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</link>
      <pubDate>Wed, 14 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/tmj%E7%AC%AC%E4%B8%80%E8%BD%AE%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C/</guid>
      <description>概述 先说结论，第一次训练的图片过少了，导致 fine tuned 的模型无法学习到 TMP-R 和 TMP-L 的特征，从结果看，几乎都没有学习到，需要多标记一些图片，可以暂定是100张。&#xA;像这种就是用模型去推理，都找不到TMP-R或者TMP-L，只能从他认得的类比里找到一些概率高的&#xA;图片质量 第一轮标记的图片比较少，因为只有20张标记，所以在构建数据集的时候，选择了80%，也就是16张图片训练，4张图片做验证集。&#xA;训练过程 从验证集，暂时分的4张图片，都有严重的问题。&#xA;虽然从 loss 看，已经比较稳定了，但估计随着图片的增多，还可以更好。</description>
    </item>
    <item>
      <title>3d-slicer学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/3d-slicer%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/3d-slicer%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 Dataset with segmentations of 104 important anatomical structures in 1204 CT images&#xA;数据类型 服务器安装 web server 其实没啥用，其实是 slicer 的一个模块，可以远程调用，但是不方便在远程看。&#xA;数据类型 功能 3D Slicer is built on a modular architecture. Choose a module to process or analyze your data. Most important modules are the following (complete list is available in Modules section):&#xA;Welcome: The default module when 3D Slicer is started. The panel features options for loading data and 1. customizing 3D Slicer.</description>
    </item>
    <item>
      <title>EISeg学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/eiseg%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/eiseg%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 这个是百度的切图工具，主要是交互式，基于模型的，可能不是特别有用。&#xA;安装 # 前置依赖 python -m pip install paddlepaddle==2.4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install eiseg pip install eiseg -i https://mirrors.cloud.tencent.com/pypi/simple # 需要安装 conda install mkl eiseg # 3dx需要 pip install vtk -i https://pypi.tuna.tsinghua.edu.cn/simple eiseg 3d slicer /Applications/Slicer.app/Contents/bin/../bin/PythonSlicer -m pip install paddlepaddle paddleseg -i https://mirrors.cloud.tencent.com/pypi/simple 服务端安装 Troubleshooting INTEL MKL ERROR INTEL MKL ERROR: dlopen(/Users/runzhliu/miniconda3/lib/libmkl_core.1.dylib, 0x0009): tried: &amp;#39;/Users/runzhliu/miniconda3/lib/libmkl_core.1.dylib&amp;#39; (no such file), &amp;#39;/usr/local/lib/libmkl_core.1.dylib&amp;#39; (no such file), &amp;#39;/usr/lib/libmkl_core.1.dylib&amp;#39; (no such file). Intel MKL FATAL ERROR: Cannot load libmkl_core.</description>
    </item>
    <item>
      <title>GANs学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/gans%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/gans%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 CycleGAN 和 Pix2Pix 是两种著名的生成对抗网络（GAN）架构，主要用于图像到图像的翻译任务。它们有不同的应用场景和技术特点。下面是对这两种方法的详细介绍。&#xA;Pix2Pix 简介 Pix2Pix 是一种有监督的图像到图像翻译方法，它需要成对的训练数据。例如，要将黑白图像转换为彩色图像，需要同时提供黑白图像和其对应的彩色图像。Pix2Pix 通过一个生成器网络和一个判别器网络来学习从输入图像到目标图像的映射。&#xA;架构 生成器（Generator）：通常使用 U-Net 结构，它包含编码器和解码器，通过跳跃连接（skip connections）来保留输入图像的细节。 判别器（Discriminator）：通常使用 PatchGAN 结构，这个判别器不仅对整个图像进行分类，而且对图像的每个局部进行分类。 损失函数 Pix2Pix 使用两种损失函数：&#xA;对抗性损失（Adversarial Loss）：鼓励生成器生成逼真的图像，使得判别器无法区分真实图像和生成图像。 L1 损失（L1 Loss）：鼓励生成器生成与目标图像在像素级别上相似的图像。 应用 图像修复（Image Inpainting） 图像着色（Image Colorization） 图像去噪（Image Denoising） 图像超分辨率（Image Super-Resolution） 参考论文 Pix2Pix: Image-to-Image Translation with Conditional Adversarial Networks CycleGAN 简介 CycleGAN 是一种无监督的图像到图像翻译方法，它不需要成对的训练数据。CycleGAN 通过引入循环一致性损失（Cycle Consistency Loss）来学习从一种图像域到另一种图像域的映射。例如，可以将一组马的图像转换为斑马的图像，而不需要每张马的图像都对应一张斑马的图像。&#xA;架构 生成器（Generator）：两个生成器，一个用于从域 A 到域 B（G: A -&amp;gt; B），另一个用于从域 B 到域 A（F: B -&amp;gt; A）。 判别器（Discriminator）：两个判别器，一个用于区分域 B 的真实图像和生成图像（D_B），另一个用于区分域 A 的真实图像和生成图像（D_A）。 损失函数 CycleGAN 使用三种损失函数：</description>
    </item>
    <item>
      <title>PaddleLabel部署</title>
      <link>https://runzhliu.cn/oral/posts/oral/paddlelabel%E9%83%A8%E7%BD%B2/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/paddlelabel%E9%83%A8%E7%BD%B2/</guid>
      <description>概述 这是一个 web 项目，可以支持给图片做标注（3d还是不够用）。&#xA;安装 参考这个安装文档。&#xA;conda create -n paddlelabel python=3.11 conda activate paddlelabel pip install --upgrade paddlelabel 安装成功后，可以在终端使用如下指令启动 PaddleLabel&#xA;paddlelabel # 启动paddlelabel pdlabel # 缩写，和paddlelabel完全相同 PaddleLabel 启动后会自动在浏览器中打开网页。&#xA;更多启动选项 -p, &amp;ndash;port：指定运行端口。PaddleLabel 默认运行网址为http://localhost:17995 -l, &amp;ndash;lan：暴露服务到局域网。开启后可以在同一局域网下机器 A 上运行 PaddleLabel，在电脑 B 或平板 C 上进行标注。在 docker 中运行时也需要添加 -l -d， &amp;ndash;debug：在命令行中显示更详细的 log，可用于观察导入导出过程中的行为，定位问题等 paddlelabel &amp;ndash;port 8000 &amp;ndash;lan &amp;ndash;debug # 在8000端口上运行，将服务暴露到局域网，显示详细log 更多启动参数可以使用 paddlelabel -h 查看。&#xA;问题排查 run() got an unexpected keyword argument &amp;lsquo;debug&amp;rsquo; pip install uvicorn[flask]==0.18.1 TypeError: &amp;lsquo;coroutine&amp;rsquo; object is not callable pip install uvicorn==0.</description>
    </item>
    <item>
      <title>PaddleSeg资料</title>
      <link>https://runzhliu.cn/oral/posts/oral/paddleseg%E8%B5%84%E6%96%99/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/paddleseg%E8%B5%84%E6%96%99/</guid>
      <description>概述 收集一些相关资料。&#xA;DICOM 用数字成像和通信（DICOM）追踪医学图像已经成为存储和交换医学图像数据的标准解决方案。该标准的第一个版本发布于1985年，内容后来有些许的变动。该标准使用的格式包括文件格式和通信协议。&#xA;文件格式。所有病人的医学图像均以数字成像和通信（DICOM）的格式进行保存。保存的文件格式中含有关于患者的受保护的健康信息（PHI），包括姓名、性别、年龄以及其他与图像相关的数据，例如用于捕获图像的设备和一些关于医疗背景的资料等。医疗影像设备创建 DICOM 文件。计算机软件应用程序能够显示 DICOM 图像，医生可以通过使用 DICOM 查看器来查看图像并读取、诊断图像中的结果。&#xA;通信协议。DICOM 通信协议用于在档案中搜索成像研究，并将找到的成像研究恢复到工作站中并将其显示出来。连接到医院网络的所有医学成像应用程序均使用 DICOM 协议进行信息交换，主要包括 DICOM 图像，同时也包括患者以及手术信息等。此外还有更先进的网络命令，主要用于控制和追踪治疗进度、调度程序、报告状态，并且能在医生和成像设备之间实现工作负荷共享。&#xA;CT 扫描的测量单位是 Hounsfield 单位（HU），主要用来度量辐射强度。CT 扫描仪经过精密的校准可以准确地进行测量工作。点击以下网址可以看到关于 CT 扫描仪的详细信息：https://web.archive.org/web/20070926231241/http://www.intl.elsevierhealth.com/e-books/pdf/940.pdf。&#xA;每个像素都分配有一个数值（CT号），该数值是包含在相应像素中的所有衰减值的平均值。Godfrey Hounsfield 先生曾将分配的数值与水的衰减值进行比较，自那以后所有的数据均以 Hounsfield 为单位进行命名，并且在 Hounsfield 量表有所体现。&#xA;此 Hounsfield 量表将水的衰减值分配为零（HU）。CT 数据的范围是 2000HU，不过一些现代扫描仪的 HU 范围已经上升到了 4000 HU。每个数字代表了在光谱两端有+1000（白色）和-1000（黑色）的灰色阴影。&#xA;理解 矢状面 冠状面 横截面&#xA;参考资料 百度开源的图像分割软件 一个CT viewer Dealing with DICOM Using ImageIO Python Package|重要 GO的CT处理库 医学图像处理科普 镜像仓库 拯救脂肪肝第一步！以飞桨3D医疗影像分割方案MedicalSeg自主诊断脂肪肝 快速开始 </description>
    </item>
    <item>
      <title>simple-admin-core调研</title>
      <link>https://runzhliu.cn/oral/posts/oral/simple-admin-core%E8%B0%83%E7%A0%94/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/simple-admin-core%E8%B0%83%E7%A0%94/</guid>
      <description>概述 可以做一个管理后台出来，比较简单的一个实现。&#xA;开发 参考资料 </description>
    </item>
    <item>
      <title>论文分析-1</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%AE%BA%E6%96%87%E5%88%86%E6%9E%90-1/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%AE%BA%E6%96%87%E5%88%86%E6%9E%90-1/</guid>
      <description>概述 分析 Abnormal maxillary sinus diagnosing on CBCT images via object detection and ‘straight-forward’ classification deep learning strategy。&#xA;统计方法 We randomly split the image datasets into training, validation and test set at the ratio of 7:2:1. In addition, we balanced the distribution of cases with and without maxillary sinus abnormalities between the training, validation, and test sets in order to address potential sources of bias (Table A1). The deep-learning-based screening model consists of detector and diagnostor modules.</description>
    </item>
    <item>
      <title>CNN和Yolo结合的流水线</title>
      <link>https://runzhliu.cn/oral/posts/oral/cnn%E5%92%8Cyolo%E7%BB%93%E5%90%88%E7%9A%84%E6%B5%81%E6%B0%B4%E7%BA%BF/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/cnn%E5%92%8Cyolo%E7%BB%93%E5%90%88%E7%9A%84%E6%B5%81%E6%B0%B4%E7%BA%BF/</guid>
      <description>概述 图片分成 patient 和 nonpatient，前者是病人的真实图片，后者可以理解成一个影像学的模型。&#xA;训练模型图片来源可以分为两种，通过 yolo 自动语义分割的图片以及用 labelme 人工标注的图片。前者的优点是通过少量的标注图片训练出来的 yolo 模型可以大量分割图片，省一点人工，缺点是 yolo 模型会有误差，不一定能分割很好。后者的优点是人工标注比较准确，缺点是相对耗时耗力。&#xA;图片来源 优点 缺点 yolo分割 快速大量 有误差，需要人工筛选 人工labelme 准确 耗费人力 数据格式协议 数据格式协议分为两部分，1是科研人员准备的原始数据，2是技术人员针对原始数据做的预处理和训练结果的目录格式和文件类型协议。这个协议目的是定义好数据进出的目录结构和格式。&#xA;数据读取的格式&#xA;除了下面标明的目录和格式以外，不要包含其他备份数据等，需要严格按照数据格式协议准备数据，否则有可能会出现不如预期的结果。&#xA;dataset ├── patient // 病人真实图片 ├── loose // 相当于图片的分类 └── 1.png // 放原图即可，jpg/png/jpeg皆可，需要保证所有图片一个格式 └── 1.json // Labelme处理的结果，json文件名需要与图片文件名一致 └── 2.png └── 2.json └── tight └── 1.png └── 1.json └── 2.png └── 2.json ├── model // 影像模型图片 ├── loose // 相当于图片的分类 └── 1.png // 放原图即可，jpg/png/jpeg皆可，需要保证所有图片一个格式 └── 1.</description>
    </item>
    <item>
      <title>CNN资料</title>
      <link>https://runzhliu.cn/oral/posts/oral/cnn%E8%B5%84%E6%96%99/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/cnn%E8%B5%84%E6%96%99/</guid>
      <description>概述 虽然ChatGPT带火了人工智能，但它还没找好挣钱的门路。急得投资人微软充当OpenAI的销售，大夏天的提着2.5L的矿泉水，背着电脑包，到处下基层去跟人聊行业结合，谈产品落地。&#xA;镜头一转，在计算机视觉（Computer Vision, CV）领域，人工智能反而挣着钱了。大家用AI生成衣服图片替换模特，也用AI生成游戏怪物替换特效师。甚至在传统的图书出版行业，有些书籍的插画，也开始用AI去生成。&#xA;因此，我打算聊聊人工智能在视觉方面的原理。然后，顺手从0到1创建一个属于自己的图像分类开放能力。&#xA;一、看看效果&#xA;为了让大家直观感受到AI对视觉处理的能力，我先拿一个低成本的图像分类代码演示一下。后面，咱再讲原理并自己建设。 python复制代码&#xA;from transformers import AutoImageProcessor, ResNetForImageClassification import torch from PIL import Image # 加载模型权重 processor = AutoImageProcessor.from_pretrained(&amp;#34;model&amp;#34;) model = ResNetForImageClassification.from_pretrained(&amp;#34;model&amp;#34;) # 选择一个图片 image = Image.open(&amp;#34;pics/dog.jpeg&amp;#34;) inputs = processor(image, return_tensors=&amp;#34;pt&amp;#34;) with torch.no_grad(): logits = model(**inputs).logits predicted_label = logits.argmax(-1).item() print(model.config.id2label[predicted_label]) 上面利用transformers加载了一个训练好的权重，实现了一个图像分类的功能。这就是全部的python代码。&#xA;我的项目文件结构是这样的：&#xA;|---- model # 模型权重 |---- cofig.json |---- preprocessor_config.json |---- pytorch_model.bin |---- pics # 测试图片 |---- dog.jpeg # 随便一张狗的图片 |---- main.py # python代码文件 model文件夹下，是人家训练好的模型，我们直接拿来用。你可以下载pytorch的权重，也可以选择TensorFlow的权重。记得对应pip install一下它们。另外别忘了 pip install transformers。</description>
    </item>
    <item>
      <title>CT图片</title>
      <link>https://runzhliu.cn/oral/posts/oral/ct%E5%9B%BE%E7%89%87/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/ct%E5%9B%BE%E7%89%87/</guid>
      <description>处理 CT（计算机断层扫描）图像在医学图像处理和分析中非常常见。Python 提供了许多强大的库，可以帮助你处理和分析 CT 图像。以下是一个简单的示例，以及一些开源项目和常用库的介绍。&#xA;示例：使用 SimpleITK 读取和处理 CT 图像 SimpleITK 是一个非常流行的医学图像处理库，支持读取、处理和保存各种医学图像格式。&#xA;安装 SimpleITK 你可以通过 pip 安装 SimpleITK：&#xA;pip install SimpleITK&#xA;示例代码 以下是一个简单的示例，展示如何读取、显示和处理 CT 图像：&#xA;import SimpleITK as sitk import matplotlib.pyplot as plt # 读取 CT 图像 image_path = &amp;#39;path_to_your_ct_image.dcm&amp;#39; # 替换为你的CT图像路径 ct_image = sitk.ReadImage(image_path) # 将图像转换为 numpy 数组 image_array = sitk.GetArrayFromImage(ct_image) # 显示图像 plt.imshow(image_array[0], cmap=&amp;#39;gray&amp;#39;) plt.title(&amp;#39;CT Image Slice&amp;#39;) plt.show() # 简单的图像处理示例：应用高斯平滑 smoothed_image = sitk.SmoothingRecursiveGaussian(ct_image, sigma=2.0) # 将处理后的图像转换为 numpy 数组 smoothed_image_array = sitk.</description>
    </item>
    <item>
      <title>Grad-CAM</title>
      <link>https://runzhliu.cn/oral/posts/oral/grad-cam/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/grad-cam/</guid>
      <description>概述 Class Activation Maps，是 CAM 的缩写。&#xA;实现 后续CAM变种算法 参考资料 pytorch-grad-cam Advanced Explainable AI for computer vision CAM系列（二）之Grad-CAM（原理讲解和代码实现） CNN可视化之类激活热力图Grad-CAM Grad-CAM class activation visualization Grad-CAM的详细介绍和Pytorch代码实现 可解释性分析GradCAM 了解 CNN 關注的區域：CAM 與 Grad-CAM 的介紹分享 pytorch-cnn-visualizations keras-cam </description>
    </item>
    <item>
      <title>keras权重转pytorch</title>
      <link>https://runzhliu.cn/oral/posts/oral/keras%E6%9D%83%E9%87%8D%E8%BD%ACpytorch/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/keras%E6%9D%83%E9%87%8D%E8%BD%ACpytorch/</guid>
      <description>概述 因为有时候，开源的一些医学影像相关的模型是用 keras 训练出来的，而在做 fine tuned 的时候，更多会用 pytorch 框架，所以有必要了解一下，怎么把 keras 的权重转成 torch 可读的格式。&#xA;代码 下面是示例代码。&#xA;from keras.models import Sequential from keras.layers import Dense, Activation # 对于具有 2 个类的单输入模型（二进制分类）: model = Sequential() model.add(Dense(32, activation=&amp;#39;relu&amp;#39;, input_dim=100)) model.add(Dense(1, activation=&amp;#39;sigmoid&amp;#39;)) model.compile(optimizer=&amp;#39;rmsprop&amp;#39;, loss=&amp;#39;binary_crossentropy&amp;#39;, metrics=[&amp;#39;accuracy&amp;#39;]) # 生成虚拟数据 import numpy as np data = np.random.random((1000, 100)) labels = np.random.randint(2, size=(1000, 1)) # 训练模型，以 32 个样本为一个 batch 进行迭代 model.fit(data, labels, epochs=10, batch_size=32) 类似 VGG 的卷积神经网络:&#xA;import numpy as np import keras from keras.</description>
    </item>
    <item>
      <title>paddle学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/paddle%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/paddle%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 环境 不用跟物理机环境恶斗，直接用 Docker，请参考文档 Linux下的Docker安装，在镜像里运行即可。&#xA;环境保存 docker commit 参考资料 容器安装 快速安装 Paddle官网 Paddle官方安装指南 </description>
    </item>
    <item>
      <title>yolo学习</title>
      <link>https://runzhliu.cn/oral/posts/oral/yolo%E5%AD%A6%E4%B9%A0/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/yolo%E5%AD%A6%E4%B9%A0/</guid>
      <description>概述 主要讲解如何使用 labelme 和 YoloV8 实现目标体的提取。&#xA;图片浏览器 pip install ultralytics[explorer] yolo explorer from ultralytics import YOLO # Load a model model = YOLO(&amp;#34;yolov8n.pt&amp;#34;) # load a pretrained model (recommended for training) # Train the model results = model.train(data=&amp;#34;brain-tumor.yaml&amp;#34;, epochs=100, imgsz=640) http://192.168.1.205:8080/runzhliu/YOLOv8/runs/d2ubt6p0/logs?nw=nwuserrunzhliu&#xA;如何制作训练数据集 # 安装软件 brew install wkentaro/labelme/labelme # 打开软件 labelme Labelme2YOLOv8 Labelme2YOLOv8 is a powerful tool for converting LabelMe&amp;rsquo;s JSON dataset Yolov8 format. This tool can also be used for YOLOv5/YOLOv8 segmentation datasets, if you have already made your segmentation dataset with LabelMe, it is easy to use this tool to help convert to YOLO format dataset.</description>
    </item>
    <item>
      <title>语义分割网络</title>
      <link>https://runzhliu.cn/oral/posts/oral/%E8%AF%AD%E4%B9%89%E5%88%86%E5%89%B2%E7%BD%91%E7%BB%9C/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://runzhliu.cn/oral/posts/oral/%E8%AF%AD%E4%B9%89%E5%88%86%E5%89%B2%E7%BD%91%E7%BB%9C/</guid>
      <description>概述 名词解释 语义分割网络 semantic-segmentation 测试 segmentation_models.pytorch examples 几个 notebook 都跑不起来。&#xA;huggingface官方 from datasets import load_dataset ds = load_dataset(&amp;#34;scene_parse_150&amp;#34;, split=&amp;#34;train[:50]&amp;#34;) ds = ds.train_test_split(test_size=0.2) train_ds = ds[&amp;#34;train&amp;#34;] test_ds = ds[&amp;#34;test&amp;#34;] train_ds[0] import json from huggingface_hub import cached_download, hf_hub_url repo_id = &amp;#34;huggingface/label-files&amp;#34; filename = &amp;#34;ade20k-hf-doc-builder.json&amp;#34; id2label = json.load(open(cached_download(hf_hub_url(repo_id, filename, repo_type=&amp;#34;dataset&amp;#34;)), &amp;#34;r&amp;#34;)) id2label = {int(k): v for k, v in id2label.items()} label2id = {v: k for k, v in id2label.items()} num_labels = len(id2label) from transformers import AutoImageProcessor feature_extractor = AutoImageProcessor.</description>
    </item>
  </channel>
</rss>
