• Stars
    star
    450
  • Rank 96,456 (Top 2 %)
  • Language
    Python
  • Created over 6 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

深度学习工程模板

DL Project Template

深度学习工程模板,简化加载数据、构建网络、训练模型和预测样本的流程。

By C. L. Wang @ 美图云事业部

工程:https://github.com/SpikeKing/DL-Project-Template

使用方式

下载工程

git clone https://github.com/SpikeKing/DL-Project-Template

创建和激活虚拟环境

virtualenv venv
source venv/bin/activate

安装Python依赖库

pip install -r requirements.txt

开发流程

  1. 定义自己的数据加载类,继承DataLoaderBase;
  2. 定义自己的网络结构类,继承ModelBase;
  3. 定义自己的模型训练类,继承TrainerBase;
  4. 定义自己的样本预测类,继承InferBase;
  5. 定义自己的配置文件,写入实验的相关参数;

执行训练模型和预测样本操作。

示例工程

识别MNIST库中手写数字,工程simple_mnist

训练:

python main_train.py -c configs/simple_mnist_config.json

预测:

python main_test.py -c configs/simple_mnist_config.json -m simple_mnist.weights.10-0.24.hdf5

网络结构

网络结构

TensorBoard

TensorBoard

工程架构

框架图

架构

文件夹结构

├── bases
│   ├── data_loader_base.py             - 数据加载基类
│   ├── infer_base.py                   - 预测样本(推断)基类
│   ├── model_base.py                   - 网络结构(模型)基类
│   ├── trainer_base.py                 - 训练模型基类
├── configs                             - 配置文件夹
│   └── simple_mnist_config.json
├── data_loaders                        - 数据加载文件夹
│   ├── __init__.py
│   ├── simple_mnist_dl.py
├── experiments                         - 实验数据文件夹
│   └── simple_mnist                    - 实验名称
│       ├── checkpoints                 - 存储的模型和参数
│       │   └── simple_mnist.weights.10-0.24.hdf5
│       ├── images                      - 图片
│       │   └── model.png
│       └── logs                        - 日志,如TensorBoard
│           └── events.out.tfevents.1524034653.wang
├── infers                              - 推断文件夹
│   ├── __init__.py
│   ├── simple_mnist_infer.py
├── main_test.py                        - 预测样本入口
├── main_train.py                       - 训练模型入口
├── models                              - 网络结构文件夹
│   ├── __init__.py
│   ├── simple_mnist_model.py
├── requirements.txt                    - 依赖库
├── trainers                            - 训练模型文件夹
│   ├── __init__.py
│   ├── simple_mnist_trainer.py
└── utils                               - 工具文件夹
    ├── __init__.py
    ├── config_utils.py                 - 配置工具类
    ├── np_utils.py                     - NumPy工具类
    ├── utils.py                        - 其他工具类

主要组件

DataLoader

操作步骤:

  1. 创建自己的加载数据类,继承DataLoaderBase基类;
  2. 覆写get_train_data()get_test_data(),返回训练和测试数据;

Model

操作步骤:

  1. 创建自己的网络结构类,继承ModelBase基类;
  2. 覆写build_model(),创建网络结构;
  3. 在构造器中,调用build_model()

注意:plot_model()支持绘制网络结构;

Trainer

操作步骤:

  1. 创建自己的训练类,继承TrainerBase基类;
  2. 参数:网络结构model、训练数据data;
  3. 覆写train(),fit数据,训练网络结构;

注意:支持在训练中调用callbacks,额外添加模型存储、TensorBoard、FPR度量等。

Infer

操作步骤:

  1. 创建自己的预测类,继承InferBase基类;
  2. 覆写load_model(),提供模型加载功能;
  3. 覆写predict(),提供样本预测功能;

Config

定义在模型训练过程中所需的参数,JSON格式,支持:学习率、Epoch、Batch等参数。

Main

训练:

  1. 创建配置文件config;
  2. 创建数据加载类dataloader;
  3. 创建网络结构类model;
  4. 创建训练类trainer,参数是训练和测试数据、模型;
  5. 执行训练类trainer的train();

预测:

  1. 创建配置文件config;
  2. 处理预测样本test;
  3. 创建预测类infer;
  4. 执行预测类infer的predict();

