前段时间, 日剧《轮到你了》大火, 作为程序员的我, 看到了另外一个程序员 - 二阶堂, 他的生活作息, 以及饮食规律, 让我感同身受, 最让我感触的是他做的 AI 聊天机器人, AI 菜品分析机器人, AI 罪犯分析.
这让作为程序员的我突然萌生了一股攀比和一种激情, 我也得做一个出来 (小声 bb, 都得尝试下):
于是, 我想从相对简单的做起,《AI 菜品分析机器人》:
AI 菜品分析机器人:
1. 建立语料库, 爬取各个网站的对话和问答, 这里我采用的是知乎以及调用 API 获取实时对话, 至于代码的话我这里就不放了, 涉及比较多, 我这里侧重点是图像识别, 大概获取了将近 4 万条数据,
这里给出部分结果, 如果大家需要相关数据的话, 可以点赞留言 (留下您的邮箱):
2. 关于图像识别:
1. 图像训练需要极大的数据, 我这里找了很久, 通过各种手段, 找到了 kaggle 比赛曾用过的 101000 张图片, 里面有 101 种食物图片, 如下 (部分), 如有需要, 可以在下方点赞留言 (邮箱):
类似于上述图片, 每一个图片都是都是对应得食物, 我们需要提取每一张图片的特征值.
2. 我们可以看出上述图片, 大小不一, 还具有色彩, 我们特征值提取, 是将图片进行矩阵化, 所以我们在这里需要将图片变成大小一样, 并且灰度处理. 这里我们解释下:
将图片处理成大小一样: 我们训练数据的时候是将图片矩阵化, 如果图片大小不一样, 我们得矩阵大小就不一样, 所以在训练得时候会有问题, 为了简单方便, 我们直接将其同一化:
- import numpy as np
- from PIL import Image
- img =Image.open("F:/images/baby_back_ribs/"+i).convert('L')
- img=img.resize((512,512))
- img.save("F:/baby_back_ribs28/"+i)
这里, 我们通过 img =Image.open("F:/images/baby_back_ribs/"+i).convert('L') 将图片灰度处理, 然后 img=img.resize((512,512)) 处理图片为 512,512, 最后保存:
可以看出, 我们处理过后得图片如上, 得出这样的图片后, 我们就可以用来作为数据了
3. 我们将我们获取的灰度图片矩阵化:
- for i in range(512):
- for j in range(512):
- pixel=1.0-float(img.getpixel((j,i)))/255.0
所以我们可以将其矩阵化:
每张图片有 512*512 个数据, 我们这里是将一个二维矩阵扁平化为一维矩阵. 所以我们可以将这 101000 张图片所有数据都矩阵化, 然后测试算法.
具体的代码, 还在测试中, 目前遇到得问题比较多, 正在一步一步处理, 后面会继续更新, 下面给出我遇到的一些问题和解决:
1. 数据的获取: 这 101000 张图片我找了很久才找到的数据, 如果大家有想做的可以在下方点赞, 留言, 我给大家邮箱发过去 (约有 5 个 g).
2. 数据量比较大, 在处理的时候容易出错, 所以大家在写的时候一定要仔细, 最好把源图复制一份, 保留下来.
3. 图片特征比较多, 普通的算法难以满足, 容易出现过拟合现象, 而且 1000 张图也不算特别多, 准确率较低, 容易识别出错.
4. 在实现矩阵算法的时候, 每次带入 100 张图片进行训练, 注意图片维度, 以及图片长度.
等数据测试稳定后会放出源码让大家学习.
持续更新中, 希望大家留意后面的博客, 需要数据的点赞留言 (邮箱).....
来源: https://www.cnblogs.com/lh9527/p/9527-3.html