识药PRD
目录
一、产品简介
识药APP是一款面向广大药学生的学习辅助类APP,为药学生提供了一个可以免费学习草药知识的平台。利用本APP,药学生们可以通过拍照鉴别不认识的草药,也可以通过题目的训练增长自身的药草学方面的知识,在药草的鉴定,以及对草药的分布、药性、药理等方面的知识上得到更加好的锻炼。不论是在日常的学习中还是在学院组织的外出采集草药的学习中,都能够对药学生的学习起到很好的帮助效果。
识药APP的宗旨在于通过由图像识别为基础的药草鉴别和题库帮助药学生的在草药方面的学习,令其有一个更好的药草学习的环境。
产品slogn:你的识药助手
二、需求分析
2.1背景分析
对于学习药科以及中医等方面技术的同学来说,在面临药用分子学、中医学、药用植物学等学科时,往往都要求学生具备一定得对于药材以及其所包含的药理的辨识度。通过问卷调查后我们发现,对于大多人来说,药材虽然在我们的生活中并不少,但是由于缺少基本的指导,在日常生活中我们对此的了解相对薄弱。而大部分药材生长的环境也不尽相同,所以很难有一个良好的条件帮助要学生们在日常生活中的学习。
2.2可行性分析
2.2.1概述
对于识药APP来说,当前最主要的问题在于经过训练后的机器可能仍然存在着识别错误的可能,当前机器学习的程度也不够深入,所以需要更加多的锻炼。
首先出于对功能实现的需求,处于大数据时代的我们得到了莫大的便利,我们可以依据现存的网络中的开放数据作为机器学习的训练原材料以及题库内容需要用到的各种相关知识,这也大大的提高了软件完成的可行性。
本产品的面向对象为当代大学生,在界面设计以及交互方式设计上均采用了简单化,简洁化的方式,这样的UI设计方式可以大大加快APP本身的工作效率,以此来达到为用户带来更好的体验,更好地服务用户的目标。
2.2.2技术可行性
识药APP的实现主要涉及以下两大功能,用于识别药草的图像识别功能以及用于实现搜索结果的爬虫功能,其中图像识别功能使我们当前最主要的技术难点,对此,我们已经完成了对该技术点的攻克,足以胜任本次的APP开发,因此在技术上是可行的。
2.2.3经济可行性
识药APP本身定义为服务性质的工具软件,在开发初期我们需要大量的数据进行深度学习,而在此之后的后期维护中主要以数据库的更新为主,故此所需要的投入花销并不会过大,因此,从经济层面而言是可行的。
2.2.4操作可行性
本产品在初期阶段便已经定下以简洁易操作的系统设计去迎合广大用户的 需求,在操作流程上以及各项系统设计中均以简洁明了作为主旨,而采用人工 智能的深度学习作为后台运行数据的更新和调用,故此系统管理者并不需进行 十分多的工作。
2.3风险分析
略(详情见word文档)
三、设计理念
3.1概述
经过问卷调查,我们发现大多数学习药科的同学存在以下问题:
1.除了实验课以外难以在正常生活中正式接触草药;
2.对于草药的认识大多来自书本,刻板记忆,缺少更优方法的锻炼;
3.在外出采药学习活动中,由于自身知识层面的不足独立完成采摘并不容易。
针对以上的问题,我们决定采用以下方法来解决。大致可以概括为一个中心两个基本点。
中心是指我们始终围绕着为药学生的学习打好助攻为中心,两个基本点是指围绕中心展开的两大功能。一为以图像识别技术为基础的草药识别功能,搭配药草的百科,以此达到帮助药学生认识不熟悉的药草;二为基于先有数据库制作的题库功能,该功能可以锻炼巩固药学生关于药草方面的知识。
我们的最终目标为帮助药学生在草药方面的学习变得更加轻松。
3.2市场分析
3.2.1市场现状
根据调查我们总结了当前的市场现状如下:
(1)当前市场上存在着大量的帮助学生学习的APP,但是大多广泛铺开,针对某一类学生进行专业的辅导的APP较为少见(除计算机类以外)
(2)市场上有相关的APP,但在形式上比较陈旧,仍然停留在电子版百科层面
3.2.2相关竞品分析
经过调查,当前目标用户在进行药材鉴别是主要采用形色APP+百度模式,以下将针对形色APP与本产品做一个简要的对比分析。
(1)形色APP主要界面展示:
(图2 形色APP页面展示)(此处略,详情见word)
(2)形色APP主要功能分析:
a.拍照识别:该功能主要针对常见的植物,以具有观赏价值的为主
b.社交:形色是一款基于植物发烧友的社交APP,会提供许多社交资源
(3)对比分析
形色APP是一款基于图像识别进行植物识别的社交APP,其受众主要为植物爱好者,与药学生这个目标用户群体存在较大的差别,其次,形色APP主要提供识别鉴定结果,而对于药材本身的药理、药性等方面基本未有涉及,所以其需要与百度相结合,在操作过程中会加大繁琐程度。相对而言,识药APP在实现鉴别功能后还引入了题库功能,为用户在学习上提供了更大的便利。
四、作品的应用场景及用户手册
详情见word
五、产品亮点与技术方案
5.1产品亮点
5.1.1技术亮点
(1)本产品将对药草的识别与深度学习精密结合,从图像识别的方面来解决药学专业的学生对陌生药草的认识,同时,除了保证了对图像的识别外,本产品还建立了对应的药草数据库。不仅保证用户能识别出药草,更能是用户从其特点,功效等方面全方位的了解该药草,从而扩大自己的知识面;
(2)在药草识别技术方面使用了具有“快如闪电”的yolov3网络,确保用户使用本产品时的实时性;除此之外,准确性也是该网络结构的一大亮点,保证用户在使用该产品时得到准确的结果。除了“快,准”外,该网络还具有“多”的特点,当待识别图片具有多种草药同时出现时,能准确的定位到相对应的位置,并且给出相应的结果。
(3)识药APP可以做到识别同一张图片中不同药草的功能。
5.1.2理念创新
识药APP本着授人以鱼不如授人以渔的理念,在为广大用户提供直接鉴别药草的工具的同时,也在同时传授用户如何鉴别药材,药材的药理是如何的,识药APP的题库功能是实现这一理念的重要部分,而通过题库的锻炼,我们也能够真正地做到如何帮助药学生的目的。
5.2药草识别-YOLO原理及其实现
产品主要使用了人工智能中图像识别以及机器学习的相关技术,以下是详细原理的介绍。
YOLO简介
YOLO检测物体的速度很快。标准版本的YOLO在Titan X的GPU上能达到45FPS。网络较小的版本Fast YOLO在保持mAP是之前的其他实时物体检测其的两倍的同时,检测速度可以达到155FPS。
YOLO原理
将物体检测任务当作回归问题(regression problem)来处理,直接通过整张图片的所有像素得到bounding box的坐标、box中包含物体的置信度和class probabilities。通过YOLO,每张图象只需要看一眼就能得出图像中都有哪些物体和这些物体的位置。
检测流程
将图像resize后作为神经网络的输入
运行神经网络,得到一些bounding box、box中包含物体的置信度和class probabilities
进行非极大值抑制,筛选Boxes
(图4 原理分析图例二)
算法流程
必须提前说明,这里的三个参数:
- S:栅格数
- B:Bounding boxes个数
- C:检测类别数
(图5 原理分析图例三)
YOLO将输入的图像分成S*S的栅格,每个栅格负责检测中心落在该栅格中的物体
每一个栅栏预测B个Bounding boxes,以及这些Bounding Boxes的confidence scores.
confidence scores:反映了模型对于这个栅格的预测:该栅格是否含有物体,以及这个box的坐标预测的准确度。共包含5个参数:左上角的坐标信息(x,y),宽高(w,h)以cs
(图6 原理分析图例四)
如果栅格不存在一个object,则cs=0
除此之外,每个栅格还要预测C个conditional class probability(条件类别概率):Pr(class|obect),在包含一个object的前提下,属于某个类别的概率。
(图7 原理分析图例五)
每个彩色图片可以看成是一个三维的矩阵,类似于一个长方体(有兴趣的可以查看我的另一个关于opencv学习的博客(还未发布)),因此在上图中,将每一个栅格抽象化为大长方体中的一个小长方体,具体如下:
(图8 原理分析图例六)
这张图的两个5代表两个bounding box预测出的信息,而最后的20代表c(类别)的个数。
(图9 原理分析图例七)
注意:
Conditional class proilitu信息是针对每个网络的,confidence信息是针对每个bounding box的。在测试阶段,将每个栅栏的conditional class proability于bb的confidencce相乘:
(图10 原理分析图例八)
这样就可以得到每个bb的具体类别的confidence score.
这乘积既包括了bb中预测的class的proability信息,也反映了bounding box是否包含object和bounding box坐标的准确度。
(图11 原理分析图例九)
例:
假如使用VOC数据集时:
S = 7,
B = 2,
C = 20
则最后的prediction是7730 (SS(B*5+C)
(图12原理分析图例十)
(图13 原理分析图例十一)
注意每个bboxes的维度以及其数量。
每个bbox检测7×7(49)个栅栏,共2个,因此最后得出98个向量,同时每个向量维度为20*1。
在原图中的bboxes如下:
(图14 原理分析图例十二)
Network Design
YOLO 检测网络包括24个卷积层和2个全连接层
(图15 原理分析图例十三)
卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率(直接pretrain其他主干网络,最后修改FC部分)
损失函数:
(图16 原理分析图例十四)
一个向量中,前4维代表着相关的bbox框,第5维代表是否存在物体的概率。一下以此类推。后20维每维代表着一个类别,同时存放着其概率。因此,x,y,w,h进行目标检测的第一个阶段,物体的定位,之后,在进行下一步的物体识别。
(图17 原理分析图例十五)
在上图中,将得到的98个向量的每一对应维度的值进行阈值分割(自定义阈值),小于该阈值的数值归零。第二步,在归零之后,进行降序排列,重新组合98个向量位置,最后,使用NMS(非极大值抑制)算法,去除重复率较大的bboxes。最后保留了最大的两个bboxes。
NMS简单介绍
针对某一类别,学则得分最大的bboxes,之后计算它与其他bboxes的IOU,
若IOU>0.5,则重复率较大,保留得分大的值,另一个设0;否则,不变。由此循环,直至结束。
当NMS算法结束后,进入下一阶段。
步骤:
- 设置一个Score的阈值,低于该阈值的候选对象排除掉(将该Score设为0)
- 遍历每一个对象类别
2.1.遍历该对象的98个得分
a.找到Score最大的那个对象及其bounding box,添加到输出列表
b.找到每个Score不为0的候选对象,计算其与上面输出对象的bounding box的IOU
d.根据预先设置的IOU阈值,所有高于该阈值(重叠度较高)的候选对象排除掉(将Score设置为0)
e.如果所有bounding box要么在输入列表中,要么Score=0,则该对象类别的NMS完成,返回步骤2处理下一种对象 - 输入列表即为预测的对象
当每一个类别对象筛选结束后,找出每个bboxes中的最大值,并且执行如上图的判断语句,符合阈值,则在图中添加对应颜色的类别框。
补充:
网基本结构
(图19 原理分析图例十七)
5.3实现过程
标注工具(labelimg)
使用工具lableimg
(图20 原理分析图例十八)
(1)操作步骤
使用cmd进入下载目录之后,使用python lableimg进入标注工具,open选择文件之后,选择Create\nRectBox进行选择区域,并且标注药草名,如下:
(图21 原理分析图例十九)
(图22 原理分析图例二十)
(2)保存后的效果图
(图23 原理分析图例二十一)
xml文件内容
(图24 原理分析图例二十二)
(2)下载编译darknet
(3)准备数据集、训练、测试
a.在darknet目录下创建myData文件夹,目录结构如下,将之前标注好的图片和xml文件放到对应目录下
(图25 原理分析图例二十三)
(图26 原理分析图例二十四)
(图27 原理分析图例二十五)
(图28 原理分析图例二十六)
b.将数据转换成darknet支持的格式
c.运行该脚本
d.在myData文件夹下新建myData.names文件
曼陀罗 鬼针草 天香菜
e.下载预训练权重
f.开始训练
g.测试
(图29原理分析图例二十七)
六、页面设计展示
略,详情见word文档
——至此展示结束