久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

基于 Serverless 的人工智能相冊(cè)小程序是怎樣實(shí)現(xiàn)的

共計(jì) 6188 個(gè)字符,預(yù)計(jì)需要花費(fèi) 16 分鐘才能閱讀完成。

這期內(nèi)容當(dāng)中丸趣 TV 小編將會(huì)給大家?guī)?lái)有關(guān)基于 Serverless 的人工智能相冊(cè)小程序是怎樣實(shí)現(xiàn)的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

日常生活中,我們常常會(huì)想要「搜索照片」。每當(dāng)尋找很久遠(yuǎn)的照片時(shí),記憶模糊,檢索照片時(shí)只能想起大致的時(shí)間,然后一張張查看。這樣不僅效率低下,還經(jīng)常會(huì)漏掉我們想找的照片。

近幾年微信小程序發(fā)展迅速,如果有這么一款軟件,我們只需要用文字簡(jiǎn)單描述,就能實(shí)現(xiàn)圖片的快速檢索,豈不是很棒!

本項(xiàng)目將以小程序?yàn)槔?,?Serverless 架構(gòu)上進(jìn)行開(kāi)發(fā)。該小程序在保留相冊(cè)基礎(chǔ)功能(新建相冊(cè)、刪除相冊(cè)、上傳圖片、查看圖片、刪除圖片)上,增加人工智能搜索 —— 即用戶上傳圖片之后,基于 Image Caption 技術(shù),自動(dòng)對(duì)圖片進(jìn)行描述,實(shí)現(xiàn) Image to Text 的過(guò)程。這樣,當(dāng)用戶進(jìn)行搜索時(shí),通過(guò)文本間的相似度,就可以返回最貼近的圖片。

基礎(chǔ)設(shè)計(jì)

該項(xiàng)目設(shè)計(jì)主要擁有登錄、相冊(cè)、圖片上傳和預(yù)覽功能,以及搜索功能。如圖所示:

注冊(cè)功能的主要作用是:通過(guò)獲取用戶的唯一 id(微信中的 OpenId),來(lái)將用戶信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,之后的所有操作,都需要以該 id 作為區(qū)分;

相冊(cè)功能主要包括相冊(cè)的增刪查改等功能;

圖片功能包括圖片上傳、刪除和查看;

搜索功能主要是可以查看指定標(biāo)簽對(duì)應(yīng)的圖片列表,以及指定搜索內(nèi)容對(duì)應(yīng)的列表。

當(dāng)然這四個(gè)主要功能和模塊是和前端關(guān)系緊密的部分,除此之外還有后端異步操作的兩個(gè)模塊,分別是圖像壓縮和圖像描述功能。

1. 注冊(cè)功能:

注冊(cè)功能是用戶點(diǎn)擊注冊(cè)賬號(hào)之后,執(zhí)行的動(dòng)作。

該動(dòng)作需要注意,注冊(cè)之前需先判斷用戶是否已經(jīng)注冊(cè)過(guò)。如果已注冊(cè)則默認(rèn)登陸,否則進(jìn)行注冊(cè)并登陸。當(dāng)用戶不想注冊(cè)時(shí),可以點(diǎn)擊體驗(yàn)程序,對(duì)程序大部分頁(yè)面進(jìn)行預(yù)覽。但是不能實(shí)現(xiàn)有關(guān)數(shù)據(jù)庫(kù)的增刪改查。登錄功能頁(yè)面如圖所示:

2. 相冊(cè)功能:

當(dāng)用戶注冊(cè)登錄之后,可以在相冊(cè)管理頁(yè)面進(jìn)行相冊(cè)相關(guān)的管理,包括編輯、刪除和新建。在進(jìn)行添加和修改的時(shí)候,需要注意相冊(cè)名稱是否已經(jīng)存在;在進(jìn)行刪除、修改相冊(cè)等操作時(shí)要判斷用戶是否有操作該相冊(cè)的權(quán)限等。相冊(cè)功能原型如圖所示:

3. 圖片功能:

圖片功能主要包括圖片列表以及圖片獲取、上傳和刪除。在圖片獲取與刪除的過(guò)程中,要對(duì)用戶是否有該項(xiàng)操作的權(quán)限進(jìn)行判斷,上傳時(shí)也要判斷是否有上傳到指定相冊(cè)的權(quán)限。圖片功能相關(guān)原型圖如所示。

圖片功能部分除了用戶側(cè)可見(jiàn)的功能,還有定時(shí)任務(wù)。當(dāng)用戶上傳圖片之后,系統(tǒng)會(huì)在后臺(tái)異步進(jìn)行圖像壓縮、圖像描述和關(guān)鍵詞提取等。整體流程如圖所示。

