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

用电信固定IP做网站网页设计网站多少钱

用电信固定IP做网站,网页设计网站多少钱,wordpress安装到阿里云主机,wordpress 标签 取消本文详细介绍了如何通过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.dnsts.com.cn/news/231901.html

相关文章:

  • 做网站电子版报价模板做自己的网站挣钱
  • 连锁餐饮网站开发背景内容网站推广计划书范文
  • 自己做的网站怎么嵌入高德地图建立网站的公司
  • 企业网站模板下载哪家口碑好wordpress 一直加载插件
  • 温州网站推广优化公司iis本地网站
  • 文具用品网站设计规划书深圳自定义网站开发
  • 广西网站建设公司招聘wordpress站长统计插件
  • 珠海免费模板建站公众号引流推广平台
  • 网站开发后台数据库怎么搞服务器网站怎么用
  • 往网站上传照片怎么做网站欢迎页代码
  • 中国建设工程招投标网站沈阳关键字优化公司
  • 申请注册网站网站论坛推广文案怎么做
  • 做外销网站宝安网站建设公司968
  • 建设银行亚洲官方网站南京学校网站建设策划
  • 永久域名注册网站网站制作在线版
  • 戚墅堰网站建设中国移动app下载
  • 一句话介绍网站开发南昌 提供网站设计 公司
  • 网站一键备份有哪些做留学资讯的网站
  • 网站单个页面做301wordpress 视频 加载
  • 技术网站源码wordpress影视宣传制作公司
  • 京东的网站建设分析无锡 网站建设公司
  • 那个网站可以免费建站网页制作的基本步骤
  • 中国建设银行广东分行网站公众号怎么制作长图
  • 旅游网站系统功能网站模板代理
  • 网站手机页面做多大百度网盘人工申诉电话
  • 哈尔滨企业建站系统云相册网站怎么做的
  • 西安建筑网站建设建设部网站电子政务
  • 常州网站建设培训网站建设哪个部门管理
  • 网站建设 软件有哪些wordpress 鼠标移动到标题会显示图片
  • 国外做游戏评测的视频网站公司网站建设考核