MoreRSS

site iconTjSky | 秋风于渭水修改

90后。编程爱好者。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

TjSky | 秋风于渭水的 RSS 预览

WIN11更新后,C盘下莫名多出的神秘空文件夹inetpub不是BUG,不要删

2025-04-17 10:05:18

微软明确说明 Windows 11用户在安装4月累积更新(KB5055523)后,不能删除系统创建的“inetpub”文件夹!!如果已经删了,需要按步骤恢复这个“inetpub”文件夹,以提高系统安全性。


最近很多人在安装微软发布的 Windows 11 4月累积更新(KB5055523)后,发现系统C盘根目录下神秘出现了一个名为 “inetpub” 的空文件夹。当时大家一致认为这又是伟大的阿三程序员写出新bug了。

“inetpub” 文件夹通常是微软 Internet 信息服务 (IIS) 创建的,IIS 是微软推出的 Web 服务器软件,用于在Windows 11上托管网站或应用程序,一般情况下只有在启用 IIS 后根目录才会出现 “inetpub” 文件夹,但在此次更新中,即使用户未启用 IIS 该文件夹也会自动创建。看起来十分不正常,于是大家都认为这是个 bug。

于是很多科技博主都表示 “这个 “inetpub” 文件夹可以删除,本身这个文件夹也是空的,测试删除后不会对系统造成任何负面影响”,我也受不了C盘有个陌生文件夹,就给删了,结果尴尬了……

但其实这个操作是为了修复漏洞“CVE-2025-21204”的,估计微软没想到大家会如此在意系统根目录出现陌生文件夹,在更新日志中压根没提到会有这个操作,考虑到用户删除“inetpub”后会影响系统安全,微软最近又更新日志添加了这个文件夹的说明

注意:直接手动重建这个文件夹对修复漏洞“CVE-2025-21204”是没有作用的!需要按正确步骤恢复

恢复方式一:
1. 点开开始菜单
2. 在搜索框里搜索开启或关闭 Windows 功能并打开
3. 勾选 IIS 服务 (Internet Information Services) 并点击确定
4. 等待 1、2 分钟 IIS 服务会完成安装,此时会自动创建“inetpub”文件夹
5. 随后关闭 IIS 服务

恢复方式二(微软的推荐做法):
1. 设置 → Windows更新 → 更新历史记录
2. 拉到底,选「卸载更新」
3. 找到 「用于Microsoft Windows的安全更新(KB5055523)」,点击卸载,等待卸载完毕后,重启电脑
4. 重启后,再次检查系统更新,并重新安装「适用于 Windows 11 Version 24H2 的 04 累积更新,适合基于 x64 的系统 (KB5055523)」即可自动恢复“inetpub”文件夹。

The post WIN11更新后,C盘下莫名多出的神秘空文件夹inetpub不是BUG,不要删 appeared first on 秋风于渭水.

Claw Cloud Run 免费容器来了,无需信用卡,Github账号满180天,终身每月送5$

2025-04-16 15:20:54

Claw Cloud Run是 Claw Cloud 旗下的轻应用平台,你可以理解成 Vercel、Netlify 之类的东西,既是 PaaS 平台,也有 Serverless 服务,还能跑类 Docker 项目(不是直接用 Docker 跑的,是自动适配,用 Serverless 形式跑的),可以快速部署 Alist、Rsshub、Memos、Uptime Kuma、Chatgpt-next-web等程序。甚至可以用来跑 Minecraft 游戏服务器,注册即送 5 刀额度,如果绑定一个注册超过180天的 Github 账号可以永久享受每月5美元的额度。每个可用区有4H 8G 10G 资源,一共 10 GB 流量。


有白嫖自然是很开心的嘛,虽然Vercel也挺好用的,但是Claw Cloud Run还有免费的数据库可用,跑一些个人项目会更加方便一点,最主要是,新加坡区和日本区到国内的速度相当不错:

注册页链接 (有AFF)

