当前位置: 首页 > news >正文

网站开发和网页开发的区别网站后台制作用的软件

网站开发和网页开发的区别,网站后台制作用的软件,python源码分享网站,模板素材本文详细介绍了如何通过WSGI方式部署一个基于TensorFlow图像识别的Flask项目。首先简要介绍了Flask框架的基本概念及其特点#xff0c;其次详细阐述了Flask项目的部署流程#xff0c;涵盖了服务器环境配置、Flask应用的创建与测试、WSGI服务器的安装与配置等内容。本文旨在帮…本文详细介绍了如何通过WSGI方式部署一个基于TensorFlow图像识别的Flask项目。首先简要介绍了Flask框架的基本概念及其特点其次详细阐述了Flask项目的部署流程涵盖了服务器环境配置、Flask应用的创建与测试、WSGI服务器的安装与配置等内容。本文旨在帮助读者掌握Flask项目的部署方法解决在部署过程中可能遇到的问题确保项目能够稳定高效地运行。 一、Flask简介 Flask是一个轻量级的Web应用框架由Python语言编写。它是基于Werkzeug WSGI工具包和Jinja2模板引擎的并且采用BSD许可证。Flask的设计哲学是“微核”也就是说其核心保持简洁功能通过扩展实现。这使得Flask非常灵活能够满足从小型单一页面应用到大型复杂项目的不同需求。 Flask的主要特点包括 轻量级和灵活Flask仅提供核心功能开发者可以根据需要引入各种扩展。易于学习和使用Flask的API设计非常简洁明了即使是初学者也能快速上手。强大的扩展能力Flask的生态系统中有许多可用的扩展可以轻松添加数据库、表单验证、用户认证等功能。社区支持Flask拥有活跃的社区大量的教程和文档可以帮助开发者解决问题。 二、Flask项目部署流程 1. 准备工作 在开始部署Flask项目之前需要完成以下准备工作 ① 服务器安装Anaconda Anaconda是一个用于科学计算的Python发行版支持多种数据科学包的快速安装。它还包含了Conda这是一种包管理器和环境管理器能够轻松创建和管理不同的Python环境。 首先下载并安装Anaconda。可以从Anaconda官网下载适用于Windows的安装包。安装过程非常简单按照提示进行即可。 ② Anaconda创建Python环境 安装完成后使用Conda创建一个新的Python环境。这可以帮助你隔离项目的依赖确保环境的一致性。打开终端或命令提示符输入以下命令创建一个名为opencv的环境并指定Python版本 conda create -n opencv python3.8创建完成后激活这个环境 conda activate opencv③ Anaconda环境安装相关包 在激活的环境中安装Flask、Flask-CORS、TensorFlow、scikit-learn和OpenCV等必要的包 conda install flask flask-cors tensorflow scikit-learn opencv这些包包含了构建和运行Flask应用及其依赖的所有工具。 2. 创建Flask应用 在本地编写并测试Flask应用代码。以下是一个简单的Flask应用示例它使用TensorFlow的MobileNetV2模型进行图像分类和相似度计算 from flask import Flask, request, jsonify from flask_cors import CORS import numpy as np import cv2 from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image from sklearn.metrics.pairwise import cosine_similarityapp Flask(__name__) CORS(app)# 加载预训练的MobileNetV2模型 model MobileNetV2(weightsimagenet, include_topTrue)def classify_image(img):img cv2.resize(img, (224, 224)) # MobileNetV2的输入尺寸为224x224x image.img_to_array(img)x np.expand_dims(x, axis0)x preprocess_input(x)preds model.predict(x)return decode_predictions(preds, top1)[0][0][1], model.predict(x) # 返回类别名称和特征向量def calculate_similarity(feature1, feature2):return cosine_similarity(feature1, feature2)[0][0]app.route(/compare, methods[POST]) def compare_images():file1 request.files[image1]file2 request.files[image2]npimg1 np.frombuffer(file1.read(), np.uint8)npimg2 np.frombuffer(file2.read(), np.uint8)img1 cv2.imdecode(npimg1, cv2.IMREAD_COLOR)img2 cv2.imdecode(npimg2, cv2.IMREAD_COLOR)# 分类和特征提取class1, feature1 classify_image(img1)class2, feature2 classify_image(img2)if class1 ! class2:similarity 0.0risk_level 低intervention 否else:similarity calculate_similarity(feature1, feature2)risk_level 高 if similarity 0.8 else 中 if similarity 0.5 else 低intervention 是 if similarity 0.8 else 否return jsonify({similarity: f{similarity * 100:.2f}%,risk_level: risk_level,intervention: intervention,class1: class1,class2: class2})if __name__ __main__:app.run(debugTrue)在确保代码在本地运行正常。 3、本地运行Flask服务器 在本地Anaconda中启动opencv环境的终端运行以下命令启动Flask服务器 python app.py服务器启动后将会监听在本地的5000端口。 ① 页面前端代码实现 创建一个HTML文件(test.html)实现图片上传和结果展示功能全部代码如下 !DOCTYPE html html langzh-CN headmeta charsetUTF-8title图片对比/titlestylebody {font-family: Arial, sans-serif;display: flex;flex-direction: column;align-items: center;margin: 0;padding: 20px;}.container {display: flex;justify-content: space-between;width: 80%;margin-bottom: 20px;}.image-box {width: 45%;border: 2px dashed #ccc;padding: 10px;text-align: center;position: relative;}.image-box img {max-width: 100%;max-height: 200px;display: none;}.image-box input {display: none;}.upload-btn {cursor: pointer;color: #007BFF;text-decoration: underline;}.loading-bar {width: 80%;height: 20px;background-color: #f3f3f3;border: 1px solid #ccc;margin-top: 10px;display: none;position: relative;}.loading-bar div {width: 0;height: 100%;background-color: #4caf50;position: absolute;animation: loading 5s linear forwards;}keyframes loading {to {width: 100%;}}.result {display: none;margin-top: 20px;}/style /head bodyh1图片对比/h1div classcontainerdiv classimage-box idbox1label forupload1 classupload-btn上传图片/labelinput typefile idupload1 acceptimage/*img idimage1 alt左边文本抓取图片/divdiv classimage-box idbox2label forupload2 classupload-btn上传图片/labelinput typefile idupload2 acceptimage/*img idimage2 alt右边文本数据库图片/div/divbutton idcompare-btn人工智能对比/buttondiv classloading-bar idloading-bardiv/div/divdiv classresult idresultp相似百分比: span idsimilarity0%/span/pp相似度: span idrisk-level低/span/pp相同个体推测: span idintervention否/span/pp图1种类: span idclass1-/span/pp图2种类: span idclass2-/span/p/divscriptdocument.getElementById(upload1).addEventListener(change, function(event) {loadImage(event.target.files[0], image1, box1);});document.getElementById(upload2).addEventListener(change, function(event) {loadImage(event.target.files[0], image2, box2);});function loadImage(file, imgId, boxId) {const reader new FileReader();reader.onload function(e) {const img document.getElementById(imgId);img.src e.target.result;img.style.display block;document.querySelector(#${boxId} .upload-btn).style.display none;}reader.readAsDataURL(file);}document.getElementById(compare-btn).addEventListener(click, function() {const loadingBar document.getElementById(loading-bar);const result document.getElementById(result);const image1 document.getElementById(upload1).files[0];const image2 document.getElementById(upload2).files[0];if (!image1 || !image2) {alert(请上传两张图片进行对比);return;}const formData new FormData();formData.append(image1, image1);formData.append(image2, image2);loadingBar.style.display block;result.style.display none;fetch(http://localhost:5000/compare, {method: POST,body: formData}).then(response response.json()).then(data {loadingBar.style.display none;result.style.display block;document.getElementById(similarity).innerText data.similarity;document.getElementById(risk-level).innerText data.risk_level;document.getElementById(intervention).innerText data.intervention;document.getElementById(class1).innerText data.class1;document.getElementById(class2).innerText data.class2;}).catch(error {loadingBar.style.display none;alert(对比过程中发生错误请重试);console.error(Error:, error);});});/script /body /html② 运行网页 双击运行刚刚创建的test.html文件效果如图 上传左右图片比较两只相同品种的狗的相似度 可以看到系统识别出了两只狗的种类相同相似比也高达75.2%但因为没有达到我们设置的80%的阈值所以判断非同一个体。当然这里的80%非常牵强实际操作中难免误差较大。由于本文算法使用的是MobileNetV2预训练模型并没有根据实际应用场景大量训练和调参所以如果投入应用仍需重新训练并根据实际效果定义阈值。 确认本地运行正常接下来就可以进行部署了。 4. 安装Waitress服务器 Waitress是一个Python WSGI服务器适用于在生产环境中部署Flask应用。它简单易用适合部署中小型应用。使用pip安装Waitress pip install waitress5. 修改代码以使用Waitress 将Flask应用代码保存为 compare.py并确保在本地测试通过。然后创建一个批处理文件 start.cmd内容如下 echo off python -m waitress --listen*:8000 compare:app pause确保 compare.py 文件中的Flask应用对象名为 app例如 from flask import Flask, request, jsonify from flask_cors import CORS import numpy as np import cv2 from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image from sklearn.metrics.pairwise import cosine_similarityapp Flask(__name__) CORS(app)# 加载预训练的MobileNetV2模型 model MobileNetV2(weightsimagenet, include_topTrue)def classify_image(img):img cv2.resize(img, (224, 224)) # MobileNetV2的输入尺寸为224x224x image.img_to_array(img)x np.expand_dims(x, axis0)x preprocess_input(x)preds model.predict(x)return decode_predictions(preds, top1)[0][0][1], model.predict(x) # 返回类别名称和特征向量def calculate_similarity(feature1, feature2):return cosine_similarity(feature1, feature2)[0][0]app.route(/compare, methods[POST]) def compare_images():file1 request.files[image1]file2 request.files[image2]npimg1 np.frombuffer(file1.read(), np.uint8)npimg2 np.frombuffer(file2.read(), np.uint8)img1 cv2.imdecode(npimg1, cv2.IMREAD_COLOR)img2 cv2.imdecode(npimg2, cv2.IMREAD_COLOR)# 分类和特征提取class1, feature1 classify_image(img1)class2, feature2 classify_image(img2)if class1 ! class2:similarity 0.0risk_level 低intervention 否else:similarity calculate_similarity(feature1, feature2)risk_level 高 if similarity 0.8 else 中 if similarity 0.5 else 低intervention 是 if similarity 0.8 else 否return jsonify({similarity: f{similarity * 100:.2f}%,risk_level: risk_level,intervention: intervention,class1: class1,class2: class2}) 6. 运行启动 配置WSGI启动 python -m waitress --listen*:5000 compare:app你可以通过访问 http://localhost:5000 来测试你的应用。 然后给5000端口配置安全组/防火墙实现通过公网访问。 三、Flask项目部署总结 本文详细介绍了如何通过WSGI方式部署一个基于TensorFlow图像识别的Flask项目。从安装和配置Anaconda环境到编写和测试Flask应用再到安装和配置WSGI服务器我们覆盖了部署过程中的每一个步骤。这些步骤帮助确保你的Flask应用能够稳定高效地运行并且在生产环境中易于维护和扩展。 通过遵循这些步骤你可以确保你的Flask应用在各种环境中都能够正常运行避免了在部署过程中可能遇到的许多常见问题。同时这种方式也为你提供了一种标准化的部署流程使得以后部署新的Flask项目变得更加简单和高效。希望本文对你的Flask开发和部署之旅有所帮助。
http://www.w-s-a.com/news/380944/

