与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 28 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
Django多数据库的实现过程详解
Aug 01 Python
利用Python实现kNN算法的代码
Aug 16 Python
python画蝴蝶曲线图的实例
Nov 21 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
python pip如何手动安装二进制包
Sep 30 Python
pytorch中index_select()的用法详解
Jan 06 Python
OpenCV-Python实现轮廓的特征值
Jun 09 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
Protoss热键控制
2020/03/14 星际争霸
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
js实现图片360度旋转
2017/01/22 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
使用python实现个性化词云的方法
2017/06/16 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
matplotlib绘制动画代码示例
2018/01/02 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
生物专业个人自荐信范文
2013/11/29 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
财务总监岗位职责
2014/03/07 职场文书
产品生产计划书
2014/05/07 职场文书
好的促销活动方案
2014/08/21 职场文书
送达通知书
2015/04/25 职场文书
离职信范文
2015/06/23 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