与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判断文本中消息重复次数的方法
Apr 27 Python
使用pycharm生成代码模板的实例
May 23 Python
python读写LMDB文件的方法
Jul 02 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
django数据库自动重连的方法实例
Jul 21 Python
Django之PopUp的具体实现方法
Aug 31 Python
pytorch多GPU并行运算的实现
Sep 27 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
Python request使用方法及问题总结
Apr 26 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
如何用python免费看美剧
Aug 11 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分页显示制作详细讲解
2008/11/19 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
javascript中常用编程知识
2013/04/08 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
python解析xml文件实例分析
2015/05/27 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python多线程并发及测试框架案例
2019/10/15 Python
python多进程重复加载的解决方式
2019/12/13 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
家长写给老师的建议书
2014/03/13 职场文书
培训班主持词
2014/03/28 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书