如果不想走我的AFF的话,自己谷歌一下「Claw Cloud Run」就能找到官网了。

使用注册超过180天的github账号登录的话,可以享受每月5刀的赠送,不需要信用卡。
如果没有的话,则只会赠送一次5刀的额度。

注意:每月送的5刀的账户,还是免费计划而不是爱好计划。送你的5刀是让你抵扣使用费用的。
根据页面上的预计费用,Alist 每天0.04刀,WordPress 每天0.06刀,通过适当自行缩小容器配置,算下来每个月免费部署4、5个自用项目还是没问题。

如何缩小容器配置

默认他一个项目最小给1H1G,对于有些小项目,实在太奢侈了,适当改小可以有效降低部署费用。
我有个给贴吧自动签到的脚本,这玩意本地跑才占用几M好不,所以我只给了0.1核64M内存。每天仅需1分钱(其实用不到的,只是因为显示上最小差值是 0.01元)。

  1. 进入应用列表
  2. 点进需要修改的项目
  3. 左上角有个「Update」,点进去
  4. 愉快的把CPU和内存改小就好了。

PS: Claw Cloud(阿爪云,又名阿里云青春版)小道消息称,这是阿里云在新加坡开的马甲(因为他们基础设施都是用的阿里云的)。不过也有一种可能是基于阿里云的二道贩子在蹭热度,这在云服务提供商中也并不少见。

The post Claw Cloud Run 免费容器来了,无需信用卡,Github账号满180天,终身每月送5$ appeared first on 秋风于渭水.

谷歌这是在干啥?强制给我开个广告拦截收入挽回?

2025-03-23 11:47:56

我也没开广告拦截收入挽回啊,谷歌就偷偷通过扩展静默注入广告拦截收入挽回代码了?
我对大家拦截站内广告的态度是:不喜欢看那就拦截掉,不想看广告是用户的权利。

开始我还以为谷歌这是广告营收下滑了,着急了。
结果去查了一下。啥,营收反而涨了?
哦,不会就是靠这种方式涨的吧

随后我再仔细一看,好嘛
反反广告拦截收入挽回也被自动注入了
去广告拦截器拦截了广告拦截收入挽回会被检测

但问题是,我压根就没开这个功能,adsense 内这个选项也是关闭状态,这完全是谷歌自作主张自行强制加入的。

从“不作恶”到“做正确的事”
从“技术导向”到“资本导向”
谷歌公司正在向下一个波音公司一路狂奔……

The post 谷歌这是在干啥?强制给我开个广告拦截收入挽回? appeared first on 秋风于渭水.

如何快速批量检索损坏的图片文件—python开发学习笔记(一)

2025-03-19 20:20:36

为了解决几十万量级图片库内异常图片的检测,折腾出了一个基于 python 的图片检测程序。


一、混乱的图片仓库

用前一段发现的本地 AI 图片视频搜索引擎 MaterialSearch 整理十几年间积累的几十万张图片时,遇到了一个令人崩溃的场景:有上百张图片报损坏,经过部分核查,很多文件打开后呈现诡异色块,亦或者只有半截图,还有些文件大小为 0 KB。这些损坏的图片零散的散布在数千个子文件夹中,手动一个一个检查无异于大海捞针,累死也搞不定。于是 VS code 启动!!


二、初版方案

用 Pillow 暴力验证,直接用 Pillow verify()看看是否报错来解决。

代码V1.0方案(基础检测逻辑)

from PIL import Image

def check_img_v1(path):
    try:
        Image.open(path).verify()
        return True
    except:
        return False

V1.0方案的情况
1. 误报文件:很多图片会报损坏,但是用图片浏览器打开却十分正常,经过研究之后才知道,原来大量网站在使用一种叫做渐进式JPEG的技术,通过将图像数据分为多个扫描逐层渲染,可以在网速不好时图片先绘制出低分辨率的模糊轮廓,随着数据被下载逐步变为清晰图像(现代图片编码如WEBP、AVIF也都有类似的渐进式加载机制)。这导致需要完整解码才能验证所有扫描数据。因此被verify()误认为损坏。
2. 漏检文件:未完整下载的图片有时也能通过验证。
3. 性能问题:慢,按照测试计算,10万张图片的检测起码需要耗时4、5小时了。


