中山网站建设哪家强,o2o网站建设新闻,阿里的6家外包公司名单,金融投资管理公司网站源码上一期视频中#xff0c;我们介绍了Ultralytics框架下最新更新的语义检索功能#xff0c;只需本地3行代码#xff0c;就能构建一个基于文本语义的图像检索网站。然而#xff0c;框架自带的界面较为固定#xff0c;如果需要自定义界面#xff0c;还需额外开发#xff1b;…上一期视频中我们介绍了Ultralytics框架下最新更新的语义检索功能只需本地3行代码就能构建一个基于文本语义的图像检索网站。然而框架自带的界面较为固定如果需要自定义界面还需额外开发此外对中文支持不佳使用中文检索时结果往往偏差还有小伙伴提出能否实现以图搜图功能本期视频针对这些问题进行完善如果你还没看过上一期建议先回顾一下。自定义界面的搭建Ultralytics框架的VisualAISearch功能强大但存在以下局限界面固定框架提供的界面无法满足个性化需求需要自行编写GUI。中文支持差直接用中文查询语义理解不准导致检索结果不理想。缺少以图搜图原生仅支持文本检索无法直接用图像查询相似图像。本期我们构建了一个自定义界面支持文本检索兼容中文和图像检索全基于语义理解。主界面基于Kimi的中文转英文我们使用PyQt5构建图形界面集成Ultralytics的搜索功能并借助Kimi AI处理中文翻译。1. 中文测试界面支持文本检索输入中文描述如“一只欢乐的奔跑的狗”系统后台自动翻译成英文后检索。图像检索上传图像系统基于语义相似度返回相似度最高的8个图像。显示相似度并在网格中展示结果图像。一只欢乐的奔跑的狗检索速度快文本检索的主要耗时在翻译网络请求上实际搜索实时完成。2. 集成Kimi AI上文中我们搜索的时候直接输入的是中文。但是原模型对中文支持比较差我们用Kimi AI翻译输入为英文。新用户注册Kimi获15元额度足够多次翻译。注册后创建API Key填入代码即可。apikey翻译类KimiTranslator.pypythonimport requestsclass KimiTranslator:def __init__(self, api_key):self.api_key api_keydef translate(self, text):if not self.api_key:raise ValueError(API key is empty)url https://api.moonshot.ai/v1/chat/completionsheaders {Authorization: fBearer {self.api_key},Content-Type: application/json}data {model: moonshot-v1-8k,messages: [{role: system, content: You are a helpful and precise assistant for translating Chinese to English.},{role: user, content: fTranslate the following Chinese text to English: {text}}],temperature: 0.3}response requests.post(url, headersheaders, jsondata)if response.status_code 200:return response.json()[choices][0][message][content]else:raise Exception(fError: {response.status_code} - {response.text})核心代码实现主窗口类MainWindow继承PyQt5初始化搜索器并连接按钮信号。完整代码pythonimport sysfrom PyQt5 import QtWidgetsimport cv2from PyQt5.QtGui import *from PyQt5.QtCore import *import numpy as npfrom PyQt5.QtWidgets import *from ultralytics import solutionsimport osfrom main_window import Ui_MainWindowfrom KimiTranslator import KimiTranslatorclass MainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)self.dir JPEGImagesself.searcher solutions.VisualAISearch(dataself.dir)# 填写 Kimi 的 API KeyAPI_KEY # 在这里替换为你的 API Key# 创建翻译器实例self.translator KimiTranslator(API_KEY)# 初始化文件路径self.file_path None# 连接按钮信号假设 UI 中的对象名如果不同请调整self.btnSelectImage.clicked.connect(self.selectImage) # 选择图像按钮self.btnTextSearch.clicked.connect(self.searchText2Pic) # 以文搜图按钮self.btnImageSearch.clicked.connect(self.searchPic2Pic) # 以图搜图按钮def updateImage(self, path, qlabel):image self.cv_imread(path)if image is not None:rgb_image cv2.cvtColor(image, cv2.COLOR_BGR2RGB)rows, cols, channels rgb_image.shapebytesPerLine channels * colsQImg QImage(rgb_image.data, cols, rows, bytesPerLine, QImage.Format_RGB888)qlabel.setPixmap(QPixmap.fromImage(QImg).scaled(qlabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))def selectImage(self):file_path, _ QtWidgets.QFileDialog.getOpenFileName(self, Select an Image, , Image Files (*.jpg *.jpeg *.png))if file_path:self.file_path file_pathself.updateImage(self.file_path, self.queryImagePreview)def cv_imread(self, path):cv_img cv2.imdecode(np.fromfile(path, dtypenp.uint8), -1)return cv_imgdef searchText2Pic(self):query_text self.textQueryEdit.toPlainText().strip()if not query_text:QtWidgets.QMessageBox.warning(self, 提示, 输入文本不能为空)returntranslated self.translator.translate(query_text)results self.searcher.search_text(translated)self.updateResults(results)def searchPic2Pic(self):if not self.file_path:QtWidgets.QMessageBox.warning(self, 提示, 请选择图像)returnresults self.searcher.search_image(self.file_path)self.updateResults(results)def updateResults(self, results):image_paths []similarities []for image_path, similarity in results[:8]:if hasattr(image_path, __str__):image_path str(image_path)# 拼接完整路径full_path os.path.join(self.dir, image_path)image_paths.append(full_path)similarities.append(round(similarity, 4))# 更新图像和相似度处理少于8个结果的情况for i in range(8):label getattr(self, fimage_{i1})sim_label getattr(self, fsimilarity_{i1})if i len(image_paths):self.updateImage(image_paths[i], label)sim_label.setText(相似度 str(similarities[i]))else:label.clear()sim_label.setText()if __name__ __main__:app QApplication(sys.argv)window MainWindow()window.show()sys.exit(app.exec_())依赖PyQt5、opencv-python、ultralytics、requests。图像目录“JPEGImages”需预置图像。使用效果演示文本检索示例“一个人抱着一只狗”——包含人与狗的语义图像。一个人抱着一只狗