与Django结合利用模型对上传图片预测的实例详解


Posted in Python onAugust 07, 2019

1 预处理

(1)对上传的图片进行预处理成100*100大小

def prepicture(picname):
  img = Image.open('./media/pic/' + picname)
  new_img = img.resize((100, 100), Image.BILINEAR)
  new_img.save(os.path.join('./media/pic/', os.path.basename(picname)))

(2)将图片转化成数组

def read_image2(filename):
  img = Image.open('./media/pic/'+filename).convert('RGB')
  return np.array(img)

2 利用模型进行预测

def testcat(picname):
  # 预处理图片 变成100 x 100
  prepicture(picname)
  x_test = []

  x_test.append(read_image2(picname))

  x_test = np.array(x_test)

  x_test = x_test.astype('float32')
  x_test /= 255

  keras.backend.clear_session() #清理session反复识别注意
  model = Sequential()
  model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(100, 100, 3)))
  model.add(Conv2D(32, (3, 3), activation='relu'))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Dropout(0.25))

  model.add(Conv2D(64, (3, 3), activation='relu'))
  model.add(Conv2D(64, (3, 3), activation='relu'))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Dropout(0.25))

  model.add(Flatten())
  model.add(Dense(256, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(4, activation='softmax'))

  sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
  model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])


  model.load_weights('./cat/cat_weights.h5')
  classes = model.predict_classes(x_test)[0]
  # target = ['布偶猫', '孟买猫', '暹罗猫', '英国短毛猫']
  # print(target[classes])
  return classes

3 与Django结合

在views中调用模型进行图片分类

def catinfo(request):
  if request.method == "POST":
    f1 = request.FILES['pic1']
    # 用于识别
    fname = '%s/pic/%s' % (settings.MEDIA_ROOT, f1.name)
    with open(fname, 'wb') as pic:
      for c in f1.chunks():
        pic.write(c)
    # 用于显示
    fname1 = './static/img/%s' % f1.name
    with open(fname1, 'wb') as pic:
      for c in f1.chunks():
        pic.write(c)

    num = testcat(f1.name)
    # 有的数据库id从1开始这样就会报错
    # 因此原本数据库中的id=0被系统改为id=4
    # 遇到这样的问题就加上
    # if(num == 0):
    #  num = 4 
    # 通过id获取猫的信息
    name = models.Catinfo.objects.get(id = num)
    return render(request, 'info.html', {'nameinfo': name.nameinfo, 'feature': name.feature, 'livemethod': name.livemethod, 'feednn': name.feednn, 'feedmethod': name.feedmethod, 'picname': f1.name})
  else:
    return HttpResponse("上传失败!")

以上这篇与Django结合利用模型对上传图片预测的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python模块学习 datetime介绍
Aug 27 Python
python实现的阳历转阴历(农历)算法
Apr 25 Python
python进阶教程之词典、字典、dict
Aug 29 Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python 基础教程之包和类的用法
Feb 23 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
Python实现的双色球生成功能示例
Dec 18 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
pandas to_excel 添加颜色操作
Jul 14 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 #Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 #Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 #Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 #Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 #Python
Python学习笔记之文件的读写操作实例分析
Aug 07 #Python
详解python中__name__的意义以及作用
Aug 07 #Python
You might like
php中的strpos使用示例
2014/02/27 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
Python中装饰器的一个妙用
2015/02/08 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
领导视察欢迎词
2014/01/15 职场文书
教师简历自我评价
2014/02/03 职场文书
小露珠教学反思
2014/04/30 职场文书
推广活动策划方案
2014/08/23 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
教师素质教育心得体会
2016/01/19 职场文书
nginx日志格式分析和修改
2022/04/28 Servers
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python