openmv 神经网络 超出内存_openmv caffe专栏 1

本专栏参考的原作者文章声明如下。

PS:本专栏对原作者的文章存在适当的修改与补充,使之更适合本作者所阐述的训练要求!如有侵权,请联系13512076879@163.com。

————————————————

版权声明:本文为CSDN博主「欣欣以向荣」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

————————————————

1. caffe框架下openmv的训练步骤

目前 OPenMV 只提供Caffe模型到network网络的转换,未来可能会支持TensorFlow,但目前不行。通过Caffe框架学习,我们最终的目标肯定是得到 ******.network 的网络库文件

训练网络的主要步骤如下:

配置环境,安装Caffe

采集数据集

训练网络

量化模型

将模型转换为二进制格式

在OPenMV上部署模型

运行网络

故障排除

2.caffe环境的搭建(以本文环境为例介绍)

windows 10

python 2.7

pycharm

vs2013

openmv cam h4

openmv ide

3.vs2013 编译caffe

4.制作数据集

由于原文章之前训练使用的数据集为64*64,然而这种方法训练得到的network模型对于openmv来说太大,会造成堆内存溢出,无法运行。

故本文使用数据集为32*32.

本文使用的数据集为使用画图板制作,并经过一些数据处理方法,使得数据集更加丰富。

制作步骤:

4.1.使用以下代码新建文件夹保存原始数据(E:/pydoc/blog/为本文程序根目录   E:/pydoc/blog/为本文程序根目录   E:/pydoc/blog/为本文程序根目录)

importos, sysdefgenDir():

base= 'E:/pydoc/blog/MY_numbers/'i=0

name=['ZERO','ONE','TWO','THREE','FOUR','FIVE','SIX','SEVEN','EIGHT','NINE']for j in range(10):

file_name= base+name[i]

os.mkdir(file_name)

i=i+1genDir()

结果如图:

4.2. 使用以下代码新建文件夹保存扩展数据:

importos, sysdefgenDir():

base= 'E:/pydoc/blog/MY_numbers/'i=0

name=['ZERO','ONE','TWO','THREE','FOUR','FIVE','SIX','SEVEN','EIGHT','NINE']for j in range(10):

file_name= base+str(i)+'_'+name[i]

os.mkdir(file_name)

i=i+1genDir()

结果如图:

4.3 制作原始数据集.

利用画图板制作手写体数据集,0-9每个5张图片,大小为32*32.

打开画图板

将这些图片对应地保存到./MY_numbers/ZERO(ONE,TWO,···,NINE)

4.4.使用以下代码扩展数据集,代码保存到根目录,命名为augment_images.py。

importos, sysimportargparseimportrandomimportcv2importnumpy as npimportimgaug as iafrom imgaug importaugmenters as iaafrom tqdm importtqdmdefmain():#CMD args parser

parser = argparse.ArgumentParser(description='Augment image datasets')

parser.add_argument("--input", action = "store", help = "Input images dir")

parser.add_argument("--output", action = "store", help = "Output images dir")

parser.add_argument("--count", action = "store", help = "Number of augmented sets to make", type=int, default=1)#Parse CMD args

args =parser.parse_args()if (args.input == None or args.output ==None):

parser.print_help()

sys.exit(1)

ia.seed(1)

paths=os.listdir(args.input)for x inrange(args.count):

seq=iaa.Sequential([

iaa.Fliplr(0.5), #horizontal flips

#Small gaussian blur with random sigma between 0 and 0.5.

#But we only blur about 50% of all images.

iaa.Sometimes(0.5,

iaa.GaussianBlur(sigma=(0, 0.2))

),#Add gaussian noise.

#For 50% of all images, we sample the noise once per pixel.

#For the other 50% of all images,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值