基于 Pytorch 的深度学习 - 学习记录

[仅为个人记录,不定期更新]

Pytorch 记录

detach().numpy() 函数

常见于从计算图中剥离损失函数,下面是 “C知道” 的解释:

detach().numpy()函数是PyTorch中的一个函数,用于将一个Tensor从计算图中分离出来,并将其转换为一个NumPy数组。这个函数通常用于将模型输出的Tensor转换为NumPy数组,以便进行后续的处理和可视化。使用detach()函数可以避免在计算图中保留不必要的计算,从而提高计算效率。同时,使用numpy()函数可以将Tensor转换为NumPy数组,方便进行各种数学运算和可视化操作。

Tensor.scatter_() 函数

在这里插入图片描述src 中的元素,按照 index 被 scatter (可以理解为填充) 到目标 tensor 中,常用于生成 one-hot 编码。src 中每个元素的目标位置索引,除指定维度 (dimension == dim) 外,其他维度的索引不变,即只改变指定维度上的索引顺序 (按照 index) 。

模型参数量计算

pytorch 自带方法:

total = sum([param.nelement() for param in model.parameters()])

print("Number of parameter: %.2fM" % (total/1e6))

其他方法可参见:link- pytorch得到模型的计算量和参数量

网络搭建 tips

  1. 卷积层后面跟 BN 层时,根据 BN 计算的原理可知,此时设置卷积层偏置 bias 多此一举,因此不设置偏置 bias;
  2. 在一些卷积层模块中包含参数 inplace,如 nn.ReLU(inplace=True),当 inplace(就地计算)为 True 时,将计算得到的值直接覆盖之前的值,不利用中间变量进行存储(注:产生的计算结果不会有影响,利用 inplace 计算可以节省内/显存,同时还可以省去反复申请和释放内存的时间,但是会对原变量覆盖,主要不带来错误就用);

Python 记录

字符串 title() 函数

返回字符串的标题大小写形式,即单词的第一个字符用大写字母表示,其余所有字母用小写字母表示。

s = 'PYTHON IS GOOD!'
print(s.title())

OUTPUT: Python Is Good!

程序运行时warning警告的忽略方法

python 程序开发时,warning 通常不会影响程序运行,但会影响对其他输出的监控。
方法一:

import warnings
warnings.filterwarnings('ignore')

方法二:忽略命令行下警告错误的输出

python -W ignore yourscript.py

python 内置模块

模块1:argparse——命令行选项、参数和子命令解析器

主要有三个步骤:
1.创建 ArgumentParser() 对象
2.调用 add_argument() 方法添加参数
3.使用 parse_args() 解析添加的参数

模块2:logging——主要用于输出运行日志,可以设置输出日志的等级、日志保存路径等

相比 print,具备如下优点:
1.可以通过设置不同的日志等级,在 release 版本中只输出重要信息,而不必显示大量的调试信息;
2.print 将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging 则可以由开发者决定将信息输出到什么地方,以及怎么输出;
3.和 print 相比,logging 是线程安全的。

logging.basicConfig(**kwargs):
使用默认格式化程序创建 StreamHandler 并将其添加到根日志记录器中,从而完成日志系统的基本配置。如果没有为根日志程序定义处理程序,debug()、info()、warning()、error()和 critical() 函数将自动调用 basicConfig()。

更换 pip 源的两种方法

Note:
3D Slicer 内置 pip_install 安装第三方库的地址:
/home/han/software/Slicer-5.4.0-linux-amd64/lib/Python/lib/python3.9/site-packages/

方式一:永久更换 pip 源

# 打开控制台或终端,并输入以下命令:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 输出:Writing to /home/han/.config/pip/pip.conf
# 更改 pip 源后,可以通过以下命令验证:
pip config get global.index-url

方式二:临时使用 pip 源
输入“pip install xxx”,使用默认源;
插入国内镜像源地址:
pip install -i 镜像源地址 xxx

几个常用镜像源:
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
豆瓣:https://pypi.douban.com/simple/
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
中科大:https://pypi.mirrors.ustc.edu.cn/simple/

Ubuntu 记录

临时挂载硬盘

sudo mount /dev/sda5 ./USB

文件拷贝

cp [选项] 源文件或目录 目标文件或目录
-i 交互式提示
-r 递归拷贝目录及其内容
-v 显示拷贝后的路径描述
-a 保留文件的原有权限

vim 的三种工作模式

在这里插入图片描述一些具体命令可参考:link

解决 NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

