本科阶段没学过linux真的很伤~~完全看不懂那些命令。
参考博客:
如何在Linux服务器上安装Anaconda(超详细)
简单记录几点博客里没写但我遇到的:
.bashrc
文件中加添加环境变量的命令,再执行一次.bashrc
文件。最大的困难是我不会写对应的linux命令。cd 进入/home/xxx
vim .bashrc # 打开.bashrc文件
i # 进入编辑模式
在最后一行添加 export PATH=/home/xxx/anaconda3/bin:$PATH # 具体路径看自己
按esc退出编辑模式
:wq # 保存并关闭文件
source .bashrc # 激活环境
anaconda -V # 测试是否成功,V要大写
conda -V # V要大写
使用的服务器是RTX3090+CUDA11.4,网上通用的一些方法试过了没啥用,包括清华镜像、阿里云镜像啥的,也不能安装CUDA10.2后续跑不了代码,最后终于找到了一篇博客教程,顺利安装:
3090显卡(CUDA11.1)安装Pytorch
不需要挂梯子,运行下面的命令即可:
pip install torch===1.7.1+cu110 torchvision===0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
windows和linux使用conda的命令也小有差异,以下纪录conda的。
# 创建虚拟环境
conda create -n your_env_name python=3.7
# 激活虚拟环境
source activate your_env_name
# 关闭虚拟环境
source deactivate your_env_name
# 删除虚拟环境
conda remove -n your_env_name --all
# 删除虚拟环境中的包
conda remove --name $your_env_name $package_name
conda install package_name
# 镜像源
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple/
conda uninstall package_name
conda remove package_name
# conda安装信息
conda info
# 查看conda帮助
conda help
# 列出环境
conda env list
真的有用!
在ubuntu上使用git克隆github上的项目
# 列出当前目录下的文件和文件夹
ls(list)
# 列出文件和文件夹的详细信息
ls -l
# 新建路径a
mkdir a(make directory)
# 创建文件
touch 文件名
# 进入a路径
cd a
# 上一级目录
../
# 当前目录
./
# 查看当前路径
pwd
# 将test目录重命名为dir
mv test/ dir
# 将a移动到b目录下,如果b目录不存在,即把a重命名为b
mv a b/
# 看文件树
tree
# 将a文件夹拷贝到b文件夹下 -r代表递归
cp -r a b
#删除a文件夹 rm(remove) -r代表递归 -f代表强制
rm -rf a
# 删除a文件夹下的所有文件
rm -rf a/*
# 设置环境变量:全局有效
export PATH=/home/xxx/anaconda/bin:$PATH # 将export命令写入文件:~/.bashrc
source ~/.bashrc
env | grep PATH # 查看是否设置成功
# 编辑文本文件
vim
# 将a文件夹压缩为a.tar.gz的压缩包
tar czf a.tar.gz a/
# 将a.tar.gz压缩包解压
tar xzf a.tar.gz
# .tar 只打包,不压缩文件
# .gz 只压缩,不打包文件
# .tar.gz 打包压缩文件
# 查看GPU信息
nvidia-smi
# 查看每张GPU的可用显存
nvidia-smi --query-gpu=memory.free --format=csv
# 每隔一秒查看每张GPU的显存
watch -n 1 nvidia-smi --query-gpu=memory.used --format=csv
# 查看进程
ps -ef
# 查看进程的CPU和内存占用
# %CPU RES
top
# 重定向日志
# 一般情况日志会输出到stdout/stderr中
# 重定向到train.log文件中,2代表stderr,1代表stdout
python train.py > ./train.log 2>&1
# &: 后台运行
python train.py > ./train.log 2>&1 &
# 将日志文件的内容打印在stdout
# cat: concatenate files to standard output
cat ./train.log
# 比较2个文档的差别
vimdiff single_gpu.py mp_train.py
# 在服务器之间复制文件和目录
scp file.txt root@IP:port/path # 复制文件
scp -r 本机文件路径 -P 远程端口号 root@IP:/path # 复制目录
# 文件或网页的url
wget URL
# 下载多个文件:将url保存至一个文本文件中
wget -i download_files.txt
# 为下载的文件重命名
wget -O filename URL
# 恢复未完成的下载
wget -c
# 下载百度网盘链接
# 文件下载链接:在浏览器下载管理中可以复制
wget -c --referer=网盘分享链接 -O 文件名 "文件下载链接"
nohup python train.py > train.log 2>&1 &
# nohup可以让命令忽略挂起信号
# 第一个 > 表示将命令的标准输出重定向到 train.log
# 2>&1表示将标准错误重定向到标准输出,此处也是train.log
# 最后一个&表示让命令在后台运行
CUDA_VISIBLE_DEVICES=1 nohup python train.py > nohup.log 2>&1 &
# 指定显卡编号 写在nohup前面
ps -ef|grep train # 返回nohup启动的所有相关进程(能识别你的进程名称的关键词)
ps -ef|head -1;ps -ef|grep train # 获取标题头
kill -9 pid # pid为每一行的第二个id编码,表示的是该进程的父进程
kill -TERM pid # 杀死多进程程序命令
# 安装包 可以在全局使用
pip install git+Github地址
# 把库安装在项目下
git clone [email protected]:facebookresearch/segment-anything.git
cd segment-anything; pip install -e .
# 复制存储库
git clone Github地址
# nvitop库: NVIDIA-GPU设备运行状况的实时监控工具
pip install nvitop
nvitop
# disk free: 检查文件系统的磁盘占用情况
df -hl # -h: 方便阅读 -l: 本地文件系统
# disk usage: 该目录下所有文件夹所占空间的大小
du -hl --max-depth=1
我没有从Unet论文里给的链接找到代码,去github搜索star高的项目,都是一大坨一大坨的,看不下去。连我非常期待的wz老师写的Unet代码也过于复杂,真的看不懂q_q。所以花了很久的时间在网上找资料。
学Unet看这篇博客:UNet 网络做图像分割DRIVE数据集
简单记录一下我的学习过程:
batch_size = 8
in_channels = 1
num_classes = 1
optimizer = optim.RMSprop(net.parameters(), lr=0.00001,weight_decay=1e-8, momentum=0.9)
loss = nn.BCEWithLogitsLoss()
一个小疑问:
当数据集是多分类时,模型的输出通道数=num_classes吗?label的形状是怎样的呢?此时该如何计算loss和Dice?
isles2022、isles2017、isles2018、isles2016、atlasv2
医学图像分割最常用的指标是Dice和HD95,主要是需要知道如何使用。
这篇博客讲的比较清晰:
关于何时需要sigmoid和softmax?output和target的shape是怎样的?train和test计算Loss和DSC的差异是什么?
关于pytorch语义分割二分类问题的两种做法
该博客介绍了PA、CPA、MPA、IoU、MIoU 5个指标,写的比较通俗易懂:
【语义分割】评价指标:PA、CPA、MPA、IoU、MIoU详细总结和代码实现(零基础从入门到精通系列!)
这篇博客涉及Dice系数, Hausdorff距离,体积相关误差:
【理论+实践】史上最全-论文中常用的图像分割评价指标-附完整代码
我主要看了理论和公式,还没有看代码。
图像分割评估指标——表面距离计算库
3DSAM-Adapter使用该库计算NSD。
数据集读取的方式也太多了qwq
每次阅读一个新的项目,就看到一种新的数据读取方法。
我下载的数据集格式为.nii.gz
,尝试了2种数据集读取方法:
.nii.gz
格式的文件,使用nibabel
库,这是专门读取该格式文件的库。.nii.gz
格式的图片转换成.npy
格式的文件重新存储,train.py中直接读取.npy
的文件,代码运行时间相对短很多。使用SimpleITK
库。目前使用下来,觉得第二种方法更方便。
我下载的MICCAI公开数据集存在2个问题:
对于这种情况,解决方案是:
仅使用公开数据集中 train 的部分,并将 train 按照8:2分成 train set 和 test set。由于所有图片都在train一个文件夹下,因此这里又涉及到2种代码编写思路:
尝试找了几篇博文,但还没拜读:
[深度学习] loss不下降的解决方法
训练loss不下降原因集合
参考博客:
很感动,按照步骤来一个问题都没出,狠狠三连了!
【最全最细】Linux系统服务器使用Tensorboard实现可视化操作
我设置的侦听端口也是16666,目标端口也是6006。
首先代码中要使用pytorch的Tensorboard。
然后在xshell终端输入:
source activate [环境全称]
tensorboard --logdir=【你模型保存的绝对路径/相对路径】 --port 6006
localhost:16666 # 在浏览器中输入网址
数据集划分:最后133张做valid set,比例为8:2。
超参数:
image_depth=128, image_height=176, image_width=128
image_channel=1, numclass=1
loss_name='BinaryDiceLoss'
epochs=200, lr = 1e-3
训练结果:
最佳DSC约0.57。
一个小疑惑:
虽然此时 train loss 还没有收敛,但是当我将学习率修改为5e-3
时,loss反而下降更慢。
问题描述:
fatal: unable to access 'xxx':
Failed to connect to 127.0.0.1 port 7890 after 2081 ms:
Couldn't connect to server
解决方法:
解决git clone报错Failed to connect to 127.0.0.1 port 7890 after 2059 ms: Connection refused
问题描述:
fatal: unable to access 'xxxx':
Failed to connect to github.com port 443 after 21256 ms:
Couldn't connect to server
解决方法:
【DL】图解 Transformer – 李宏毅
只看了Transformer的Encoder部分。
详解Transformer中Self-Attention以及Multi-Head Attention
重点解释了Self-Attention和MSA。
Vision Transformer详解
LayerNorm和BatchNorm:
Layer Normalization解析
Batch Normalization详解以及pytorch实验
Dropout和DropPath:
深度学习中Dropout原理解析
只看了下工作流程。
nn.Dropout、DropPath的理解与pytorch代码
有Dropout的源码,但是原理比较复杂。其中解释了:问题:dropout中为什么要除以 keep_prob?
pytorch | softmax(x,dim=-1)参数dim的理解
关于dim的解释,强。
Swin-Transformer网络结构详解
谁懂,SAM怎么还用了Shifted Window Attention,要吐血了。
霹雳啪啦我的神仙导师!
实操教程 | GPU多卡并行训练总结(以pytorch为例)
对应github代码地址
分布式训练并不能将同1个模型分开放在不同的卡上,所以我用autodl租了A40来跑。贵死!
在Windows上实现nnU-Net v2的环境配置
nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)
关于pytorch语义分割二分类问题的两种做法
【深度学习技巧】语义分割中的多分类与二分类使用dice系数
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片: