与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 获取本机ip地址的两个方法
Feb 25 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
Python批量处理csv并保存过程解析
May 16 Python
Django使用rest_framework写出API
May 21 Python
Python错误的处理方法
Jun 23 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
Matplotlib绘制混淆矩阵的实现
May 27 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更新cookie内容的详细方法
2019/09/30 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
简单谈谈React中的路由系统
2017/07/25 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
Python三元运算实现方法
2015/01/12 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
使用python远程操作linux过程解析
2019/12/04 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
C#面试题问题集
2016/04/02 面试题
Linux操作面试题
2012/05/16 面试题
银行介绍信范文
2014/01/10 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
人民调解员培训方案
2014/06/05 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
财务总监岗位职责
2015/02/03 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
光荣之路观后感
2015/06/12 职场文书
如何利用python实现Simhash算法
2022/06/28 Python