本次task主要是配置跨模态实践项目所需的环境,完成项目依赖的安装,实现本地HTML文档启动项目。
基于windows10,共尝试了两种配置方式:基于wsl配置,和使用docker配置。目前docker配置可以正常运行,基于wsl的配置存在部分无法运行。【新增】根据其他学习者提供的debug方法,当前基于wsl的配置已经可以运行(2022/11/15)。
使用成功的配置,导入视频尝试了项目的运行效果。
本次组队学习学习的是 VCED: Video Clip Extraction by description 跨模态神经搜索实践项目,项目github主页。
VCED 可以通过你的文字描述来自动识别视频中相符合的片段进行视频剪辑。该项目基于跨模态搜索与向量检索技术搭建,通过前后端分离的模式,帮助你快速的接触新一代搜索技术。
本次task主要是项目所需的环境,完成项目依赖的安装,实现本地HTML文档启动项目。
配置基本基于教程所提供的文档。
本文记录本人的安装踩坑记,基于windows10。
由于VCED项目所依赖的Jina仅支持Linux和MacOS系统,若想在windows系统中本地运行需要通过合适方式构建linux环境。
此次共尝试了两种配置方式:本地基于wsl配置,和使用远程容器docker配置。
目前docker配置可以正常运行,基于wsl的配置存在部分无法运行。【新增】根据其他学习者提供的debug方法,当前基于wsl的配置已经可以运行(2022/11/15)。
wsl即Windows Subsystem for Linux,可为windows系统提供一个linux运行环境,参照官方文档(使用 WSL 在 Windows 上安装 Linux)的安装方式即可。
此处使用默认的Ubuntu系统版本,以管理员模式运行 windows powershell,输入
wsl --install
运行截图如下
重启计算机即可成功安装Ubuntu。
Ubuntu成功安装后可以在开始菜单栏看见对应的快捷方式。运行即可,首次打开会要求创建用户并输入密码,用户名应为小写。
创建python 3.9环境,输入
$ sudo apt update
$ sudo apt install python3.9
此处,我多余运行了如下命令,导致python版本退回了3.8。
$ sudo apt install python3-pip
安装rust,输入
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
选择default安装
安装成功效果如下图所示
安装ffmpeg,首先确认软件源状态
$ sudo apt-get update
然后运行安装命令,并根据提示输入y
$ sudo apt-get install ffmpeg
安装结束效果如图
使用pip安装,安装过程访问GitHub,需要保证网络环境
$ pip install git+https://github.com/openai/CLIP.git
安装过程会安装torch和torchvision,在我的实践中其安装版本与后续service环境配置有冲突,故CLIP的安装这一步可挪到service环境配置后进行。
在clone好的项目下启动wsl环境,此处我使用vscode结合插件WSL完成此步。
首先定位到server文件夹
$ cd code/service
安装相关依赖
$ pip install -r requirements.txt
可切换清华源加速安装过程,即运行
$ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
其中如果遇到torch安装缓慢的问题,不妨先用豆瓣源把torch安装上,再回到requirements的安装。(亲测豆瓣源超级快)
$ pip install torch==1.11.0 -i https://pypi.douban.com/simple
类似地,定位到web文件夹,安装依赖即可
$ cd ../web
$ pip install -r requirements.txt
在根目录下,定位大server文件夹,启动服务端
$ cd code/service
$ python app.py
此处我出现了报错,与issue #39 一致,推测可能是python版本原因。
根据其他学习者提供的debug方法,定位至code/service/customIndexer/executor.py
文件。
出现问题的原因是python3.8与python3.9语言特性的不同。具体为:python3.9所支持的函数变量类型定义描述方式:dict[list]
及list[int]
在python3.8中不被支持。
定位至文件对应段落,删去此函数变量类型定义,文件中共计两处。
def getNextMaxItem(self, result: list, ignore_range):#ignore_range: dict[list]
...
def getRange(self, maxItem, result: list, thod = 0.1, ignore_range = None):#ignore_range: list[int] = None
...
随后可以正常启动服务端。
在根目录下,定位到web文件夹,启动前端。
$ cd code/web
$ streamlit run app.py
可以成功运行。
前端使用的是streamlit搭建,可以通过localhost:8501访问。
windows系统使用docker desktop会比较简洁,参考官网的安装说明即可,由于在此次项目先前已经安装过了,此处无截图。
在clone好的项目的根目录下,使用powershell启动docker
docker-compose build
docker-compose up -d
在项目的docker配置中,默认使用的是清华源进行python依赖环境的安装,同样可能会遇到torch安装速度慢的问题,此处我提前修改了code
文件夹下的Dockerfile
文件,将torch单独用豆瓣源进行安装。
配置成功后如下图所示。
在docker desktop中可以看到配置好的vced容器
运行vced容器,需要稍微等一会会儿,等到显示web启动完成。
通过port可以进入项目
尝试输入了一段6分钟的体育比赛颁奖视频,寻找4个微笑瞬间。
输出了四段10秒钟的视频,效果蛮好的~