与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检测手机QQ在线状态的脚本代码
Feb 10 Python
python中管道用法入门实例
Jun 04 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
Python使用正则表达式抓取网页图片的方法示例
Apr 21 Python
基于Django与ajax之间的json传输方法
May 29 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
对Python发送带header的http请求方法详解
Jan 02 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
keras 多gpu并行运行案例
Jun 10 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
python 爬取天气网卫星图片
Jun 07 Python
Python matplotlib绘制雷达图
Apr 13 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
微信扫描二维码登录网站代码示例
2013/12/30 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
MooTools 1.2介绍
2009/09/14 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
什么是serialVersionUID
2016/03/04 面试题
如何写一份好的自荐信
2014/01/02 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
学校安全防火方案
2014/06/07 职场文书
销售员岗位职责
2014/06/09 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
会议欢迎词
2015/01/23 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书