与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使用PyV8执行javascript代码示例分享
Dec 04 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
聊聊python中的异常嵌套
Sep 01 Python
基于Python爬取素材网站音频文件
Oct 21 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
python中添加模块导入路径的方法
Feb 03 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之sprintf函数用法详解
2014/11/12 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
WebPack配置vue多页面的技巧
2018/05/15 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
python实现猜拳游戏
2020/03/04 Python
Python代码注释规范代码实例解析
2020/08/14 Python
java关于string最常出现的面试题整理
2021/01/18 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
产品质量承诺书
2014/03/27 职场文书
婚前协议书
2014/04/15 职场文书
会计师事务所实习证明
2014/11/16 职场文书
党员活动总结
2015/02/04 职场文书
婚礼答谢词范文
2015/09/29 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python
详解Python函数print用法
2021/06/18 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python