三、改进方案

经过对 MaterialSearch 日志报错图片的抽查,发现损坏的文件主要是文件不完整导致的半截图,于是我打算改为:先检查文件结尾是否存在结束符来判定图片是否损坏,然后再做进一步检查。

代码V2.0(尾部校验部分代码)

def check_img_v2(path):
    with open(path, 'rb') as f:
        f.seek(-32, 2) #只用获取文件最后32字节就行
        trailer = f.read()
        if path.lower().endswith('.jpg'):
            return trailer.endswith(b'\xff\xd9')  # JPEG的结束符
        elif path.lower().endswith('.png'):
            return trailer.endswith(b'\xaeB`\x82')  # PNG的IEND块

V2.0方案的情况
1. 捕获到了异常文件 :下载一半的文件确实被检测出来了。
2. 检测了个寂寞 :如果图片附加了元数据,图片文件很可能就不是以\xff\xd9结尾了,结果就是1000张的测试图片,在尾部检测部分逻辑,有800多张都报了损坏……想快速检查了个寂寞。


四、再次优化

使用img.load() 强制加载所有数据。对渐进式jpeg图片做特殊处理逻辑。

代码V3.0(验证部分的修改)

def check_img_v3(path):
    try:
        with open(path, 'rb') as f:  
            img = Image.open(f)
            img.load()  # 强制加载完整图片

            # 特殊处理渐进式JPEG
            if img.format == 'JPEG' and 'progressive' in img.info:
                img.tile = []  

            return True
    except Exception as e:
        print(f"损坏文件: {path} | 错误类型: {type(e).__name__}")
        return False

V3.0方案的情况
1. 漏报率下降了很多
2. 渐进式JPEG兼容处理
3. 打印异常类型方便处理
4. 实际代码中自己傻逼了在verify()之后调用load(),导致文件指针不可用,说人话就是:代码逻辑中verify()做完检查后,就把图片文件关闭了,load()啥也获取不到。
5. 性能就很一般了,基本和初版差不多的速度。


五、终局之战

又经过一番研究和查证其实 Pillow verify()对渐进式图片检测是没问题的,误报率并没有我在V1测试时那么高,只是我本地环境的 Pillow 版本不够新而已,但也确实会有漏报。只用load()也会有漏报,有一点误报可以接受,但是漏报就无法接受了,所以还是需要联合检查。

最终决定采用如下逻辑
1. 先检测文件路径是否存在,收集所有路径。
2. img.verify()先上
3. 同一个循环内使用img.load()再来一次检测
4. 并行处理加快处理速度
5. 不在控制台显示扫描 log,毕竟绝大部分图片都是好的,没问题的显示出来无意义,只显示有问题的又很容易看起来像是卡住了,所以用 tqdm 做个进度条。还能大概估计下完成时间。
6. 用 jinja2 做个 html 格式的检测报告,毕竟在终端里复制粘贴起来也不方便。

代码V4.0(完善使用)

实在太长了就放github上了:img_validator.py

命令:python img_validator.py <"目录路径"> [并发数]

ex:python img_validator.py "D:\Download\图片" 8

最终会在脚本的同级目录下生成 html 格式的检测报告image_validation_report.html

  • 路径最好用””框住
  • 并发数可以不填,默认使用CPU全部线程。除非你用非常大的图,不然全线程跑也费不了多少CPU占用。
  • 理论上 10W 张图片在 12 线程下,用时应该半小时都不到,不过实际上受制于仓库盘使用的是 HDD 只能到 20~40files/s,机械硬盘的读出速度跟不上检测速度,特别是到最后20%的时候,速度更是掉到只有个位数了。18W 张图片的文件夹,检测用时接近5个小时,平均速度 ≈ 11 files/s
  • windows 和 unix 系统都可用,代码会自动处理两者的路径差异。