问题原因:
ubuntu 内核版本升级后,会优先使用较高的版本,ubuntu 会修改默认开机启动的内核版本(最新的)。而最新的内核版本和原来的 ubuntu 其他组件起了冲突,则导致无法连接 Nvidia 驱动了。
解决办法:

  1. 在(双)系统启动界面,进入“Ubuntu 高级选项”(如,索引为 1),查看旧版本内核的索引(如,索引为 2);
  2. 进入系统进行如下设置:
sudo gedit /etc/default/grub
# 再将进入设置 GRUB—DEFAULT
GRUB_DEFAULT="1> 2"
# 则系统启动时会自动进入 ubuntu 高级选项,并选择进入旧版本的系统
# 保存退出后,运行如下命令更新 GRUB 配置文件
sudo update-grub
  1. 重启系统
  2. 进入 Setting 中,将 ubuntu 的软件与系统更新,设置为“从不”。

为 pycharm 创建桌面快捷方式

创建快捷方式前的程序启动方式:
终端输入

pycharm.sh

桌面快捷方式的创建步骤:

  1. 在 /usr/share/applications 文件夹下创建 pycharm.desktop 文件
sudo vim /usr/share/applications/pycharm.desktop

注意:此时若不在命令前加 sudo,则在文件退出时会弹出报错
E212: Can’t open file for writing
这个报错是由于权限问题导致的。

  1. 编辑 pycharm.desktop 文件
[Desktop Entry]
Type=Application
Name=Pycharm
GenericName=Pycharm3
Comment=Pycharm3: The Python IDE
# Exec=sh /home/XXX/software/pycharm-community-2021.3.2/bin/pycharm.sh
Exec="/home/XXX/software/pycharm-community-2021.3.2/bin/pycharm.sh" %f
Icon=/home/XXX/software/pycharm-community-2021.3.2/bin/pycharm.png
Terminal=pycharm
Categories=Pycharm;
  1. 查看是否有效
    按住 win 键,搜索 pycharm,是否出现应用图标。

  2. 将 /usr/share/applications/pycharm.desktop 复制到桌面
    右击鼠标,选择 Allow launching。完成!

其他第三方库

opencv-python

cv2.imread()

def imread(filename: Any, 
		   flags: Any = None) -> None

flags: 图像的通道和色彩信息(默认值为 1,即彩色图像)
flags = -1, 8 位深度,原通道
flags = 0, 8 位深度,1 通道
flags = 1, 8 位深度,3 通道
flags = 2, 原深度,1 通道
flags = 3, 原深度,3 通道
flags = 4, 8 位深度,3 通道

边界模式 BorderMode

在这里插入图片描述
源:link
在这里插入图片描述

Matplotlib

legend (图例) 定位方法

  1. 使用参数 loc: str or pair of floats,其内置了一些位置 (default: ‘best’):
    在这里插入图片描述
  2. 使用参数 bbox_to_ancher: BboxBase, 2-tuple, or 4-tuple of floats,可以控制任意位置,坐标表示比例:
    在这里插入图片描述

常用资源网址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
无人机视觉检测和跟踪yolov5_deepsort_pytorch-master-newest-drone.zip 是一个基于深度学习模型的无人机目标检测和跟踪工具包。它使用了YOLOv5和DeepSORT这两个先进的算法来实现对无人机进行实时监测和跟踪。下面是对该工具包的详细解释: YOLOv5是一种在计算机视觉领域非常先进的目标检测算法,它使用深度卷积神经网络来实现实时目标检测。该工具包使用YOLOv5来对图像或视频中的无人机进行快速而准确的检测和定位。 DeepSORT是一种在多目标跟踪领域非常流行的算法,它结合了深度学习和卡尔曼滤波器来实现对目标的持续跟踪。该工具包使用DeepSORT来对检测到的无人机进行跟踪,并提供准确的目标轨迹信息。 这个工具包的主要特点包括:高效的无人机检测和定位、准确的目标跟踪、实时处理能力以及易于使用的界面。使用该工具包,我们可以实时地监测无人机的位置和动态信息,同时可以对其进行跟踪和记录。这对于无人机安全监控、无人机航拍和无人机调度等应用非常有用。 值得注意的是,使用该工具包需要一定的计算资源和图像处理能力。同时,对于不同的无人机视觉场景和环境,可能需要对该工具包进行一定的参数调整和优化,以获得更好的检测和跟踪效果。 综上所述,无人机视觉检测和跟踪yolov5_deepsort_pytorch-master-newest-drone.zip 是一个强大而高效的工具包,可以实现对无人机的实时检测和跟踪。它基于YOLOv5和DeepSORT算法,提供准确的无人机定位和目标轨迹信息。同时,使用该工具包需要一定的计算资源和参数调整。对于无人机安全监控、无人机航拍和无人机调度等应用具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值