感谢

参考Tensorflow-Project-Template

More Repositories

1

keras-yolo3-detection

YOLO v3 物体检测算法
Python
631
star
2

wcl-permission-demo

Android 动态权限管理的解决方案
Java
341
star
3

TestAppBar

熟练掌握 AppBarLayout 的开发技术
Java
298
star
4

BottomDialogDemo

设计与实现基于 DialogFragment 的底部弹窗布局
Java
235
star
5

triplet-loss-mnist

Triplet Loss 损失函数
Python
208
star
6

TestCoordinatorLayout

熟练掌握 CoordinatorLayout 的开发技术
Java
176
star
7

WclBBCNews

React Native 新闻客户端的实例
JavaScript
173
star
8

TestDetailRxAndroid

全面解析响应式库 RxJava 的使用方式
Java
151
star
9

wcl-circle-reveal-demo

实现页面展开中圆形爆炸展开的动画效果
Java
115
star
10

wcl-flip-anim-demo

卡片的翻页动画
Java
103
star
11

wcl-snowfall-demo

实现漫天飞雪的动画效果
Java
68
star
12

wcl-dagger-demo

全面解析依赖注入库 Dagger 的使用方式
Java
67
star
13

DateScroller

自定义的日期滚轮控件
Java
67
star
14

WclNavigator

React Native 控件 Navigator 的使用方式
JavaScript
65
star
15

wcl-aidl-demo

使用 AIDL 实现 Android 的跨进程通信
Java
59
star
16

wcl-video-list-demo

设计与实现朋友圈视频的滚动播放功能
Java
57
star
17

mobilenet_v3

MobileNet v3
Python
48
star
18

TestFragmetnSharedElement

使用 SharedElement 动画切换 Fragment 页面
Java
45
star
19

MachineLearningTutorial

机器学习笔记
Python
42
star
20

Human-Pose-Estimation

人体姿态估计
Jupyter Notebook
40
star
21

wcl-update-request-demo

实现应用内的更新版本功能
Java
39
star
22

wcl-rx-cache-demo

基于响应式编程的网络数据同步及缓存框架
Java
37
star
23

wcl-droid-plugin-demo

使用DroidPlugin的示例
Java
37
star
24

WclPropertyFinder

React Native 实例 - 房产搜索App
JavaScript
36
star
25

triplet-loss-gluon

MXNet / Gluon 中 Triplet Loss 算法
Python
36
star
26

wcl-onboarding-demo

实现页面切换中元素分享的动画效果
Java
33
star
27

TFAndroid

TensorFlow集成Android工程的框架
Java
32
star
28

MyFluxApp-TodoList

顶层设计基于 Flux 的流式架构
Java
27
star
29

wcl-visualizer-demo

绘制音频的波纹形态.
Java
27
star
30

ContentProviderDemo

使用 ContentProvider 跨进程共享数据
Java
26
star
31

MachineLearningDemos

机器学习实例
Python
23
star
32

SpringRainNews

RxJava + Retrofit + Dagger + MVP
Java
23
star
33

SocketDemo

使用Socket处理跨进程的实时聊天
Java
23
star
34

TimerAppWidget

实现同步更新的通知与插件
Java
22
star
35

TestFaceDetection

实现检测人脸功能的控件
Java
21
star
36

wcl-like-anim-demo

使用属性动画实现星光四射的动画效果
Java
20
star
37

ConstraintLayoutDemo

熟练掌握 ConstraintLayout 的开发技术
Java
19
star
38

wcl-kotlin-demo

Kotlin 开发语言的基础教程
Kotlin
18
star
39

data_structure_with_python

最简洁的实现Python数据结构
Python
17
star
40

TestFragmentTabHost

FragmentTabHost 布局的使用及优化方式
Java
16
star
41

wcl-password-input-demo

EditText隐藏显示密码的控件
Java
15
star
42

WclJingGame

React Native 实例 - 网格游戏
Objective-C
15
star
43

TestSVG

SVG 图像技术的基础教程
Java
15
star
44

wcl-plugin-test-app

DroidPlugin的插件App, 和Demo互动.
Java
15
star
45

AnimationPlayer

深入剖析 View 的动画原理
Java
14
star
46

BinderPoolDemo

