跳转至

个体图片库(Linchong)运维相关流程

那官人生的豹头环眼,燕颔虎须,八尺长短身材,三十四五年纪,口里道:“这个师父,端的非凡,使的好器械!”

说明

此处记录一些个体库的运维流程,由于个体库为内部工具,用户端使用、更新流程请参考内部文档中的「数据处理指南」。

Photoprism 更新

Linchong 基于 latest stable 版本的 Photoprismdocker compose pull 后重启服务即可。

历史个体信息导入

提取个体图片及信息

由于历史个体信息使用 powperpoint 文档存储,需先 deserialize 提取个体图片及信息。提取使用individual_pptxtract 脚本进行,需确认脚本中物种名后运行

python ./individual_pptxtract.py --location 昂赛 ~/Downloads/CL_上传.pptx ~/Pictures/昂赛金钱豹

maze 服务器文件存储结构

maze 服务器的 photoprism/originals 路径由 /mnt/data/Pictures 挂载,路径结构如下:

- Pictures
    - <地区名>
        - <地区名>-<个体标签>-<图片编号>-<图片分类>.jpg

数据预处理

批量更新图片时间

为方便排序,Linchong 个体库中的照片时间被设计成该个体的最近捕获时间。我们采用 xmp 文件的方式更新 photoprism 数据库中图片的 metadata。使用linchong_preprocess 脚本由 tags.csv 分析出个体的最近捕获时间,批量生成 xmp 后在个体库进行 index (或网页界面 rescan)即可。分析过程同时会输出最近、初次捕获时间表,可用于更新在线个体表。

python ./pusilla/linchong_preprocess.py --tags-csv ~/Documents/linchong_time_patch/diqing_sn_tags.csv --image-dir ~/Documents/linchong_time_patch/mnt/data/Pictures time_update

Metadata 被手动更新时,无法通过 sidecar 更新

由于优先级设计,人工编辑时间的优先级高于 xmp 文件,故应尽量避免手动修改时间。对于已被修改时间的媒体,若需要通过 xmp 更新时间,则需在数据库中更改 taken_src,示例如下

USE photoprism;
UPDATE photos
SET taken_src = ""
WHERE taken_src = "manual";

批量 favorite

个体图片库中,使用 favorite 标注默认照片,历史数据可先批量 favorite 后导入图片库以方便编辑。使用linchong_preprocess 脚本批量生成 xmp 后在个体库进行 index 即可。

python ./linchong_preprocess.py --image-dir /mnt/data/Pictures/昂赛 favorite

对初次入库的图片,可使用 time_init 子命令同时完成 favorite 标注和最近捕获时间的初始化。

批量移除 xmp 文件

index 后建议移除 sidecar,同样使用 linchong_preprocess 脚本

python ./linchong_preprocess.py --image-dir /mnt/data/Pictures/昂赛 rmxmp

捕获位点统计

使用linchong_preprocess 脚本find_deployments子命令可对 tags.csv 中的个体出现位点进行统计,输出结果可用于更新在线个体表。

python ./pusilla/linchong_preprocess.py --tags-csv ~/Documents/linchong_time_patch/diqing_sn_tags.csv find_deployments

个体信息导出

清理历史文件

由于从 sidecar 中导出个体信息,需先对库中照片重新索引并删除已被移除图片的 sidecar 文件,docker compose exec photoprism photoprism index --cleanup

个体信息表

可使用 linchong_individual_extract 脚本从 photoprism 的 sidecar 文件中导出个体信息。

python ./linchong_individual_extract.py /mnt/data/Photoprism/sidecar ~/linchong_individuals.csv
python ./linchong_individual_extract.py --favorite-only /mnt/data/Photoprism/sidecar ~/linchong_favorite_individuals.csv

个体信息

个体库信息已改用在线表格进行记录,新增个体时于在线表格增加条目,linchong 仅作图片库使用,故导出的文件中仅历史个体有完整的个体信息

数据备份

SQL 备份

docker compose exec photoprism photoprism backup -i -f

数据文件备份

备份 /mnt/data/Pictures/mnt/data/Photoprism