个体图片库(Linchong)运维相关流程
那官人生的豹头环眼,燕颔虎须,八尺长短身材,三十四五年纪,口里道:“这个师父,端的非凡,使的好器械!”
说明
此处记录一些个体库的运维流程,由于个体库为内部工具,用户端使用、更新流程请参考内部文档中的「数据处理指南」。
Photoprism 更新
Linchong 基于 latest stable 版本的 Photoprism,docker compose pull
后重启服务即可。
历史个体信息导入
提取个体图片及信息
由于历史个体信息使用 powperpoint 文档存储,需先 deserialize 提取个体图片及信息。提取使用individual_pptxtract 脚本进行,需确认脚本中物种名后运行
python ./individual_pptxtract.py --location 昂赛 ~/Downloads/CL_上传.pptx ~/Pictures/昂赛金钱豹
maze 服务器文件存储结构
maze 服务器的 photoprism/originals
路径由 /mnt/data/Pictures
挂载,路径结构如下:
数据预处理
批量更新图片时间
为方便排序,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
,示例如下
批量 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 文件中导出个体信息。
个体信息
个体库信息已改用在线表格进行记录,新增个体时于在线表格增加条目,linchong 仅作图片库使用,故导出的文件中仅历史个体有完整的个体信息
数据备份
SQL 备份
数据文件备份
备份 /mnt/data/Pictures
和 /mnt/data/Photoprism