## 简介 Introduction
## 图像分类与CNN
**图像分类** 是指将图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法,是计算机视觉中其他任务,比如目标检测、语义分割、人脸识别等高层视觉任务的基础。
ImageNet大规模视觉识别挑战赛(ILSVRC),常称为ImageNet竞赛,包括图像分类、物体定位,以及物体检测等任务,是推动计算机视觉领域发展最重要的比赛之一。
在2012年的ImageNet竞赛中,深度卷积网络AlexNet横空出世。以超出第二名10%以上的top-5准确率,勇夺ImageNet2012比赛的冠军。从此,以 CNN(卷积神经网络) 为代表的深度学习方法开始在计算机视觉领域的应用开始大放异彩,更多的更深的CNN网络被提出,比如ImageNet2014比赛的冠军VGGNet, ImageNet2015比赛的冠军ResNet。
OneFlow-Benchmark下的cnn仓库目前已支持 **Alexnet** 、 **VGG16** 、 **Resnet50** 、 **InceptionV3** 、 **MobileNetV2**等经典的cnn模型,未来会陆续添加新的cnn模型。这些cnn模型共享一套训练、验证和推理代码,您只需要指定模型,即可使用一套代码完成这些cnn网络模型的训练、测试和验证。
## 快速开始 Quick Start
### 准备工作 Requirements
别担心,使用OneFlow非常容易,只要准备好下面三步,即可开始OneFlow的图像识别之旅。
- 安装OneFlow。
- 直接通过pip安装:`pip install oneflow`
- 安装轻量版:`pip install --find-links https://oneflow-inc.github.io/nightly oneflow`
- 源码编译等其他安装方式:参考[OneFlow项目主页](https://github.com/Oneflow-Inc/oneflow)
- 克隆/下载[OneFlow-Benchmark](https://github.com/Oneflow-Inc/OneFlow-Benchmark)仓库。
`git clone git@github.com:Oneflow-Inc/OneFlow-Benchmark.git`
- 准备数据集(可选)
- 直接使用synthetic虚拟合成数据集
- 下载我们制作的Imagenet(2012)[迷你数据集](https://oneflow-public.oss-cn-beijing.aliyuncs.com/online_document/dataset/imagenet/mini-imagenet.zip) 解压放入data目录
- 或者:制作完整OFRecord格式的ImageNet数据集(见下文进阶部分)
我们提供了通用脚本:train.sh和inference.sh,它们适用于此仓库下所有cnn网络模型的训练、验证、推理。您可以通过设置参数使用不同的模型、数据集来训练/推理。
**关于模型的说明:**
> 默认情况下,我们使用resnet50,您也可以通过改动脚本中的--model参数指定其他模型,如:--model="resnet50",--model="vgg"等。
**关于数据集的说明:**
> 1)为了使读者快速上手,我们提供了synthetic虚拟合成数据,“合成数据”是指不通过磁盘加载数据,而是直接在内存中生成一些随机数据,作为神经网络的数据输入源。
>
> 2)同时,我们提供了一个小的迷你示例数据集。直接下载解压至cnn项目的root目录,即可快速开始训练。读者可以在熟悉了流程后,参考数据集制作部分,制作完整的Imagenet2012数据集。
>
> 3)使用OFRcord格式的数据集可以提高数据加载效率(但这非必须,参考[数据输入](https://github.com/Oneflow-Inc/oneflow-documentation/blob/master/cn/docs/basics_topics/data_input.md),oneflow支持直接加载numpy数据)。
### 预训练模型
#### Resnet50
[resnet50_v1.5_model](https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/resnet_v15_of_best_model_val_top1_77318.tgz ) (validation accuracy: 77.318% top1,93.622% top5 )
#### VGG16
[vgg16_model](https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/vgg16_of_best_model_val_top1_721.zip) (validation accuracy: 72.1% top1,92.7% top5 )
#### Alexnet
[alexnet_model](https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/alexnet_of_best_model_val_top1_54762.zip) (validation accuracy: 54.762% top1,78.1914% top5 )
#### InceptionV3
[inceptionv3_model](https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/inceptionv3_of_best_model_val_top1_74.19.zip) (validation accuracy: 74.19% top1,91.46% top5 )
### 预测/推理
下载预训练模型:[resnet50_v1.5_model](https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/resnet_v15_of_best_model_val_top1_77318.tgz ) ,解压后放入当前目录,然后执行:
```shell
sh inference.sh
```
脚本执行后,将对下面的图片进行分类:
<div align="center">
<img src="data/fish.jpg" align='center'/>
</div>
**输出**
```shell
data/fish.jpg
0.87059885 goldfish, Carassius auratus
```
可见,模型判断这张图片有87.05%的概率是金鱼goldfish
### 训练&验证
训练同样很简单,只需执行:
```shell
sh train.sh
```
即可开始模型的训练,您将看到如下输出:
```shell
Loading synthetic data.
Loading synthetic data.
Saving model to ./output/snapshots/model_save-20200723124215/snapshot_initial_model.
Init model on demand.
train: epoch 0, iter 10, loss: 7.197278, top_1: 0.000000, top_k: 0.000000, samples/s: 61.569
train: epoch 0, iter 20, loss: 6.177684, top_1: 0.000000, top_k: 0.000000, samples/s: 122.555
Saving model to ./output/snapshots/model_save-20200723124215/snapshot_epoch_0.
train: epoch 0, iter 30, loss: 3.988656, top_1: 0.525000, top_k: 0.812500, samples/s: 120.337
train: epoch 1, iter 10, loss: 1.185733, top_1: 1.000000, top_k: 1.000000, samples/s: 80.705
train: epoch 1, iter 20, loss: 1.042017, top_1: 1.000000, top_k: 1.000000, samples/s: 118.478
Saving model to ./output/snapshots/model_save-20200723124215/snapshot_epoch_1.
...
```
> 为了方便运行演示,我们默认使用synthetic虚拟合成数据集,使您可以快速看到模型运行的效果
同样,你也可以使用[迷你示例数据集](https://oneflow-public.oss-cn-beijing.aliyuncs.com/online_document/dataset/imagenet/mini-imagenet.zip),下载解压后放入cnn项目的root目录即可,然后修改训练脚本如下:
```shell
rm -rf core.*
rm -rf ./output/snapshots/*
DATA_ROOT=data/mini-imagenet/ofrecord
# training with mini-imagenet
DATA_ROOT=data/mini-imagenet/ofrecord
python3 of_cnn_train_val.py \
--train_data_dir=$DATA_ROOT/train \
--num_examples=50 \
--train_data_part_num=1 \
--val_data_dir=$DATA_ROOT/validation \
--num_val_examples=50 \
--val_data_part_num=1 \
--num_nodes=1 \
--gpu_num_per_node=1 \
--optimizer="sgd" \
--momentum=0.875 \
--learning_rate=0.001 \
--loss_print_every_n_iter=1 \
--batch_size_per_device=16 \
--val_batch_size_per_device=10 \
--num_epoch=10 \
--model="resnet50"
```
运行此脚本,将在仅有50张金鱼图片的迷你imagenet数据集上,训练出一个分类模型,利用它,你可以对金鱼图片进行分类。
训练完成后,你也可以修改evaluate.sh脚本以对模型进行评估:
```shell
#!/bin/bash
# Evaluate with mini-imagenet
DATA_ROOT=data/mini-imagenet/ofrecord
MODEL_LOAD_DIR="output/snapshots/model_save-20200907130848/snapshot_epoch_9"
python3 of_cnn_evaluate.py \
--num_epochs=3 \
--num_val_examples=50 \
--model_load_dir=$MODEL_LOAD_DIR \
--val_data_dir=$DATA_ROOT/validation \
--val_data_part_num=1 \
--num_nodes=1 \
--gpu_num_per_node=1 \
--val_batch_size_per_device=10 \
--model="resnet50"
```
恭喜你,得到了这个还不错的金鱼分类模型,想尝试在完整imagenet上训练自己的分类模型吗?
不要着急,如果您需要在完整的ImageNet2012数据集上进行训练,请看下文【ResNet】部分的介绍。其中,我们将重点介绍其中的经典网络:Resnet50,以及如何利用OneFlow在完整的Imagenet2012数据集上训练Resnet50,并提供 **对标Nvidia的Mxnet版** 实现。
## ResNet
[ResNet](https://arxiv.org/abs/1512.03385) 是2015年ImageNet竞赛的冠军。目前,ResNet相对对于传统的机器学习分类算法而言,
没有合适的资源?快使用搜索试试~ 我知道了~
之江天枢人工智能开源平台
共2006个文件
java:522个
py:522个
vue:386个
需积分: 5 1 下载量 89 浏览量
2024-04-04
10:47:13
上传
评论
收藏 629.08MB ZIP 举报
温馨提示
之江天枢人工智能开源平台是由之江实验室牵头,联合国内顶尖科研力量共同打造的国产化自主可控的人工智能开源平台。平台面向人工智能研究中的数据处理、算法开发、模型训练、算力管理和推理应用等各个流程的技术难点,研发了包括一站式算法开发平台、高性能分布式深度学习框架、先进算法模型库、视觉模型炼知平台、数据可视化分析平台等一系列平台及工具,在模型高效分布式训练、数据处理和可视分析、模型炼知和轻量化等技术上形成。
资源推荐
资源详情
资源评论
收起资源包目录
之江天枢人工智能开源平台 (2006个子文件)
iconfont.css 26KB
iconfont.css 26KB
demo.css 9KB
demo.css 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
demo_index.html 97KB
demo_index.html 94KB
index.html 617B
index.html 550B
PresetDatasetImportHandle.java 40KB
JupyterResourceApiImpl.java 34KB
DatasetImportHandle.java 34KB
TerminalServiceImpl.java 33KB
PtModelBranchServiceImpl.java 33KB
PtModelInfoServiceImpl.java 30KB
NodeApiImpl.java 29KB
LogMonitoringApiImpl.java 26KB
AddActionHandler.java 26KB
MetricsApiImpl.java 26KB
DistributeTrainApiImpl.java 24KB
TrainJobApiImpl.java 21KB
DubheDeploymentApiImpl.java 19KB
PersistentVolumeClaimApiImpl.java 18KB
ModelOptJobApiImpl.java 18KB
PodApiImpl.java 17KB
DatasetImageUploadHandle.java 16KB
ModelServingApiImpl.java 15KB
PtMeasureServiceImpl.java 14KB
HarborApiImpl.java 13KB
NamespaceApiImpl.java 12KB
ResourceCache.java 12KB
ResourceBuildUtils.java 11KB
PodServiceImpl.java 11KB
ResourceQuotaApiImpl.java 11KB
MetricsGatewayFilterFactory.java 10KB
TerminalApiImpl.java 10KB
K8sNameTool.java 10KB
ModelServiceApiImpl.java 9KB
DistributeTrainOperatorManager.java 9KB
LogUtil.java 9KB
RedisService.java 9KB
RedisStreamListener.java 9KB
BaseStatefulSetDeployer.java 9KB
BaseJobDeployer.java 9KB
RedisUtils.java 9KB
PrometheusMetricBO.java 8KB
BizConvertUtils.java 8KB
GatewayServiceHandler.java 8KB
ValidationAspect.java 7KB
DatasetUtilApplication.java 7KB
CustomDatasetImportHandle.java 7KB
K8sConfig.java 7KB
MappingUtils.java 7KB
ChildResourceCreateInfo.java 6KB
BaseTest.java 6KB
RequestAttributeHystrixConcurrencyStrategy.java 6KB
PodApi.java 6KB
K8sTaskServiceImpl.java 6KB
FileServiceImpl.java 6KB
PtAtlasCameraServiceImpl.java 6KB
K8sResourceServiceImpl.java 6KB
HttpClientUtils.java 6KB
NodeApi.java 6KB
BizPod.java 5KB
MinioUtil.java 5KB
PtModelInfoController.java 5KB
PtMeasureTest.java 5KB
LimitRangeApiImpl.java 5KB
K8sCallBackTool.java 5KB
ModelStatusUtil.java 5KB
DistributeTrainController.java 5KB
LabelUtils.java 5KB
RoleMapper.java 5KB
CustomErrorWebFluxAutoConfiguration.java 5KB
VolumeApiImpl.java 5KB
FastjsonUtils.java 5KB
HttpClientConfig.java 5KB
K8sUtils.java 5KB
UserMapper.java 5KB
ResourceServerConfig.java 5KB
ResourceIisolationApiImpl.java 5KB
PtPodsVO.java 5KB
Terminal.java 5KB
PodApi.java 5KB
KubeContext.java 5KB
K8sParamConstants.java 5KB
PtModelBranchController.java 4KB
DataFile.java 4KB
DistributeTrainSpec.java 4KB
JsonErrorWebExceptionHandler.java 4KB
PtJupyterDeployVO.java 4KB
DeploymentBO.java 4KB
MagicNumConstant.java 4KB
SwaggerConfig.java 4KB
GenerateMeasureFileAsync.java 4KB
共 2006 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
传奇开心果编程
- 粉丝: 8086
- 资源: 335
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
- 基于JSP毕业设计-基于WEB操作系统课程教学网站的设计与实现(源代码+论文).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功