训练硬件平台:SOM5992(至强E3系列CPU)、8G_DDR4内存、GTX1050ti
运行硬件平台:EPC-R5770
OS版本:发行版ubuntu18.04
软件版本:
Anconda3: 5.2.0-Linux-x86_64(PYTHON3.6)
Caffe: caffe-segnet
NVIDIA Driver: 450.66
CUDA: 8.0.61_375.26
cudnn: 8.0-linux-x64-v5.1
相关依赖安装
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libopenblas-dev
sudo apt-get install liblmdb-dev
sudo apt-get install libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
训练模型
caffe-segnet
将SegNet-Tutorial-master.zip解压到根目录并重命名为SegNet
unzip SegNet-Tutorial-master.zip
mv SegNet-Tutorial-master /SegNet
SegNet内容如下:
修改segnet模型适配于EPC-R5770平台
由于segnet作者已提供segnet的模型结构,其路径为
/SegNet/Models/segnet_train.prototxt
该模型通过训练可以在x86平台上正常运行,可无法迁移至EPC-R5770当中,我们需要将模型进行一定的修改,具体如下:
1. NNIE没有支持 BN层,而只支持caffe 1.0当中的batch norm层
解决方法:将prototxt文件当中的BN层修改为batchnorm层及Scale层,如图所示
1)对于训练的prototxt
(左)修改前 (右)修改后
2)对于推理的prototx
(左)修改前 (右)修改后
2.将数据集的样本size改为384*480
可以自行编写opencv脚本对数据集进行批量的图像大小修改
3.将upsample5与upsample4层的参数upsample_w与upsample_h注释掉
如下
4.将batch_norm层的moving_average_fraction参数修改为0.9
如下
5.segnet_train.prototxt的batch_size设置为1
一个batch_size占用了3.2G内存
6.solver文件中添加iter_size: 5
batch_size太小不利于模型的收敛,因此设置5次训练才做一次回归
使用迁移学习来训练模型
1.下载预训练过的VGG16的weights
链接如下:
http://www.robots.ox.ac.uk/~vgg/research/very_deep/
2.训练segnet-VGG16模型
用VGG_ILSVRC_16_layers.caffemodel作为初始化权重
mkdir /SegNet/Models/Training/
./build/tools/caffe train -gpu 0 -solver/SegNet/Models/segnet_solver.prototxt -weights/SegNet/Models/VGG_ILSVRC_16_layers.caffemodel
大约训练50-100 epochs就可以得出不错的结果
3.修改/SegNet/Scripts/compute_bn_statistics.py的185行的输入图像尺寸大小及190-194行注释
如图所示
生成deploy.prototxt及test_weights.caffemodel
sudo python /SegNet/Scripts/compute_bn_statistics.py/SegNet/Models/segnet_train.prototxt/SegNet/Models/Training/segnet_iter_40000.caffemodel /SegNet/Models/Inference/
修改deploy.prototxt的相关格式
修改输入层格式
(左)修改前 (右)修改后
修改所有batch_norm层的use_global_stats为true
(左)修改前 (右)修改后
经过修改过后,deploy.prototxt及test_weights.caffemodel可以用于EPC-R5770做模型的转换了。
4.测试模型
sudo python /SegNet/Scripts/test_segmentation_camvid.py --model/SegNet/Models/segnet_inference.prototxt --weights/SegNet/Models/Inference/test_weights.caffemodel --iter 1
效果如图所示:
将segnet模型转换为EPC-R5770 wk模型
模型转换所用到的工具是Ruyi studio 其环境搭建过程及转换方法请参考EPC-R5770相关文档
转换所用到的配置文件内容,如图所示:
根据以上的配置,点击build按钮即可转换模型
出现Successfully,即转换成功。
更多AI整合软硬件解决方案
及技术服务分析
可关注研华嵌入式物联网伙伴峰会
11/19-11/21
3大主题峰会,70+细分话题
疫情大考和新基建等环境下,企业数字化转型全面加速,数据驱动、数智融合的价值逐渐释放。为加速物联网美好未来的实现,研华今年的工业物联网伙伴峰会,将会聚焦嵌入式物联网、工业物联网、智慧城市三大主题,围绕智慧工厂、智能装备、智慧能源与环境、智能交通、智慧医疗、智慧零售、智能物流等垂直产业,探讨边缘计算、产业AI、嵌入式创新、中国芯、工业通信、工业云平台等技术话题。
100+业界专家,“慧”聚云端
站在大咖的肩膀上看世界,无疑会对企业的战略方向起到重要指导作用。本次盛会,研华也邀请了来自中国信通院、工业互联网产业联盟、中科院、清华大学互联网产业研究院等100多位专家学者、商业大咖以及行业领导者汇聚云端,分享他们对AIoT的前沿洞察及发展策略,探讨工业物联网落地实践经验,全面激发物联网发展新思路。
50+伙伴齐聚,共赢物联大未来
通往未来的征程绝不是孤军奋战,而是产业链伙伴间的协同与互利共赢,唯有生态互联,方可决胜工业物联网未来。本次峰会,研华也将携手英特尔、ARM、微软、京东物流、软通智慧等全球50多家合作伙伴,共同探讨AIoT新时代、新思路及新发展,一起共创、共享、共赢物联大未来!
会上将有大量知识性主题演讲
和引人深思的议题探讨
干货满满,大咖云集,不可错过~
扫码一键报名
即刻领取
↓↓↓
文末福利
如果报名成功的朋友,可以扫描下方的二维码加我微信,并把报名成功显示截图发给我,同时领取福利:赠送c、c++、linux,数据结构、算法等电子书籍!
关于研华
研华成立于1983年,以“智能地球的推手”作为企业品牌愿景,一直专注于工业物联网、嵌入式物联网及智慧城市三大市场。为迎接物联网、大数据与人工智能的大趋势,研华提出以边缘智能和WISE-PaaS工业物联网云平台为核心的物联网软、硬件解决方案,协助客户伙伴串接产业链。研华业务分布全球27个国家,拥有近8,000名员工,以强大的技术服务及营销网络,为客户提供本土化响应的便捷服务。此外,研华积极推进产业伙伴共创,加速AIoT生态圈布建与发展。
研华网站:www.advantech.com.cn
研华微信:研华嵌入式
服务热线:400-001-9088
▼点击查看直播日历!
本文分享自微信公众号 - TXP嵌入式(txp1121518wo-)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。