与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通过命令开启http.server服务器的方法
Nov 04 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
Python之读取TXT文件的方法小结
Apr 27 Python
详解python运行三种方式
May 13 Python
Python 画出来六维图
Jul 26 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
Django choices下拉列表绑定实例
Mar 13 Python
python matplotlib实现将图例放在图外
Apr 17 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python中append函数用法讲解
Dec 11 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 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
全国中波电台频率表
2020/03/11 无线电
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python中xrange和range的区别
2014/05/13 Python
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
CAD制图设计师自荐信
2014/01/29 职场文书
市场总经理岗位职责
2014/04/11 职场文书
摄影展策划方案
2014/06/02 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
导游词欢迎词
2015/02/02 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
基于Python实现将列表数据生成折线图
2022/03/23 Python