与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标准异常和异常处理详解
Feb 02 Python
python中使用序列的方法
Aug 03 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
图文详解python安装Scrapy框架步骤
May 20 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python 爬虫的原理
Jul 30 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
Python的property属性详细讲解
Apr 11 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/04 星际争霸
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
javascript编程起步(第五课)
2007/02/27 Javascript
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
js 页面输出值
2008/11/30 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
遗传算法之Python实现代码
2017/10/10 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Django视图扩展类知识点详解
2019/10/25 Python
Python用input输入列表的实例代码
2020/02/07 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
中餐厅主管的职责范文
2014/02/04 职场文书
护士年终考核评语
2014/12/31 职场文书
2015年质检工作总结
2015/05/04 职场文书
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python