相关文章:

  • 做鞋子的招聘网站有哪些微网站
  • 项目网站开发建网站 多少钱
  • wordpress做门户seo培训价格
  • 百度关键词优化软件如何wordpress站点地图优化
  • 使用cnnic证书的网站营销公司有哪些
  • 做电子杂志用什么网站如何将网站生成二维码
  • 三点水网站建设洛阳市建设厅网站
  • 哪家做网站便宜网络推广培训吧
  • 网站怎么做支付非凡软件站
  • 北京谁会做网站开发熊岳网站怎么做
  • 南阳哪有做网站公司定制网站本地企业
  • 平板上做网站的软件邀约网站怎么做请柬
  • 企业网站成品源码邯郸做网站流程
  • 建设网站需要什么技术两个网站放在同一个服务器 备案
  • 焦作做网站推广天津网络关键词排名
  • siteserver cms网站访问量挂机宝可以做网站吗
  • 普宁网站建设公司网络商城设计
  • wordpress主题 外贸网站wordpress安装后输入帐号登不进去
  • 陕西省西安市建设局网站永登网站设计与建设
  • 广东网站设计招工.免费咨询贷款
  • 做试题网站在线做c 题的网站
  • 青岛发现51例阳性南京专业网站优化公司
  • 南昌建站如何上wordpress
  • 洛阳网站建设优惠公司建筑企业上市公司有哪些
  • 营销型网站建设营销型网站建设手机网站设计需要学什么
  • 在线视频网站 一级做爰片南通网站建设找哪家
  • 网站优化文章东莞专业网站建设价钱
  • 哈尔滨网页设计网站模板泰兴建设局网站
  • 响应式网站设计公司报纸做垂直门户网站
  • 陕西旭泽建设有限公司网站企业网站建设软件需求分析