为什么会有这么多图片损坏

自己十年前写的P站抓取代码不完善,如果因为网络超时导致图片下载失败,爬虫会重试,但是之前损坏的图片有可能并不会被正确清除(删除部分代码没有正确处理超长文件名和带特殊符号的文件名),虽然带问题代码只使用了从14年到16年这大约一坤年,但是也积累了接近 600 张问题文件。不过倒是挺奇怪的,抓全年龄的部分出现大量这种问题,抓R18的几乎就没出错过,这是又为什么呢,沉思中…………

The post 如何快速批量检索损坏的图片文件—python开发学习笔记(一) appeared first on 秋风于渭水.

DeepSeek R1 可免费/白嫖网页版一览

2025-03-12 18:06:17

收集自网络,结合自身体验得出,虽然我更多是用的自己的 DeepSeek API,但是 R1 这种思考时,一个不想小心就能想个几千字的玩法,也是有点扛不住,复杂问题还是先找免费的问的差不多了,再用自己的 API 增加体验。毕竟白嫖总是让人开心。


DeepSeek R1 可免费/白嫖网页版一览

序号 平台 速度 版本 是否需要登录 备注
1 官方 满血V3/R1 官方、开箱即用
2 腾讯元宝 满血R1 需登录 联网检索包括微信公众号
3 知乎直答 比较快 满血R1 需登录 联网检索包括知乎内容
4 WPS 灵犀 满血R1 不登录存在功能限制 可以生成PPT
5 国家超算互联网中心 残血R1 最大为70B模型
6 华为小艺ai网页版 满血R1 开箱即用
7 360纳米ai 满血R1 不登录存在功能限制 每天有限免额度
8 秘塔ai 满血R1 每天有限免额度
9 天工ai 满血R1 不登录存在功能限制 文史类资料挺全的
10 当贝ai 满血R1 开箱即用
11 问小白 满血R1 不登录存在功能限制
12 跃问 满血R1 不登录存在功能限制
13 百度 满血R1 开箱即用
14 有道 满血R1 不登录存在功能限制 免费用户存在功能限制
15 Lambda 满血R1 国内不能直连
16 Flowith 比较快 满血R1 不登录存在功能限制 有个人知识库
17 Deepinfra 满血R1 无上传附件图片功能
18 Nvidia 满血R1 无上传附件图片功能

The post DeepSeek R1 可免费/白嫖网页版一览 appeared first on 秋风于渭水.

本地 AI 图片视频搜索引擎——MaterialSearch

2025-02-28 12:06:54

基于 AI 的本地素材搜索引擎。扫描本地的图片以及视频,可以用自然语言进行查找。
实现中文语义下的 以图搜图、截图搜视频、查找本地素材、根据文字描述匹配画面、视频帧搜索、根据画面描述搜索视频。找素材再也不用费力去一个个翻 tag 了。


准备运行环境

首先,默认看本文的照片视频都是存在 windows 系统上的,以下都是基于 win 系统的操作
需要准备3个或2个东西
Python 3.11.7,Git ,CUDA(不是N卡的不用装CUDA),这三个的下载地址在文章的最前边。
视情况,你可能还需要一个魔法上网工具(假设你的魔法上网工具代理在127.0.0.1:6808)

安装 Python 3.11.7 与 pip

我这里采用直接系统内安装Python 3.11.7的方式(其实安装Python3.12.9也是可用的,看你需求了。)
如果你会用Miniconda,也可以用Miniconda实现Python多版本切换。

  1. 访问 Python3.11.7 下载页面
  2. 把页面拉到底,找到【Windows installer (64-bit)】点击下载

  3. 安装是注意,到这一步,需要如下图这样勾选 Add Python to PATH

    然后再点上边的 Install Now
    python

  4. 安装完成后,命令行里输入Python -V,如果返回Python 3.11.7那就是成功安装了。

  5. 命令行里输入 python -m pip install --upgrade pip安装升级pip到最新版。