4. 搜索功能:

搜索功能指的是通過(guò)關(guān)鍵詞或使用者的描述,得到目標(biāo)數(shù)據(jù)的過(guò)程。這一功能原型圖如圖所示。

這一部分的難點(diǎn)在于通過(guò)用戶的描述,搜索到目標(biāo)數(shù)據(jù)的過(guò)程。這個(gè)過(guò)程的基本流程如圖所示。

項(xiàng)目開(kāi)發(fā) 1. 數(shù)據(jù)庫(kù)建立

數(shù)據(jù)庫(kù)部分主要對(duì)相關(guān)的表和表之間的關(guān)系進(jìn)行建立。首先需要?jiǎng)?chuàng)建項(xiàng)目所必須的表:

CREATE DATABASE `album`;
CREATE TABLE `album`.`tags` ( `tid` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , `remark` TEXT NULL , PRIMARY KEY (`tid`)) ENGINE = InnoDB;
CREATE TABLE `album`.`category` ( `cid` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , `sorted` INT NOT NULL DEFAULT  1  , `user` INT NOT NULL , `remark` TEXT NULL , `publish` DATE NOT NULL , `area` VARCHAR(255) NULL , PRIMARY KEY (`cid`)) ENGINE = InnoDB;
CREATE TABLE `album`.`users` ( `uid` INT NOT NULL AUTO_INCREMENT , `nickname` TEXT NOT NULL , `wechat` VARCHAR(255) NOT NULL , `remark` TEXT NULL , PRIMARY KEY (`uid`)) ENGINE = InnoDB;
CREATE TABLE `album`.`photo` ( `pid` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , `small` VARCHAR(255) NOT NULL , `large` VARCHAR(255) NOT NULL , `category` INT NOT NULL , `tags` VARCHAR(255) NULL , `remark` TEXT NULL , `creattime` DATE NOT NULL , `creatarea` VARCHAR(255) NOT NULL , `user` INT NOT NULL , PRIMARY KEY (`pid`)) ENGINE = InnoDB;
CREATE TABLE `album`.`photo_tags` ( `ptid` INT NOT NULL AUTO_INCREMENT , `tag` INT NOT NULL , `photo` INT NOT NULL , `remark` INT NULL , PRIMARY KEY (`ptid`)) ENGINE = InnoDB;

創(chuàng)建之后,逐步添加表之間的關(guān)系以及部分限制條件:

ALTER TABLE `photo_tags` ADD CONSTRAINT `photo_tags_tags_alter` FOREIGN KEY (`tag`) REFERENCES `tags`(`tid`) ON DELETE CASCADE ON UPDATE RESTRICT; 
ALTER TABLE `photo_tags` ADD CONSTRAINT `photo_tags_photo_alter` FOREIGN KEY (`photo`) REFERENCES `photo`(`pid`) ON DELETE CASCADE ON UPDATE RESTRICT;
ALTER TABLE `photo` ADD CONSTRAINT `photo_category_alter` FOREIGN KEY (`category`) REFERENCES `category`(`cid`) ON DELETE CASCADE ON UPDATE RESTRICT;
ALTER TABLE `photo` ADD CONSTRAINT `photo_user_alter` FOREIGN KEY (`user`) REFERENCES `users`(`uid`) ON DELETE CASCADE ON UPDATE RESTRICT;
ALTER TABLE `category` ADD CONSTRAINT `category_user_alter` FOREIGN KEY (`user`) REFERENCES `users`(`uid`) ON DELETE CASCADE ON UPDATE RESTRICT;
ALTER TABLE `tags` ADD unique(`name`);

2. 讓 Code 飛起來(lái)

在使用之前您需要有一個(gè)騰訊云的賬號(hào),并且開(kāi)通了 SCF、COS、APIGW 以及 CDB 等相關(guān)產(chǎn)品權(quán)限;

將項(xiàng)目 clone 到本地,配置自己的密鑰信息、數(shù)據(jù)庫(kù)信息。配置文件在 cloudFunction 目錄下的 serverless.yaml 中:

#  函數(shù)們的整體配置信息
Conf:
 component:  serverless-global 
 inputs:
 region: ap-shanghai
 runtime: Python3.6
 handler: index.main_handler
 include_common: ./common
 mysql_host: gz-c************************.com
 mysql_user: root
 mysql_password: S************************!
 mysql_port: 6************************0
 mysql_db: album
 mini_program_app_id: asdsa************************dddd
 mini_program_app_secret: fd340c4************************8744ee
 tencent_secret_id: AKID1y************************l1q0kK
 tencent_secret_key: cCoJ************************FZj5Oa
 tencent_appid: 1256773370
 cos_bucket:  album-1256773370 
 domain: album.0duzahn.com

