在线时间4067 小时
UID3441752
注册时间2017-11-21
NXP金币754068
TA的每日心情 | 开心 2024-3-26 15:16 |
---|
签到天数: 266 天 [LV.8]以坛为家I
管理员
- 积分
- 32023
- 最后登录
- 2024-4-25
|
eIQ ToolKit上手指南——特别篇 AI/ML讨论专区
最近加油站后台收到越来越多的关于eIQ相关的提问,说明已经有越来越多的人开始使用起来了,为了鼓励大家交流并让所有人受益,我们在恩智浦MCU社区新开辟了一个“AI/ML专区”,欢迎大家把你遇到问题提出来,由网友们群策群力帮你解决,也请把自己的心得体会分享出来,大家共同进步。 小编这两天收到了不少同学们的留言,发现很多同学不仅开始使用我们的eIQ ToolKit工具,而且已经开始慢慢地学着导入自己的数据集来进行训练了,给同学们点赞。
不过,有同学在导入自己数据集的时候遇到了些问题,发现按照小编之前写的那篇文章《eIQ ToolKit上手指南(二)》,出现了报错,无法正常导出eIQ工程。
那么小编今天带来今天这份特别篇,为大家抽丝剥茧,从准备图片开始,详细介绍一下数据集的导入流程。
我们这次以一个水果分类为例。首先,从网上下载一些诱人的水果图片,方便起见,我们这里只准备两种类型的水果,香蕉+橘子,新建并放到下面的文件夹中(这里当然也可以不用新建文件夹,只是为了方便处理标签信息):
下面就是我们将要用到的图片:
准备好了粮草,接下来就要正式开始数据集的制作了:
1. 图片的读取与numpy数组的制作
这里同学们要保证电脑中已经安装了opencv以及numpy包,代码时刻(仅供参考,同学们可以自行处理,最终得到关于数据和标签的numpy数组即可):
opencv以及numpy包的安装语句是:
pip install opencv-python
pip install numpy
- 1. import os
- 2. import numpy as np
- 3. import cv2 as cv
- 4.
- 5. if __name__ == "__main__":
- 6. labels = ['orange', 'banana']
- 7. img_list = []
- 8. label_list = []
- 9. for idx, label in enumerate(labels):
- 10. for img_name in os.listdir(label):
- 11. # BGR to RGB
- 12. img = cv.imread(os.path.join(label, img_name))[...,(2,1,0)]
- 13. img = cv.resize(img, (64, 64))
- 14. img_list += [img]
- 15. label_list += [idx]
- 16.
- 17. # save to disk
- 18. np.save("./data.npy", np.asarray(img_list))
- 19. # make sure the shape of the label is (n, 1)
- 20. np.save("./label.npy", np.asarray(label_list).reshape(-1, 1))
复制代码 这里,同学们要注意几点:
在opencv读取的时候,要对输入数据进行色彩空间转换,opencv默认读入数据格式为BGR,而我们的eIQ ToolKit所接受的是RGB格式,这里要格外注意。
处理签的时候,最好是使用数值形式,而不要直接写入字符串形式的label
保证label的shape为(n,1),即label = label.reshape(-1, 1)
运行代码后,就得到了数据和标签文件:
2. eIQ工程的生成
我们直接修改eIQ ToolKit安装目录下的workspace/CIFAR_uploader.py,需要修改的地方有两处,其一是class_names修改成我们刚才所定义的:
class_names = [‘orange’, ‘banana‘]
其二是,修改数据load部分,这里我们假设数据集只有train部分,需要同学们自己修改一下刚才所生成的numpy格式的数据路径,小编这里就偷懒直接放到同一级目录下了:
data = np.load("./data.npy")
label =np.load("./label.npy")
完整代码如下:
- import tensorflow as tf
- from importer import DataStoreWrapper
- import tqdm
- import numpy as np
- if __name__ == '__main__':
- class_names = ['orange', 'banana']
- data = np.load("./data.npy")
- label = np.load("./label.npy")
- datastore = DataStoreWrapper(datastore='http://127.0.0.1:10812/')
- datastore.create_project(project_name='fruit.deepview', path='.')
- new_dimension = (128, 128)
- print("\nuploading train partition...\n")
- for i in tqdm.tqdm(range(data.shape[0])):
- datastore.upload_image(data[i], class_names[label[i][0]], new_dimension)
复制代码 接下来,运行我们这个脚本,注意要通过eIQ ToolKit中的命令行工具来运行:
之后就会生成我们的eiq工程文件:
3. 查看数据集
打开eIQ ToolKit工具,查看数据集,点选open project选项卡,打开工程:
至此,所有的步骤小编就给大家介绍完毕了,我们刚才所自定义的数据集,就被完整的导入到了eIQ ToolKit中,之后,同学们就可以通过选取模型来进行训练了。
这里还有一个小细节,同学们应该记得我们刚才在制作工程的时候,并没有指定测试数据集,而在导入进来之后,eIQ ToolKit工具实际上会根据所设置的Dataset Test Holdout比例,来进行数据集的拆分,这样一来,就不用在制作数据集的时候进行手动处理了,可以说操作非常的便捷!
|
|