## 简介 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相对对于传统的机器学习分类算法而言,
没有合适的资源?快使用搜索试试~ 我知道了~
一站式算法开发平台、高性能分布式深度学习框架、先进算法模型库、视觉模型炼知平台、数据可视化分析平台等一系列平台及工具
共5000个文件
java:1811个
out:1044个
py:522个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 53 浏览量
2023-07-10
09:06:31
上传
评论
收藏 629.08MB ZIP 举报
温馨提示
之江天枢人工智能开源平台是由之江实验室牵头,联合国内顶尖科研力量共同打造的国产化自主可控的人工智能开源平台。平台面向人工智能研究中的数据处理、算法开发、模型训练、算力管理和推理应用等各个流程的技术难点,研发了包括一站式算法开发平台、高性能分布式深度学习框架、先进算法模型库、视觉模型炼知平台、数据可视化分析平台等一系列平台及工具,在模型高效分布式训练、数据处理和可视分析、模型炼知和轻量化等技术上形成
资源推荐
资源详情
资源评论
收起资源包目录
一站式算法开发平台、高性能分布式深度学习框架、先进算法模型库、视觉模型炼知平台、数据可视化分析平台等一系列平台及工具 (5000个子文件)
events.out.tfevents.1614222519.qjy-ai10.44179.0 3KB
serving.log.2020-12-18 0B
serving.log.2021-01-14 928B
serving.log.2021-02-03 889B
.babelrc 420B
1626773514614055424-1626773514663344640.bin 1.07MB
1626773516614051584-1626773516663289856.bin 1.07MB
1626773515613576448-1626773515663344128.bin 1.07MB
1626773518613862400-1626773518663315712.bin 1.07MB
1626773513613967360-1626773513663320576.bin 1.07MB
1626773517613830400-1626773517663340032.bin 1.07MB
1626773519613894400-1626773519663282432.bin 1.07MB
1626773544613871616-1626773544663307008.bin 1.07MB
1626773522613593344-1626773522663304704.bin 1.07MB
1626773550614263296-1626773550663355392.bin 1.07MB
1626773521614393088-1626773521663318272.bin 1.07MB
1626773549614204160-1626773549663286016.bin 1.07MB
1626773520613937920-1626773520663300352.bin 1.07MB
1626773547614337280-1626773547663244544.bin 1.07MB
1626773537614582016-1626773537663294208.bin 1.07MB
1626773546613759232-1626773546663289088.bin 1.07MB
1626773545614442752-1626773545663312128.bin 1.07MB
1626773551614042368-1626773551663253760.bin 1.07MB
1626773541613899520-1626773541663290624.bin 1.07MB
1626773548613869824-1626773548663271936.bin 1.07MB
1626773553614001408-1626773553663305984.bin 1.07MB
1626773552614133248-1626773552663242496.bin 1.07MB
1626773524613657344-1626773524663271936.bin 1.07MB
1626773542614352896-1626773542663278336.bin 1.07MB
1626773538613940992-1626773538663291136.bin 1.07MB
1626773540614020096-1626773540663390976.bin 1.07MB
1626773539614262272-1626773539663286784.bin 1.07MB
1626773523614227200-1626773523663240192.bin 1.07MB
1626773525613970432-1626773525663296256.bin 1.07MB
1626773554614282496-1626773554663284992.bin 1.06MB
1626773543614093568-1626773543663256064.bin 1.06MB
1626773536613788928-1626773536663330816.bin 1.06MB
1626773535614112256-1626773535663303168.bin 1.06MB
1626773533613790464-1626773533663324672.bin 1.06MB
1626773526614274048-1626773526663301632.bin 1.06MB
1626773534614191360-1626773534663297280.bin 1.06MB
1626773530614261504-1626773530663292672.bin 1.06MB
1626773555614128384-1626773555663282688.bin 1.06MB
1626773529613832960-1626773529663273984.bin 1.06MB
1626773556614120704-1626773556663268864.bin 1.06MB
1626773558613765632-1626773558663288832.bin 1.06MB
1626773531613849600-1626773531663277568.bin 1.06MB
1626773528614345728-1626773528663263232.bin 1.06MB
1626773557614387712-1626773557663288576.bin 1.06MB
1626773527613813504-1626773527663256320.bin 1.06MB
1626773561613659904-1626773561663327232.bin 1.06MB
1626773559614233344-1626773559663286272.bin 1.06MB
1626773532614523904-1626773532663280128.bin 1.06MB
1626773562614318848-1626773562663307776.bin 1.06MB
1626773560614249472-1626773560663285248.bin 1.06MB
1626773566614071808-1626773566663343616.bin 1.06MB
1626773568614194432-1626773568663270400.bin 1.06MB
1626773564614137344-1626773564663263744.bin 1.06MB
1626773563614191360-1626773563663265792.bin 1.06MB
1626773569614299648-1626773569663295232.bin 1.06MB
1626773565614324224-1626773565663303424.bin 1.06MB
1626773567614316288-1626773567663294208.bin 1.06MB
1626773570614497024-1626773570663325184.bin 1.05MB
1626773571613953536-1626773571663359232.bin 1.05MB
1626773572614322944-1626773572663296512.bin 1.05MB
1626773573613804544-1626773573663314944.bin 1.05MB
1626773512613708800-1626773512663258368.bin 1.05MB
1616748305465.bin 1.04MB
1616748305065.bin 1.04MB
1616748305566.bin 1.04MB
1616748303466.bin 1.04MB
1616748303666.bin 1.04MB
1616748304765.bin 1.04MB
1616748303865.bin 1.04MB
1616748304865.bin 1.04MB
1616748307766.bin 1.04MB
1616748305265.bin 1.04MB
1616748304365.bin 1.04MB
1616748307665.bin 1.04MB
1616748305766.bin 1.04MB
1616748305366.bin 1.04MB
1616748307565.bin 1.04MB
1616748304265.bin 1.04MB
1616748304065.bin 1.04MB
1616748304665.bin 1.04MB
1616748304965.bin 1.04MB
1616748308366.bin 1.04MB
1616748304165.bin 1.04MB
1616748307265.bin 1.04MB
1616748303566.bin 1.04MB
1616748305165.bin 1.04MB
1616748306066.bin 1.04MB
1616748303766.bin 1.04MB
1616748307165.bin 1.04MB
1616748306666.bin 1.04MB
1616748303966.bin 1.04MB
1616748305866.bin 1.04MB
1616748304465.bin 1.04MB
1616748306266.bin 1.04MB
1616748305966.bin 1.04MB
共 5000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 50
资源评论
- dongquestion2023-12-01资源很赞,希望多一些这类资源。
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7394
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- PHP网页版在线客服系统源码带文字安装教程数据库 MySQL源码类型 WebForm
- 第7课-电影推荐系统CTR预估模型构建-实验指导书
- 基于 Java 开发 SpringBoot 手机销售网站:从需求洞察到上线运营全解析
- shell中的关于shell的项目实训一
- 旧版typora,不会弹框
- shell项目实训二中的条件控制
- 支付宝的APP支付功能比较好开通,H5支付比较难申请,或者说比较麻烦 所以需要实现:H5页面如何实现支付宝的APP支付功能 ,使用这个js可以在支付宝H5环境实现拉起支付宝APP支付的js
- 基于 Java 开发 SpringBoot 国产动漫网站:从创意构思到上线运营全解析
- 三网H5游戏【魔域来了神话版】最新整理Win一键服务端+GM授权后台+简易安卓客户端+详细搭建教程+视频教程
- CAD软件全套合集下载(2004版-2025版本都有)-56G网盘下载.txt
- PHP大型企业人才招聘网站源码带文字安装教程数据库 MySQL源码类型 WebForm
- typora旧版mac和win平台,无弹框
- 爬取小说资源的Python实践:从单线程到多线程的效率飞跃
- CAN Get Value Handle
- CAN Get Value Integer
- CAN Get Value String
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功