turicreate 视频_人工智能图片分类器:turicreate在Windows环境下简明使用教程
近几天笔者深入学习了下机器学习、深度学习,不论是谷歌围棋AIAlphaGo、还是目前使用的阿里云智能语音合成,都非常吸引人。连续多天的理论学习后,总体而言,绝大多数教程都围绕数学算法展开,而实际上我们的需求与算法之间,对新手而言还是非常不容易去匹配的。比如当下的简单图片分类模型。
0. 简介
turicreate是苹果开源的一款人工智能工具,特点是简化了机器学习的开发模型,不必成为深度学习专家,就可以实现目标检测、图像分类、或与图像分类相似的分类。缺点是不支持windows,在wsl2里数次安装无果后,我直接写了个Docker,然后拿来就用。
turicreate的简单性,下面体验过就知道,完全是无脑操作,不需要懂背后的一堆数学模型,是一个比较通用的分类工具。之前学习过一些Pytorch的基础知识,在图像分类面前,目前还比较困难,后续我会逐步学透。
项目开源地址:apple/turicreate
1. 分类模型基本原理
需求:采集图像资源并进行人工处理,实现基本的分类操作,然后利用机器学习预测未知图像。
以连连看游戏为例,想要设计一种自动消除的机器智能,首先要做的就是机器感知出正确的图片,这样才可以输出二维矩阵,进行连连看消除算法。而图片感知这块,有一种理想状态是:截取卡片内中心点,对比RGB信息,如果一样则归为一类;但实际上由于截图不是非常精确或多点类似图片的影响,这种理想状态只适合比较单调色彩的识别上。
因此就有必要借助机器智能来分类了。
2. 实现步骤
A:数据收集和整理分类
turicreate的图片分类非常好操作。在当前目录创建data文件夹,里面放置按标签名命名的图片文件。每个文件夹对应一种分类,内部为具体的已标识的图片。
B: 训练数据
在Windows系统上,运行turicreate的docker版本,然后使用CMD或Vscode进入容器:
docker run -it --name tc -v C:\\Users\\baiyue\\Desktop\\Game自动化:/app baiyuetribe/turicreate
注意替换自己的windows目录。
然后新建train.py。
import turicreate as tc
img_folder = 'data'
# 导入数据
data = tc.image_analysis.load_images(img_folder, with_path=True)
# 使用文件名来做标签
data['label'] = data['path'].apply(lambda path: path.split('/')[len(path.split('/')) - 2])
data.save('doraemon-walle.sframe')
# 百分之八十的数据用于训练,百分之二十用于测试
train_data, test_data = data.random_split(0.8, seed=2)
# 开始训练模型
model = tc.image_classifier.create(train_data, target='label')
# 测试模型
predictions = model.predict(test_data)
metrics = model.evaluate(test_data)
# 输出测试结果
print(metrics['accuracy'])
model.save('my_model_file')
上面代码无需做任何处理,然后运行python train.py进行训练,完成后会在当前目录生成训练结果my_model_file。
此步骤CPU是满负载的,大概40s后出结果。
总分类数为28种,样本有261个图片,最终精度为1.基本够胜任连连看的图片识别了。
C: 预测数据
训练完毕后,我们随机截截取几个新的图片,命名为1,2,3.png,然后用刚才训练的模型去预测。
当前目录创建predict.py文件。
import turicreate as tc
loaded_model = tc.load_model('my_model_file')
def getDataset():
#data = tc.image_analysis.load_images('screenshot', with_path=True)
img_list = [str(i)+'.png' for i in range(1,4)]
result = []
for i in img_list:
data = tc.image_analysis.load_images(i, with_path=True) #图片文件名
result_arr = loaded_model.predict(data)[0]
result.append(result_arr)
return result
with open('result.txt','w',encoding='utf-8') as f:
data = getDataset()
print(data)
f.write(str(getDataset()))
运行python predict.py后,输出预测结果为:['4', '18', '24'].
对比分类图,可见预测结果是非常准确的。
3. 遗留问题
由于不支持Windows,我采用了自制Docker,使用体验上非常好,但是与windows本地交互不方便,比如本地环境下ps.system('docker exec -it tc python /app/train.py')命令就无法正常执行,subprocess也是一样,因此这里就出现了连接阻断。这样的话本地桌面截图就无法调用Docker容器内部的机器模型去识别了。针对这种情况,可以尝试做一个webapi接口,利用url请求传递待检测的图片,容器内部处理后把结果返回过来,就可以解决这种阻断。 事实上这是非常容易实现的方式,毕竟绝大数人工智能,最后都是以API接口的形式对外开放。
佰阅部落 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:人工智能图片分类器:turicreate在Windows环境下简明使用教程
turicreate 视频_人工智能图片分类器:turicreate在Windows环境下简明使用教程相关推荐
- Windows环境下训练OpenCV分类器
首先说一下我的经历吧!不想看的可以直跳到教程.之前在树莓派上训练分类器,发现树莓派内存过小,训练几张照片还ok,但是训练十几张照片进程直接就被系统扼杀掉,,所以这次选择用笔记本训练.经过测试,用400 ...
- (超好用)linux/Windows环境下pdf转图片
前言:最近开发需要将pdf转图片,我用到两种方法进行转换 方法一: 通过BufferedImage进行pdf转换, 实现:Windows下正常转换,Linux下出现异常报错 展示效果:图片较模糊 Le ...
- Windows环境下视频分帧
鉴于个别同学目前使用的还是windows环境,录屏.分帧方式跟Mac可能有所差别,该简易教程就提供了对于window视频分帧的基本步骤,纯属个人探索,希望以后可以有更好的工具提供给大家使用. 步骤: ...
- 人工智能换脸pythonapp小视频_人工智能几行代码实现换脸,python+dlib实现图文教程...
图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息.随着计算机技术的发展,人类对图像识别技术的认识越来越深刻.图像识别技术的过程分为信息的获取.预处理.特征抽 ...
- 将一个文件夹里面的视频批量转换为图片并保存在同一目录下
import os import cv2cut_frame = 1 # 多少帧截一次,自己设置就行 save_path = "/media/gpu/00758835-1a92-4611-8a ...
- python文件打不开 环境变量错误_【图片】[求助]cmd用环境变量突然打不开文件【python吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 对比了一下英文原版资料,这下更明显了. Running Your Python Scripts from a Command Prompt Actuall ...
- 我的世界java版按键教程视频_我的世界(电脑Java版)execute指令教程
注:该教程基于Java V1.16.3 通常可以兼容1.13+的版本 1.9-1.12可能会有不兼容,出现问题可以在评论区提问.如果1.12及以下的玩家较多,以后会专门出一个针对1.12及以下的教 ...
- 机器学习经典算法实践_服务机器学习算法的系统设计-不同环境下管道的最佳实践
机器学习经典算法实践 "Eureka"! While working on a persistently difficult-to-solve problem, you disco ...
- Windows环境下视频文件转成RTSP视频流和RTMP流
文章目录 一. 需要的工具 二.部署EasyDarwin服务器 三.ffmpeg命令行推rtsp流进行测试 四.采用ffmpeg代码方式推rtsp流到服务器 五.使用nginx搭建RTMP服务器 一. ...
最新文章
- 查看mysql版本不一致_MySQL-版本不一致
- MATLAB中如何将一幅图像的地理信息写入另一幅图像
- 8.腾讯微博Android客户端开发——自动获取验证码(2)
- Java 时期格式 星期显示英文
- 第五章 Octave 教程-机器学习老师板书-斯坦福吴恩达教授
- java getbasicremote_Vue+Java 通过websocket实现服务器与客户端双向通信操作
- 拖链电缆 机器人电缆_trvv高柔性拖链电缆
- Java如何根据IP获取当前定位
- Venkat 演讲翻译:你要清除代码中的异味
- 最新数据:中国网民超10亿,中老年群体增速最快
- Wamp在重新装机后不想配置
- 软件_可用rtmp直播地址20200517
- win7查看计算机设置密码,如何查看win7电脑开机密码_win7专业版电脑开机密码怎么查看...
- python的多行注释以什么开头_Python的多行注释
- 小程序项目:基于微信小程序的超市购物系统——计算机毕业设计
- 「教程」Windows程序未响应,怎么分析确认具体原因
- 服务端渲染技术之Nuxt.js的详细使用
- 【Paper】DTWSequence Analysis
- byteTrack数据集categories不规范带来的问题
- 百慕大群岛计划发起区块链土地登记系统
热门文章
- matlab fromstream,Matlab中的RandStream的应用场景 -转
- C语言判断ch是否为大写字母,判断char型变量ch是否为大写字母的C语言表达式是( )....
- Android文件类型转换(已适用于Android11)
- vue3 antd项目实战——Form表单的提交与校验【v-model双向绑定input输入框、form表单数据,动态校验规则】
- html5+css3学习(上)
- 如何设计出留住买家的B2C网站
- Java创建型设计模式——建造者模式
- linux的根目录与家目录的区别
- 药明康德成都研发中心投入运营;中国白酒行业净利润将迎来七年来首次下滑 | 美通企业日报...
- OPPO A73线刷包下载_OPPO A73密码忘记了?来这里搞定!