由于我目前使用的是 Serverless Components,沒(méi)有全局變量等。所以在此處增加了全局變量組件,在這里設(shè)置好全局變量,在之后的 Components 中可以直接引用,例如:

#  創(chuàng)建存儲(chǔ)桶
CosBucket:
 component:  @serverless/tencent-website 
 inputs:
 code:
 src: ./cos
 region: ${Conf.region}
 bucketName: ${Conf.cos_bucket}

安裝必備工具:Serverless Framework、小程序云開(kāi)發(fā) IDE。由于本項(xiàng)目后臺(tái)開(kāi)發(fā)語(yǔ)言是 Python,您也需要一些 Python 的開(kāi)發(fā)工具以及包管理工具(Python 版本不低于 3.6)

在部分文件夾下安裝相對(duì)應(yīng)的依賴:

cloudFunction/album/prdiction 需要安裝 Pillow, opencv, tensorflow, jieba

cloudFunction/album/getPhotoSearch 需要安裝 gensim, jieba 以及 collections

cloudFunction/album/compression 需要安裝 Pillow

(注意,在安裝的時(shí)候一定要用 CentOS 操作系統(tǒng)。如果沒(méi)相對(duì)應(yīng)系統(tǒng),可以在這里打包對(duì)應(yīng)的依賴:http://serverless.0duzhan.com/app/scf_python_package_download/)

將項(xiàng)目部署到云端,只需要通過(guò)指令 serverless –debug 即可:

DEBUG ─ Resolving the template s static variables.
 DEBUG ─ Collecting components from the template.
 DEBUG ─ Downloading any NPM components found in the template.
 DEBUG ─ Analyzing the template s components dependencies.
 DEBUG ─ Creating the template s components graph.
 DEBUG ─ Syncing template state.
 DEBUG ─ Executing the template s components graph.
 DEBUG ─ Starting API-Gateway deployment with name APIService in the ap-shanghai region
 
 ... ...
 
 DEBUG ─ Updating configure... 
 DEBUG ─ Created function Album_Get_Photo_Search successful
 DEBUG ─ Setting tags for function Album_Get_Photo_Search
 DEBUG ─ Creating trigger for function Album_Get_Photo_Search
 DEBUG ─ Deployed function Album_Get_Photo_Search successful
 DEBUG ─ Uploaded package successful /Users/dfounderliu/Documents/code/AIAlbum/.serverless/Album_Prediction.zip
 DEBUG ─ Creating function Album_Prediction
 DEBUG ─ Updating code... 
 DEBUG ─ Updating configure... 
 DEBUG ─ Created function Album_Prediction successful
 DEBUG ─ Setting tags for function Album_Prediction
 DEBUG ─ Creating trigger for function Album_Prediction
 DEBUG ─ Trigger timer: timer not changed
 DEBUG ─ Deployed function Album_Prediction successful
 Conf: 
 region: ap-shanghai
 
 ... ...
 
 - 
 path: /photo/delete
 method: ANY
 apiId: api-g9u6r9wq
 - 
 path: /album/delete
 method: ANY
 apiId: api-b4c4xrq8
 - 
 path: /album/add
 method: ANY
 apiId: api-ml6q5koy
 156s ? APIService ? done

這個(gè)過(guò)程,只用了 156s 便部署了所有函數(shù)。然后打開(kāi)小程序的 id 帶入 miniProgram 目錄,并且填寫(xiě)自己的 appid 在文件 project.config.json 的第 17 行,同時(shí)也要配置自己項(xiàng)目的基礎(chǔ)目錄,就是 API 網(wǎng)關(guān)給我們返回的地址,寫(xiě)在 app.js 的第 10 行,此時(shí)項(xiàng)目就可以運(yùn)行起來(lái)了。

上述就是丸趣 TV 小編為大家分享的基于 Serverless 的人工智能相冊(cè)小程序是怎樣實(shí)現(xiàn)的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)6188字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 宿州市| 阳曲县| 塘沽区| 秦皇岛市| 顺义区| 龙江县| 汤阴县| 江永县| 海宁市| 金山区| 溧阳市| 疏勒县| 丰顺县| 绍兴县| 宁陕县| 威海市| 大理市| 通化县| 澄城县| 樟树市| 云南省| 萍乡市| 饶平县| 房产| 铅山县| 鹿邑县| 平舆县| 南平市| 陆川县| 江北区| 罗江县| 佛坪县| 云南省| 金门县| 托克托县| 兴安盟| 凯里市| 嘉荫县| 伊金霍洛旗| 西昌市| 虞城县|