实现AIDL接口的Binder连接池
Java
14
star
47

wcl-leakcanary-demo

检测内存泄漏的技术框架
Java
13
star
48

wcl-continuous-demo

使用 RxJava 跨页面更新控件
Java
13
star
49

LoadingLibraryDemo

在广告间隔中进行数据加载
Java
13
star
50

TestWebIntent

实现网页链接跳转原生应用
Java
12
star
51

LearningRN

学习ReactNative开发项目
JavaScript
11
star
52

GazeML-Export

GazeML的模型导出
Python
11
star
53

wcl-espresso-dagger-demo

基于Espresso和Dagger的自动化测试框架
Java
10
star
54

ViewDemo

详解View的基础概念
Java
9
star
55

piod-classification

预测糖尿病发病概率
Python
9
star
56

sensor-cf-with-deepconvlstm

基于DeepConvLSTM的传感器信号分类
Python
9
star
57

CRAFT-Re-reimplementation

CRAFT算法的训练
Python
9
star
58

TestRxAndroidSample

Java
7
star
59

image_rotation_angle_prediction

图像旋转角度预测 算法 Tensorflow
Python
6
star
60

wcl-messenger-demo

Android 进程使用 Messenger 通信
Java
5
star
61

wcl-activity-launchmode-demo

深入剖析 Activity 的启动模式
Java
5
star
62

img_processor_framework

图像处理框架
Python
5
star
63

stylegan2encoder-my

Python
4
star
64

TestRnViewPager

JavaScript
4
star
65

NSFW-mdf

NSFW tensorflow 改进版
Python
4
star
66

gluon-tutorial

深度框架 MXNet / Gluon 初体验
Python
3
star
67

TestRnScrollView

测试Rn的ScrollView
JavaScript
3
star
68

Reinforcement-Learning-Algorithm

强化学习算法
Python
3
star
69

VQA-v2

Python
3
star
70

XX-ImageLabel

图片标注工程
Python
3
star
71

ComfyUI-Manager-My

refer to ltdrdata/ComfyUI-Manager
JavaScript
2
star
72

My-Bert

Bert 分类任务
Python
2
star
73

TestRnListView

ListView的小Demo.
JavaScript
2
star
74

wcl-rxandroid-threads-demo

使用 Rx 的计算和最大化线程处理并行任务
Java
2
star
75

DataBindingMvpDemo

基于DataBinding的MVP架构
Java
2
star
76

wcl-activity-lifecycle-demo

深入剖析 Activity 的生命周期
Java
2
star
77

wcl-retrofit2-demo

网络服务库 Retrofit2 的使用方式
Java
2
star
78

problems-segmentation-yolov5

Python
2
star
79

wcl-process-data

Intent 或持久化存储处理复杂对象
Java
2
star
80

ScrollListView

View的复杂事件处理
Java
2
star
81

ClinicDetailDemo

诊所详情的示例
Java
2
star
82

UGATIT-new

修改版本的UGATIT
Python
1
star
83

classification-pytorch

Classification Benchmark for Pytorch
Python
1
star
84

essay-detection

Python
1
star
85

music-tl

Python
1
star
86

Test-WeiboShare

A demo that sharing message to Sina Weibo.
Java
1
star
87

Test-WeixinSDK

A demo for weixin sdk.
Java
1
star
88

spikeking.github.io

My Blog
HTML
1
star
89

pytorch-image-models-my

Python
1
star
90

GiphyMvpDemo

Java
1
star
91

Mystra

Love magic for itself!
CSS
1
star
92

Test-AliTrans

A competition of Alibaba about transportation. 阿里巴巴的云上贵州竞赛.
Java
1
star
93

myutils

常用的自定义函数库
Python
1
star
94

CardDetailInfo

卡片详情的界面
Java
1
star
95

keras-pose-estimation

Jupyter Notebook
1
star
96

MobileNetV3-Classification-PyTorch

PyTorch版本的MobileNetV3分类网络
Python
1
star
97

CombFold-Custom

大型多链蛋白质结构组装算法 CombFold (直接运行版本)
C++
1
star
98

ComfyUI-Impact-Pack-My

Python
1
star
99

Gaze4Landmarks

Python
1
star
100

protein_metrics

计算蛋白质结构的评估指标
C++
1
star