与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之一个免费的实验室
Sep 14 Python
python 获取网页编码方式实现代码
Mar 11 Python
Python 文件操作的详解及实例
Sep 18 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
Python创建字典的八种方式
Feb 27 Python
numpy.random模块用法总结
May 27 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
基于PyQT实现区分左键双击和单击
May 19 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
pytorch查看网络参数显存占用量等操作
May 12 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之PHP语法学习笔记1
2006/12/17 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php制作文本式留言板
2015/03/18 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
基于jquery & json的省市区联动代码
2012/06/26 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
同学聚会主持词
2014/03/18 职场文书
上海世博会口号
2014/06/19 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
新闻稿件写作范文
2015/07/18 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
Java并发编程之Executor接口的使用
2021/06/21 Java/Android