与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 相关文章推荐
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python中join()方法介绍
Oct 11 Python
django 通过URL访问上传的文件方法
Jul 28 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
Python3视频转字符动画的实例代码
Aug 29 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
python3.4中清屏的处理方法
Jul 06 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 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
织梦模板标记简介
2007/03/11 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
浅谈js原生拖放
2016/11/21 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python编写一个优美的下载器
2018/04/15 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
挖掘机司机岗位职责
2014/02/12 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
525心理活动总结
2014/07/04 职场文书
十佳青年事迹材料
2014/08/21 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server
win7配置本地ftp服务器的图文教程
2022/08/05 Servers