安装 Git

  1. 访问 Git 下载页面

  2. 点击【Download for Windows】,【64-bit Git for Windows Setup】点击下载

  3. 一路下一步安装

  4. 命令行运行git --version,返回git version 2.XX.0.windows.1就是安装成功了。

安装 CUDA (nvidia显卡用户,AMD 和 Intel 显卡用户请跳过这一步)

  1. 命令行运行nvidia-smi,看下自己显卡支持的 CUDA版本
    (升级显卡驱动可能会让你支持更高版本的 CUDA)

  2. 接下来前往英伟达 CUDA 官网,下载对应版本。
    注意请下载,你对应的版本号最高的版本,比如我的是11.7的,那就下11.7.1(这里最后的.1意思是,11.7版本的1号升级版)

  3. 选你自己的操作系统版本,注意下个离线安装包【exe [local]】,在线安装的话,速度还是比较堪忧的。

正式安装

以下假设你当前文件目录是D:\github\

建立虚拟环境并安装依赖

避免玩其他 Python 项目时出现项目依赖冲突问题

  1. 安装虚拟环境工具(virtualenv)
pip install virtualenv
pip install virtualenvwrapper
# virtualenvwrapper一定要在virtualenv后安装
  1. 创建一个新的虚拟环境:
virtualenv MSWenv

这将在当前目录下创建一个名为”MSWenv”的虚拟环境。

  1. 激活虚拟环境:
D:\github\MSWenv\Scripts\activate

这将激活虚拟环境,并将您的终端提示符更改为虚拟环境名称类似这样

(MSWenv) D:\github> ▏

拉取源码并安装依赖

# 拉取仓库
git clone https://github.com/chn-lee-yumi/MaterialSearch.git

# 进入目录
cd MaterialSearch

# 安装全部依赖(N卡 GPU运行)
pip install -U -r requirements.txt --index-url=https://download.pytorch.org/whl/cu124 --extra-index-url=https://pypi.org/simple/

# 安装全部依赖(A卡、I卡 GPU运行)
pip install -U -r requirements_windows.txt

# 安装全部依赖(CPU运行)
pip install -U -r requirements.txt 

注意:
1. N卡 GPU运行里的cu124 如果你运行环境中的 CUDA 小于 12.4 的话,请写成你实际的版本
2. 如果你这会儿还拿不准用 GPU 还是 CPU 运行的话,请先按照【安装全部依赖(A卡、I卡 GPU运行)】执行,这样安装后也可以支持CPU运行。

  1. 最新的更新中作者引入了 torch-directml 实现兼容AMD 和 Intel 等非 nvida 显卡,这个东西咋说呢,torch-directml是用 DX12 作为中间层,构建了兼容 torch 的 API 接口,多少会有点性能损失,所以N卡用户还是老老实实用torch 2.X+CU12.X

尝试启动

按照以下命令启动项目

python main.py
  • 首次运行会自动下载模型。下载速度可能比较慢,请耐心等待。如果网络不好,模型可能会下载失败,这个时候重新执行程序即可。
  • 如果想使用”下载视频片段”的功能,需要安装ffmpeg。如果是Windows系统,记得把ffmpeg.exe所在目录加入环境变量PATH,可以参考:Bing搜索
  • 如果不知道在你设备上 CPU 和 GPU 那个更快,可以在上边步骤中先走 【安装全部依赖(GPU运行)】,在依赖安装完毕后执行python benchmark.py,运行基准测试。

正式运行MaterialSearch

MaterialSearch 配置设置

建议通过在项目根目录创建.env文件修改配置
.env文件配置示例:

# 下面添加扫描路径,用英文半角逗号分隔
ASSETS_PATH=D:\Videos,D:\Pctures
# 如果路径或文件名包含这些字符串,就跳过,逗号分隔,不区分大小写
IGNORE_STRINGS=thumb,avatar,__MACOSX,icons,cache
# 图片最小宽度,小于此宽度则忽略。不需要可以改成0
IMAGE_MIN_WIDTH=64
# 图片最小高度,小于此高度则忽略。不需要可以改成0。
IMAGE_MIN_HEIGHT=64
# 视频每隔多少秒取一帧,视频展示的时候,间隔小于等于2倍FRAME_INTERVAL的算为同一个素材,同时开始时间和结束时间各延长0.5个FRAME_INTERVAL
FRAME_INTERVAL=2
# 视频搜索出来的片段前后延长时间,单位秒,如果搜索出来的片段不完整,可以调大这个值
VIDEO_EXTENSION_LENGTH=1
# 素材处理批次大小,过大会导致显存不足而无法运行或拖慢速度。
SCAN_PROCESS_BATCH_SIZE=4
# 支持的图片拓展名,逗号分隔,请填小写
IMAGE_EXTENSIONS=.jpg,.jpeg,.png,.gif,.heic,.webp,.bmp
# 支持的视频拓展名,逗号分隔,请填小写
VIDEO_EXTENSIONS=.mp4,.flv,.mov,.mkv,.webm,.avi
# 监听IP,如果想允许远程访问,把这个改成0.0.0.0
HOST=127.0.0.1
# 监听端口
PORT=8085
# 运行模式
DEVICE=cuda
# 使用模型
MODEL_NAME=OFA-Sys/chinese-clip-vit-base-patch16
# 数据库保存位置
SQLALCHEMY_DATABASE_URL=sqlite:///./instance/assets.db
# 是否web页启用登录验证功能,如需启用改为true
ENABLE_LOGIN=False
# 登录用户名
USERNAME=admin
# 登录密码
PASSWORD=123456
# 是否自动扫描设置路径下的文件变化,如果开启,则会在指定时间内进行扫描,每天只会扫描一次
AUTO_SCAN=False
# 自动扫描开始时间
AUTO_SCAN_START_TIME=22:30
# 自动扫描结束时间
AUTO_SCAN_END_TIME=8:00
# 是否启用文件校验(如果是,则通过文件校验来判断文件是否更新,否则通过修改时间判断)
ENABLE_CHECKSUM=False
  • 你发现某些格式的图片或视频没有被扫描到,可以尝试在IMAGE_EXTENSIONSVIDEO_EXTENSIONS增加对应的后缀。
  • 小图片没被扫描到的话,可以调低IMAGE_MIN_WIDTHIMAGE_MIN_HEIGHT重试

  • 运行模式(DEVICE)可以写的选项有auto/cpu/cuda/mps`四种,如果写 auto 的话,优先级是这样的:cuda > mps > directml > cpu

  • 一般来说默认的小模型就够用了,如果你显存大或者感觉小模型的精度不够,可以改成更大的模型
    更换模型需要删库重新扫描!否则搜索会报错。数据库路径见SQLALCHEMY_DATABASE_URL参数。

  • 模型越大,扫描速度越慢,且占用的内存和显存越大。
    如果显存较小且用了较大的模型,并在扫描的时候出现了”CUDA out of memory”,请换成较小的模型或者改小SCAN_PROCESS_BATCH_SIZE。如果显存充足,可以调大上面的SCAN_PROCESS_BATCH_SIZE来提高扫描速度。
    因为目前的N卡驱动,支持了内存显存融合,超过物理显存的模型会被放在内存中,不会直接炸显存,只要你电脑显存+内存还没满,超过物理显存后,只会体现为扫描速度非常的慢,大概会慢3倍左右的速度(比如,设置1线程,扫描用时100秒;设置成4线程,用时反而是300秒,线程越多速度反而越慢)
    所以,一定要确保扫描时电脑留有足够的可用显存,可以启动任务管理器——性能——GPU——专用GPU内存查看实际显存占用。不要让斜杠前的数字过于接近斜杠后的数字(比如:10.7/12GB就是良好配置,而11.8/12GB就不太好了)

    • 4G显存推荐参数:小模型,SCAN_PROCESS_BATCH_SIZE=8
    • 4G显存推荐参数:大模型,SCAN_PROCESS_BATCH_SIZE=2
    • 8G显存推荐参数1:小模型,SCAN_PROCESS_BATCH_SIZE=16
    • 8G显存推荐参数2:大模型,SCAN_PROCESS_BATCH_SIZE=4
    • 超大模型最低显存要求是6G,且SCAN_PROCESS_BATCH_SIZE=1
    • 其余显存大小请自行摸索搭配。
  • 支持的模型列表
    • 中文小模型: OFA-Sys/chinese-clip-vit-base-patch16
    • 中文大模型:OFA-Sys/chinese-clip-vit-large-patch14-336px
    • 中文超大模型:OFA-Sys/chinese-clip-vit-huge-patch14
    • 英文小模型: openai/clip-vit-base-patch16
    • 英文大模型:openai/clip-vit-large-patch14-336

构建 MaterialSearch 一键启动脚本

  1. 目录下新建一个文件myrun.txt
  2. 打开填写以下内容
call D:\github\MSWenv\Scripts\activate
python main.py
pause
  1. 改后缀名为myrun.bat以后启动直接运行这个文件就好了。

  1. 注意不要关闭那个黑乎乎的CMD窗口,不用管那行红字,那只是提示工具的web页是用的Werkzeug运行的,只要你用这个工具库就会有这个提示。
  2. 打开浏览器访问最后提示的http://127.0.0.1:8085

开始使用 MaterialSearch

  1. 第一次使用需要先点击【扫描】按钮让程序本地素材做扫描生成数据库。
  2. 扫描速度,我写本文时用的 GPU 是 N卡 1650 ,大概 1图·1线程/秒。4G显存小模型可以开8线程,1小时理论可以扫2W多张图。视频处理速度大概是图片的三分之一,毕竟多了截取多个视频帧的步骤,默认是2秒一个关键帧,基本就是1小时的视频需要扫描1小时……
  3. 之后就可以用文字搜图,搜视频了,支持自然语言搜索,但描述请一定简单准确,毕竟用的模型参量也没那么大嘛
  4. 扫描图片需要的时间比较长,不过搜起来的速度还是很快的,我尝试在我的CPU:J4150,内存:8GB的 NAS 上部署,匹配阈值为0的情况下,大概1秒可以进行20000次图片匹配,如果提高匹配阈值为10,则大概可以提升到每秒大约35000次图片匹配。
  5. 搜视频时,如果结果中的视频很多且视频体积太大,电脑会卡。毕竟又不是剪辑工作站,一般人电脑那会同时开一堆视频的。所以建议搜索视频时,右侧那个【Top X】不要超过6个。

常见报错

报错 以一种访问权限不允许的方式做了一个访问套接字的尝试

说明默认端口8085已经被占用了,把.env文件中的PORT=8085随便改成一个 1开头的5位数试试。

报错 not enough memory: you tried to allocate 123456789 bytes.

内存不足,显存不足,最简单就是换个更好的电脑吧

报错 AssertionError: Torch not compiled with CUDA enabled

原因是 你试图用N卡的GPU跑,但是你安装的 Torch 不支持 CUDA,是仅支持 CPU 的版本
先执行命令:

python -c "import torch; print(torch.cuda.is_available())"

如果返回的是False,说明安装的 Torch 不支持CUDA,是仅支持CPU的,需要执行了下面的命令安装支持cuda的版本:

pip install torch>=2.0 -f --index-url=https://download.pytorch.org/whl/cu124

The post 本地 AI 图片视频搜索引擎——MaterialSearch appeared first on 秋风于渭水.