高频代码
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
np.set_printoptions(suppress=True)
torch.set_printoptions(sci_mode=False)
bash
Linux系统设置回收站(屡屡犯错,非常重要!),详见教程
增加移动时,是否覆盖的提醒
mv $@ ~/.trash/
修改为
mv -i $@ ~/.trash/
bash的for循环
for i in 11 12 13 14 15 16
do
python train.py --case $i --exp_name $i
done
MAC录屏
开始 Command+Shift+5
结束 Command+Ctrl+Esc
其它Memo
python后台运行
nohup python -u XXXX.py > XXXX.txt 2>&1 &
tail -f XXXX.txt
统计文件行数
wc -l filename # 因为是按照\n进行统计的,所以最后一行如果没有\n,会少一行
sed -n '$=' filename
合并文件夹
详见:教程
Linux命令行常用快捷键,详见:链接
根据进程id,查看进程信息
ps -ef | grep -v grep | grep 74751
查看当前目录下各个文件夹的大小(不包含文件,但会显示当前文件夹的总的大小)
sudo du -h --max-depth=1 | sort -hr
sudo du -sh * | sort -rh(适用于Mac)
清空回收站
rm -rf ~/.local/share/Trash/*
查看当前目录下所有文件的大小(对于文件夹也会显示其大小,但这个大小通常只有几K,不代表该文件夹下的所有内容的大小之和)
ls -lht
ssh简称
在.ssh/config文件中写入
Host nail
HostName 11.138.130.1
User bowen.pbw
环境变量相关
Mac上的环境变量.bash_profile
export PATH=$PATH:<Your-Path>
Python查看内存使用
import psutil
memory = psutil.virtual_memory()
used = float(memory.used) / 1024 ** 3
remain = float(memory.free) / 1024 ** 3
print('Memory Condition [used | remain] = [%.3f | %.3f] GB' % (used, remain))
# 注:每次需要查看内存都要重新创建变量memory
压缩/解压相关
tar命令仅打包不压缩,用于发布数据集
tar cvf XXX.tar folder1 folder2 ... # 打包
tar xvf XXX.tar # 解包
tar -xzvf XXXX.tar.gz // 解压tar.gz文件
tar zxvf XXXX.tgz // 解压tgz文件
unrar x XXXX.rar
待解压的文件从images.tar.00到images.tar.16
cat images.tar.* > images.tar
tar -xvf images.tar
Q:待解压的文件是分卷形式{XXX.zip, XXX.z01, XXX.z02},应该如何解压?
A:首先需要合并为一个完整的zip,然后再解压
zip -s- XXX.zip --out full.zip
unzip full.zip
zip -s 1G origin.zip --out others.zip # 得到others.zip, others.z01, others.z02 ...
zip others.zip others.z01 others.z02 ... -s=0 --out sum.zip # 合并分卷为一个完整的zip
# zip压缩时排除多个文件夹,注意要加引号
zip -r cartoon.zip cartoon/ -x "cartoon/results/*" -x "cartoon/dataset/*"
举办比赛时压缩文件,加密且只打包不压缩
zip -P password -r -0 file.zip folder
sed命令
sed -i -e '4a#this is a new line' main.py # 在第4行插入,-i表示直接覆盖
sed -n '70,75p' XXXX # 打印文件的第70~75行
Google Colab
按F12打开Console,运行如下代码防止掉线
functionClickConnect(){console.log(“Working”);document.querySelector(“colab-toolbar-button#connect”).click()}setInterval(ClickConnect,60000)
Vim相关
不保存退出vim
Shift ZQ
face服务器粘贴混乱
:set paste
进行粘贴
:set nopaste
更好的方法是:link
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
配置.vimrc
set mouse=a
set nu
set nohlsearch
set smarttab
set tabstop=4
set shiftwidth=4
set expandtab
map <F1> <Nop>
nnoremap <F8> :w<CR>
inoremap <F8> <esc>:w<CR>i<right>
nnoremap <F9> :w<CR>
inoremap <F9> <esc>:w<CR>i<right>
nnoremap <F10> :w<CR>
inoremap <F10> <esc>:w<CR>i<right>
hi comment ctermfg=2
安装python cv2
pip install opencv-python # 能够保证安装最新版
conda install opencv
安装视频读写相关的库
conda install -c conda-forge imageio
pip install imageio-ffmpeg
conda install ffmpeg -c conda-forge
writer = imageio.get_writer('XXX.mp4', fps=25)
writer.append_data(img)
writer.close()
cuda相关
查看cuda版本
nvcc -V
nvcc --version
cat /usr/local/cuda/version.txt
torch.version.cuda
查看cudnn版本
torch.backends.cudnn.version()
NVIDIA CUDA
将屏幕上打印的信息同时写入文件
python test.py | tee output.txt
强行释放GPU内存
sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID
kill -9 PID
创建新用户(包括创建该用户的home目录),然后赋予管理员权限
adduser YOUR_NAME
usermod -aG sudo YOUR_NAME
# 一些环境变量是没有的,记得在.bashrc中添加
使用Python查看CPU核心数
>>> from multiprocessing import cpu_count
>>> print(cpu_count)
pip安装屏蔽输出
pip install pretrainedmodels > /dev/null 2>&1
Conda相关
conda安装速度慢
在以下网页搜索相关库,下载到本地
https://anaconda.org/conda-forge/cudatoolkit/files
conda install --use-local XXXXX.tar.bz2
conda添加源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
真正解决condaHTTPERROR的问题:https://blog.csdn.net/ebzxw/article/details/80702506
conda瘦身
conda clean -p //删除没有用的包
conda clean -t //tar打包
conda clean -y --all //删除所有的安装包及cache
当出现conda install: Segmentation fault时,使用上述命令删除缓存即可
conda克隆环境
conda create -n new_env --clone exist_env
查看当前环境安装了哪些库
conda list
【虚拟环境安装library的源代码路径】
/anaconda2/envs/learn_torchvision/lib/python3.7/site-packages/torchvision
cuDNN相关
本质上就是把文件下载下来,复制到/usr/local/cuda
下,详见:安装教程
之后还要设置一些环境变量,详见:参考教程
查看cuDNN版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
【实际安装】
下载cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
解压:tar -xvJf cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
里面包含include目录, lib目录, LICENSE文件
开始复制
sudo cp cudnn-linux-x86_64-8.5.0.96_cuda11-archive/include/cudnn* /usr/local/cuda/include/
sudo cp cudnn-linux-x86_64-8.5.0.96_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64/
jupyter使用虚拟环境
pip install --user ipykernel // 首先安装ipykernel
python -m ipykernel install --user --name=py37 // 然后注册虚拟环境py37
使用soft link
# 将shortcut作为example_dir的快捷方式(建议使用绝对路径)
# 注意shortcut不能用mkdir事先创建(因为shortcut本来就不是真正的文件夹)
ln -s example_dir shortcut
解除soft link
unlink shortcut
服务器安装imgcat
,完成之后重新登陆一下才生效
wget https://iterm2.com/utilities/imgcat; cp imgcat /usr/local/bin/imgcat; chmod +x /usr/local/bin/imgcat
查找某个文件夹下的所有jpg文件,统计数量
find dir_name -name "*.jpg" | wc -l
查找某个目录下所有.py
文件中,包含CONTENT
的文件
find YOUR_FOLDER -type f -name "*.py" | xargs grep "CONTENT"
服务器matplotlib画图
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
bash glob pattern
参见 教程
TensorFlow相关
安装tf1.15版
conda安装 cudatoolkit=10.0.130 cudnn=7.6.5
然后安装tensorflow-gpu==1.15.2
【报错】
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
【解决】
pip install --upgrade protobuf==3.20.0
测试gpu是否可用
tf.test.is_gpu_available()
tf.config.list_physical_devices('GPU')
注:tensorflow版本必须和cuda严格对应,所以直接用conda来安装管理cuda版本即可
conda install cudatoolkit=10.1 cudnn=7.6.5
cmake安装/升级
chmod +x cmake-3.17.2-Linux-x86_64.sh
./cmake-3.17.2-Linux-x86_64.sh
生成cmake-3.17.2-Linux-x86_64
目录,替换/usr/local/bin/cmake,/usr/local/bin/cpack,/usr/local/bin/ctest,/usr/local/share/cmake-3.17
检查文件md5
https://blog.csdn.net/jgw2008/article/details/78665901
osscmd
osscmd uploadfromdir local_dir oss_dir # 上传文件夹
osscmd downloadtodir oss_dir local_dir # 下载文件夹
osscmd multiget oss://bucket/object localfile --thread_num=5 # 多线程下载
pathlib
path.iterdir() # 遍历所有文件
path.glob('*.jpg') # 遍历指定后缀的文件
path.glob('**/*.txt')) # 递归遍历指定后缀的文件
path.is_dir()
path.exists()
is_empty = not any(path.iterdir()) # 判断文件夹是否为空
path.name # 对于文件,去除目录,得到文件名
path.suffix # 后缀
path.stem # 除了后缀
path.parent # 父级目录
path.mkdir(parents=True, exist_ok=True) # 递归创建文件夹
os.makedirs(path, exist_ok=True) # 使用os递归创建文件夹
视频读写
Warning:使用imageio和cv2读取视频,帧数可能不一样
videoCapture = cv2.VideoCapture()
filename = 'video02.MP4'
videoCapture.open(filename)
# 读视频
fps = int(videoCapture.get(cv2.CAP_PROP_FPS))
num_frame = int(videoCapture.get(cv2.CAP_PROP_FRAME_COUNT))
print('fps = %d, num_frame = %d' % (fps, num_frame))
for i in range(num_frame):
ret, img = videoCapture.read()
# 写视频
h, w, _ = img_list[0].shape
size = (w, h)
output_path = 'result.mp4'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
writer = cv2.VideoWriter(output_path, fourcc, fps, size)
for img in img_list:
writer.write(img)
writer.release()
# 读视频
reader = imageio.get_reader(video_path, 'ffmpeg')
fps = reader.get_meta_data()['fps']
img_list = []
for img in reader:
img_list.append(img)
# 写视频
writer = imageio.get_writer(output_path, fps=fps)
for img in img_list:
writer.append_data(img)
writer.close()
视频转gif
参考:https://zhuanlan.zhihu.com/p/163575055
pip指定源
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
-i https://mirrors.aliyun.com/pypi/simple
-i https://pypi.mirrors.ustc.edu.cn/simple
gcc相关
gcc -v # 查看gcc版本
挂载移动硬盘
似乎在Ubuntu桌面系统上直接插上移动硬盘就可以用图形界面打开,进行文件操作了
安装cpu版pytorch3d
ffmpeg
# 截取视频某一段
ffmpeg -i input.mp4 -vcodec copy -acodec copy -ss 00:02:13(起始时间) -to 00:02:38(结束时间) output.mp4 -y
# 提取音频
ffmpeg -i video_raw.mp4 -f mp3 -vn audio.mp3
# 清空音频
ffmpeg -i video_raw.mp4 -an video_temp.mp4
# 添加音频
ffmpeg -i audio.mp3 -i video_temp.mp4 -y video_output.mp4
# 压缩视频,fps减少,时长不变
ffmpeg -i input.mp4 -r 30 output.mp4
# 将文件夹的图像合成为视频
ffmpeg -y -r 10 -i img_dir/%3d.png -c:v libx264 -vf fps=15 out.mp4
软件iTerm2
设置option+左/右的光标移动,见 教程
brew国内安装
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
Sublime3偏好设置
{
"theme": "Default.sublime-theme",
"color_scheme": "Monokai.sublime-color-scheme",
"font_size": 16,
"tab_size": 4,
"translate_tabs_to_spaces": true,
"open_files_in_new_window": false,
}