Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
PyTorch Project Specification.
| Date | Stars |
|---|---|
| 2026-07-24 | 681 |
| 2026-07-25 | 681 |
| 2026-07-28 | 681 |
| 2026-07-30 | 681 |
| 2026-08-06 | 681 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# DeepVAC
DeepVAC提供了基于PyTorch的AI项目的工程化规范。为了达到这一目标,DeepVAC包含了:
- 软件工程规范:[软件工程规范](./docs/arch.md);
- 代码规范:[代码规范](./docs/code_standard.md);
- deepvac库:[deepvac库](./docs/lib.md)。
诸多PyTorch AI项目的内在逻辑都大同小异,因此DeepVAC致力于把更通用的逻辑剥离出来,从而使得工程代码的准确性、易读性、可维护性上更具优势。
如果想使得AI项目符合DeepVAC规范,需要仔细阅读[DeepVAC标准](./docs/deepvac_standard.md)。
如果想了解deepvac库的设计,请阅读[deepvac库的设计](./docs/design.md)。
# 如何基于DeepVAC构建自己的PyTorch AI项目
## 1. 阅读[DeepVAC标准](./docs/deepvac_standard.md)
可以粗略阅读,建立起第一印象。
## 2. 环境准备
DeepVAC的依赖有:
- Python3。不支持Python2,其已被废弃;
- 依赖包:torch, torchvision, tensorboard, scipy, numpy, cv2, Pillow;
这些依赖使用pip命令(或者git clone)自行安装,不再赘述。
对于普通用户来说,最方便高效的方式还是使用[MLab HomePod](https://github.com/DeepVAC/MLab#mlab-homepod)作为DeepVAC的使用环境,这是一个预构建的Docker image,可以帮助用户省掉不必要的环境配置时间。
同时在MLab组织内部,我们也使用[MLab HomePod](https://github.com/DeepVAC/MLab#mlab-homepod)进行日常的模型的训练任务。
## 3. 安装deepvac库
可以使用pip来进行安装:
```pip3 install deepvac```
或者
```python3 -m pip install deepvac```
如果你需要使用deepvac在github上的最新代码,就需要使用如下的开发者模式:
#### 开发者模式
- 克隆该项目到本地:```git clone https://github.com/DeepVAC/deepvac ```
- 在你的入口文件中添加:
```python
import sys
#replace with your local deepvac directory
sys.path.insert(0,'/home/gemfield/github/deepvac')
```
或者设置PYTHONPATH环境变量:
```bash
export PYTHONPATH=/home/gemfield/github/deepvac
```
## 4. 创建自己的PyTorch项目
- 初始化自己项目的git仓库;
- 在仓库中创建第一个研究分支,比如分支名为 LTS_b1_aug9_movie_video_plate_130w;
- 切换到上述的LTS_b1分支中,开始工作;
## 5. 编写配置文件
配置文件的文件名均为 config.py,位于你项目的根目录。在代码开始处添加```from deepvac import new, AttrDict```;
所有用户的配置都存放在这个文件里。config模块提供了6个预定义的作用域:config.core,config.aug,config.cast,config.datasets,config.backbones,config.loss。使用方法如下:
- 所有和trainer相关(包括train、val、test)的配置都定义在config.core.<my_train_class>中;
- 所有和deepvac.aug中增强模块相关的配置都定义在config.aug.<my_aug_class>中;
- 所有和模型转换相关的配置都定义在config.cast.<the_caster_class>中;
- 所有和Datasets相关的配置都定义在config.datasets.<my_dataset_class>中;
- 所有和loss相关的配置都定义在config.loss.<my_loss_class>中;
- 用户可以开辟自己的作用域,比如config.my_stuff = AttrDict(),然后config.my_stuff.name = 'gemfield';
- 用户可以使用new()来初始化config实例,使用clone()来深拷贝config配置项。
更多配置:
- 预训练模型加载;
- checkpoint加载;
- tensorboard使用;
- TorchScript使用;
- 转换ONNX;
- 转换NCNN;
- 转换CoreML;
- 转换TensorRT;
- 转换TNN;
- 转换MNN;
- 开启量化;
- 开启EMA;
- 开启自动混合精度训练(AMP);
以及关于配置文件的更详细解释,请阅读[config说明](./docs/config.md).
项目根目录下的train.py中用如下方式引用config.py文件:
```python
from config import config as deepvac_config
from deepvac import DeepvacTrain
class MyTrain(DeepvacTrain):
......
my_train = MyTrain(deepvac_config)
my_train()
```
项目根目录下的test.py中用如下方式引用config.py文件:
```python
from config import config as deepvac_config
from deepvac import Deepvac
class MyTest(Deepvac)
......
my_test = MyTest(deepvac_config)
my_test()
```
之后,train.py/test.py代码中通过如下方式来读写config.core中的配置项
```python
print(self.config.log_dir)
print(self.config.batch_size)
......
```
此外,鉴于config的核心作用,deepvac还设计了如下的API来方便对config模块的使用:
- AttrDict
- new
- interpret
- fork
- clone
```python
from deepvac import AttrDict, new, interpret, fork
```
关于这些API的使用方法,请访问[config API 说明](./docs/design.md#config-module).
## 6. 编写synthesis/synthesis.py(可选)
编写该文件,用于产生本项目的数据集,用于对本项目的数据集进行自动化检查和清洗。
这一步为可选,如果有需要的话,可以参考Deepvac组织下Synthesis2D项目的实现。
## 7. 编写aug/aug.py(可选)
编写该文件,用于实现数据增强策略。
deepvac.aug模块为数据增强设计了特有的语法,在两个层面实现了复用:aug 和 composer。比如说,我想复用添加随机斑点的SpeckleAug:
```python
from deepvac.aug.base_aug import SpeckleAug
```
这是对底层aug算子的复用。我们还可以直接复用别人写好的composer,并且是以直截了当的方式。比如deepvac.aug提供了一个用于人脸检测数据增强的RetinaAugComposer:
```python
from deepvac.aug import RetinaAugComposer
```
以上说的是直接复用,但项目中更多的是自定义扩展,而且大部分情况下也需要复用torchvision的transform的compose,又该怎么办呢?这里解释下,composer是deepvac.aug模块的概念,compose是torchvision transform模块的概念,之所以这么相似纯粹是因为巧合。
要扩展自己的composer也是很简单的,比如我可以自定义一个composer(我把它命名为GemfieldComposer),这个composer可以使用/复用以下增强逻辑:
- torchvision transform定义的compose;
- deepvac内置的aug算子;
- 我自己写的aug算子。
更详细的步骤请访问:[deepvac.aug模块使用](./docs/design.md#aug)
## 8. 编写Dataset类
代码编写在data/dataloader.py文件中。继承deepvac.datasets类体系,比如FileLineDataset类提供了对如下train.txt这种格式的封装:
```bash
#train.txtExcerpt of 8,110 characters
Read on GitHubGemfield · CivilNet · China
222
25
25
22
15
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:49f7c807b22b94d2, topic:tensorrt, topic:onnx
matched fp:49f7c807b22b94d2, topic:quantization
matched fp:49f7c807b22b94d2, topic:pytorch