与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实现方便使用的级联进度信息实例
May 05 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
深入理解Python3中的http.client模块
Mar 29 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
python中的常量和变量代码详解
Jul 25 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
python字典改变value值方法总结
Jun 21 Python
解决Django连接db遇到的问题
Aug 29 Python
django数据模型中null和blank的区别说明
Sep 02 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
Vuex实现简单购物车
2021/01/10 Vue.js
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
Python3简单实例计算同花的概率代码
2017/12/06 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
python如何统计序列中元素
2020/07/31 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
如何用python免费看美剧
2020/08/11 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python 装饰器的使用示例
2020/10/10 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
伊琍体标语
2014/06/25 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技