1.pytorch githubԴ??
2.pytorch 源码解读进阶版 - 当你 import torch 的时候,你都干了些什么?(施工中)
3.李宏毅2023机器学习作业HW04解析和代码分享
4.[技术随笔]🛠🛠从源码安装Pytorch3D详细记录及学习资料
5.PyTorch/Python/Cuda/torchvision/torchaudio版本对应和兼容性
6.pytorch源码阅读系列之Parameter类
pytorch githubԴ??
本文为《面部表情识别》系列之《Android实现表情识别(含源码,可实时检测)》的分享,旨在将已训练好的面部表情识别模型移植到Android平台,开发一个实时运行的面部表情识别Android Demo。模型采用轻量级的主图源码图解mobilenet_v2,实现的准确率可达.%,基本满足业务性能需求。
项目详细指导如何将模型部署到Android中,包括模型的转换为ONNX、TNN等格式,并在Android上进行部署,实现一个表情识别的Android Demo APP。此APP在普通Android手机上能实现实时检测识别,CPU环境下约ms,GPU环境下约ms,基本满足业务性能要求。
以下为Android版本表情识别Demo效果展示:
Android面部表情识别APP Demo体验: download.csdn.net/downl...
或链接: pan.baidu.com/s/OOi-q... 提取码: cs5g
更多《面部表情识别》系列文章请参阅:
1.面部表情识别方法:采用基于人脸检测+面部表情分类识别方法。利用现有的人脸检测模型,无需重新训练,减少标注成本。易于采集人脸数据,分类模型针对性优化。
2.人脸检测方法:使用轻量化人脸检测模型,可在普通Android手机实时检测,模型体积仅1.7M左右。HTML手势密码源码参考链接: /Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB 。
3.面部表情识别模型训练:训练方法请参考另一篇博文《面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码)》。
4.面部表情识别模型Android部署:采用TNN进行Android部署。部署流程包括:模型转换为ONNX模型,ONNX模型转换为TNN模型,Android端上部署TNN模型。
具体部署步骤如下:
(1) 将Pytorch模型转换为ONNX模型。
(2) 将ONNX模型转换为TNN模型。
(3) 在Android端部署TNN模型。
5.运行效果:在普通手机CPU/GPU上实现实时检测和识别,CPU环境下约ms,GPU环境下约ms。
遇到的常见问题及解决方法:如果在运行APP时遇到闪退问题,可以参考解决方法:解决dlopen失败:找不到libomp.so库,请访问相关博客。
Android SDK和NDK相关版本信息请查阅相应文档。
项目源码下载地址: 面部表情识别3:Android实现表情识别(含源码,可实时检测)
项目包含内容:Android面部表情识别APP Demo体验链接。
pytorch 源码解读进阶版 - 当你 import torch 的时候,你都干了些什么?(施工中)
使用PyTorch,无论是训练还是预测,你首先编写的代码通常如下所示:
依据Python代码的编写规则,导入逻辑将去相应的PyTorch site-package目录寻找__init__.py文件,具体路径为:${ python_path}/lib/python3.8/site-packages/torch/__init__.py
本章节聚焦于__init__.py 这个Python文件,从这里开始深入剖析,three3源码探究在一行简单的`import torch`命令背后,PyTorch是如何完成关键基础设置的初始化。
重点一:从`from torch._C import *`开始
在__init__.py 中,首先跳过一些系统环境的检查和判断逻辑,核心代码段为`from torch._C import *`,具体位置如下(github.com/pytorch/pytorch...):
这代表了典型的C++共享库初始化过程,遵循CPython代码组织规则,`torch._C`模块对应一个名为PyInit__C的函数。在文件torch/csrc/stub.c中,找到了此函数的相关定义(github.com/pytorch/pytorch...)。
initModule被视为PyTorch初始化过程中的第一层调用栈,深入探讨此函数中的关键内容。
李宏毅机器学习作业HW解析和代码分享
MLSpring - HW4 相关信息:课程主页、课程视频、Kaggle链接、Sample代码、GitHub、Gitee、GitCode。即便Kaggle截止时间已过,你仍可在其上提交并查看分数。但需注意,应于截止前选择两个结果进行最后的Private评分。每年数据集大小与特性虽有细微差别,但基本一致,tv原生源码旧代码适用于新一年的作业。
任务目标:多类分类,性能指标:分类准确度。
数据解析:数据来自VoxCeleb2子集,随机选取了个演讲者。
基线:简单基线(0.),中等基线(0.),在total_steps=时,public_score达到0.。简单参考Optuna进行模型自动调参。
强基线(0.)、Boss基线(0.)。未在PDF中给出Boss基线具体分数,分数来源于Kaggle。模块未显著提升效果,代码中使用全局变量决定是否使用,欢迎大家提出改进意见。
消融研究:Self-Attention Pooling与AMSoftmax在epoch=,下的实验。AMSoftmax接受pred_layer输出,尝试接受encoder输出并重新训练全连接层,但效果不佳,可能为代码问题。
成绩:使用Transformers变体完成Strong基线的提示是转变为Conformer。简单介绍了其模型架构,推荐Pytorch版本源代码。闲玩online源码架构包括:SpecAug、Convolution Subsampling、Linear & Dropout、Conformer Block。每个Module使用了残差连接。
[技术随笔]🛠🛠从源码安装Pytorch3D详细记录及学习资料
在启动安装Pytorch3D之前,首要任务是选择合适的pytorch基础镜像。我选择了包含CUDA组件和驱动的pytorch 1.9的devel版本,以确保满足Pytorch3D对于pytorch和cuda版本的要求。我使用的是python 3.7、pytorch 1.9和cuda.2,前提是你已经在宿主机上配置好了显卡驱动和nvidia-docker,以便在容器内映射宿主机的显卡信息。 在安装前,确保nvcc编译器、CUDA工具箱和驱动正常运行,并且安装了git、vim、sudo和curl等基础工具。 下一步是配置CUB工具。按照Pytorch3D的安装文档,为了支持CUDA,需要先配置CUB,并设置CUB_HOME环境变量。由于选择的镜像包含CUDA,编译过程中会自动包含cuda。为保险起见,可以指定FORCE_CUDA环境变量为1。 从源码编译Pytorch3D时,避免了使用conda可能遇到的依赖冲突问题。在确认前两步没有问题后,编译过程通常顺利。安装完成后,检查日志和pytorch3d的版本信息。 为了验证Pytorch3D的正常运行,从ARkit中导出BS系数,尝试使用它渲染一个简单的白模,并利用GPU。观察到显卡被充分利用,表明设置正确,可以进行后续操作。 在完成安装并验证Pytorch3D的功能后,可以参考收集的资料来探索其更高级的用法。以下是几个示例:从Pytorch3D文档中获取的教程和代码示例。
开源社区的讨论和问题解答,特别是与Pytorch3D相关的话题。
个人经验分享和案例研究,可以在GitHub、Stack Overflow等平台找到。
通过这些资源,您可以深入学习Pytorch3D的功能和应用,进一步拓展其在计算机图形学、三维重建和深度学习等领域的应用。PyTorch/Python/Cuda/torchvision/torchaudio版本对应和兼容性
在使用PyTorch进行开发时,确保各组件之间的版本兼容性是关键。不正确的版本组合可能导致安装失败或运行时错误,影响项目的进展。因此,了解PyTorch、Python、CUDA、torchvision、torchaudio等组件的版本对应关系至关重要。
安装时应遵循版本对应原则。例如,若使用CUDA .0,应选择相应的PyTorch版本。如果目标环境为CPU而非GPU,选择不依赖CUDA的PyTorch版本。
此外,PyTorch的子库如torchvision、torchaudio、torchtext等也需与主库保持兼容。确保所有依赖库版本在文档或官方指南中列出的范围内,以避免兼容性问题。
获取详细版本信息和兼容性指南,可访问以下链接:
github.com/pytorch/pytorch
github.com/pytorch/pytorch
pytorch.org/audio/stable
pytorch源码阅读系列之Parameter类
PyTorch中,weight和bias的管理是通过Parameter类实现的,它在Linear类的初始化函数中起关键作用1。Parameter不仅作为Module类的内置属性,还能自动加入到Module的参数列表中,通过parameters()方法可方便获取。让我们深入理解Parameter类及其在Module中的运用。
Parameter类的作用主要体现在:作为Module的参数,它能自动注册,并可通过迭代器访问。为了验证,我们自定义一个Net实例,其layer的weight和bias,以及自定义的fun_param都是Parameter类型,都可在Net的named_parameters()中找到2。
进一步研究Parameter类的__new__()方法,虽然它继承自torch.Tensor,但没有显式的__init__(),实际在Module类的__setattr__()方法中进行参数注册3。当我们在Module实例上设置属性为Parameter时,会触发__setattr__(),其中的逻辑包括删除重复的属性名,确保Parameter类型且Module的初始化函数已执行,然后通过register_parameter()函数将其添加到_module的_parameters属性中。
总的来说,PyTorch通过在类实例属性赋值时进行自动注册,实现了Parameter与Module的有效集成,确保了网络参数的管理与访问的便捷性4。要了解更多细节,可以参考相关源码链接1,2,3。
1 github.com/pytorch/pyto...
2 github.com/pytorch/pyto...
3 github.com/pytorch/pyto...
阿尔法元之五子棋源码解读(AlphaZero-Gomoku)
阿尔法元在五子棋领域的源码解析揭示了强化学习在简单游戏中的深度应用。相较于围棋,五子棋虽简单,但其源码分析同样能让我们深入理解强化学习的原理。AlphaZero,最初凭借阿尔法狗的深度学习技术,后在没有人类干预的情况下,通过三天自学围棋并超越前辈,展现了人工智能的新里程碑。
本文着重探讨AlphaZero在五子棋上的具体应用,源码可在GitHub上获取,路径公开。理解该项目的前提是对强化学习有一定基础,如马尔可夫决策过程和蒙特卡洛方法。项目主要包含策略价值网络、蒙特卡洛树搜索算法和训练脚本,它们共同构建了强化学习与深度学习的交互过程。
项目的架构包括游戏处理、MCTS算法实现、策略价值网络训练以及人机对战脚本。Game.py定义了棋盘和游戏逻辑,mcts_alphaZero.py与mcts_pure.py则是MCTS玩家的实现,分别对应AlphaZero和纯MCTS版本。policy_value_net.py负责网络模型,根据不同框架实现,如Tensorflow或Pytorch。train.py则实现了AlphaZero的训练流程,通过模拟对弈和数据增强来优化网络。
运行项目,你可以通过human_play.py与预训练的AI对战,感受强化学习的力量。源码剖析中,human_play.py脚本的核心是创建棋盘、玩家,并通过循环进行人机对弈,直到游戏结束。