代码流程
开发者:xxx 维护:xxx
分割多动物



# %% batch
# step0
# conda activate mmdet
source activate mmdet
vdir=`w2l '\\liying.cibr.ac.cn\Data_Temp\Chenxinfeng\multiview_9\chenxf\00_BehaviorAnalysis-seq2seq\SexMating'`
# 选择当天的小球矫正文件(多相机模型文件),使数据具有3D信息。
ball=`w2l "\\liying.cibr.ac.cn\Data_Temp\Chenxinfeng\multiview_9\chenxf\carl\2023-10-14-\ball_2023-10-23_13-18-10.calibpkl"`
config=/home/liying_lab/chenxinfeng/DATA/CBNetV2/mask_rcnn_r101_fpn_2x_coco_bwrat_816x512_cam9.py
python -m lilab.mmdet_dev_multi.s1_mmdet_videos2segpkl_dilate_toCUDA $vdir --pannels carl --config $config #--maxlen 9000
python -m lilab.mmdet_dev.s3_segpkl_dilate2videoseg_canvas_mask $vdir --maxlen 9000 # check video
# step2 com3d and create voxbox
ls $vdir/*.segpkl | xargs -n 1 -I {} -P 4 python -m lilab.mmdet_dev.s4_segpkl_put_com3d_pro {} --calibpkl "$ball"
# 绘制体素空间的视频(可选,不推荐)
ls $vdir/*.segpkl | sed 's/.segpkl/.mp4/' | xargs -n 1 -P 8 -I {} python -m lilab.mmdet_dev.s4_segpkl_com3d_to_video {} --vox_size 230 # check video
volsize
表示大鼠体素空间的边长,例如 xx_vol230.0.mp4
表示边长为230mm。边长根据大鼠年龄和性别而定,推荐值如下:
Male | Female | |
---|---|---|
DAY35 | 190 | 190 |
DAY50 | 230 | 220 |
DAY75 | 250 | 240 |
DAY成年 | 260 | 240 |
最后得到一系列视频和文件,包括:
xx_mask.mp4
- 分割图像xx_vol230.0.mp4
- voxel 体素空间xx.segpkl
- 分割的Mask 二进制数据
验证:打开 xx_mask.mp4
视频,查看分割是否正确。打开 xx_vol230.0.mp4
视频,查看 voxel 体素尺寸是否匹配。
提示
一次性不要跑太多视频。先跑几个视频试试看。效果佳,则可以接着运行剩下的视频。如果效果不佳,则要更新模型后,再重新跑视频。
错误
如果开 xx_mask.mp4
视频分割效果差,则需要重修分割标注,更新模型。见数据与模型更新章节。如果 xx_vol230.0.mp4
体素方格偏差较大,说明小球矫正的文件有错误,需要从新矫正。
预测关键点

#!/bin/bash
conda activate mmdet
cd /home/liying_lab/chenxinfeng/DATA/dannce/demo/rat14_1280x800x9_mono_young
# 1. 准备数据
volsize_vfiles="
280 280 /mnt/liying.cibr.ac.cn_Data_Temp/multiview_9/zhongzhenchao/CNTNAP2_KO/cntnap2pnd75room2/a/2023-12-21_15-42-11D1bC1w.segpkl
280 280 /mnt/liying.cibr.ac.cn_Data_Temp/multiview_9/zhongzhenchao/CNTNAP2_KO/cntnap2pnd75room2/a/2023-12-21_15-16-15C1bD1w.segpkl
280 280 /mnt/liying.cibr.ac.cn_Data_Temp/multiview_9/zhongzhenchao/CNTNAP2_KO/cntnap2pnd75room2/a/2023-12-21_14-32-25A1bB1w.segpkl
280 280 /mnt/liying.cibr.ac.cn_Data_Temp/multiview_9/zhongzhenchao/CNTNAP2_KO/cntnap2pnd75room2/a/2023-12-21_14-54-14B1bA1w.segpkl
280 280 /mnt/liying.cibr.ac.cn_Data_Temp/multiview_9/zhongzhenchao/CNTNAP2_KO/cntnap2pnd75room2/a/2023-12-20_16-45-22D1bB2w.segpkl
"
volsize_vfiles=$(echo "$volsize_vfiles" | grep -v '^[[:space:]]*$') #echo "$volsize_vfiles"
vfiles=$(echo "$volsize_vfiles" | awk '{print $3}') #echo "$vfiles"
# 2. 用DANNCE 预测得到3D姿态, nGPU=4
echo "$volsize_vfiles" | sed 's/.segpkl/.mp4/' | cat -n |
xargs -P 4 -l bash -c 'python -m dannce.cli_trt ../../configs/dannce_rat14_1280x800x9_max_config.yaml --vol-size-list $1 $2 --video-file $3 --gpu-id $(($0%4))'
# xargs -P 2 表示使用2个GPU,配合 choosecuda 0,1,2,3 确认使用gpu数量
# 3. 绘制“未平滑”的姿态轨迹 (可选)
# echo "$vfiles" | sed 's/.segpkl/.matcalibpkl/' | xargs -P 6 -l -r bash -c 'python -m lilab.mmpose.s3_matcalibpkl_2_video2d $0 --iview 3'
# 4. 绘制平滑后的姿态轨迹
echo "$vfiles" | sed 's/.segpkl/.matcalibpkl/' | xargs -l -P 6 -r python -m lilab.smoothnet.s1_matcalibpkl2smooth_foot_dzy
echo "$vfiles" | sed 's/.segpkl/.smoothed_foot.matcalibpkl/' | xargs -P 6 -l -r bash -c 'python -m lilab.mmpose.s3_matcalibpkl_2_video2d $0 --iview 3 --postfix smoothed_foot '
# 4B 将两个视角串连绘制 (可选)
# echo "$vfiles" | sed 's/.segpkl/.smoothed_foot.matcalibpkl/' | xargs -P 8 -l -r bash -c 'python -m lilab.mmpose.s3_matcalibpkl_2_video2d_2view $0 --postfix smoothed_foot'
# 5 创建400p 缩略视频文件(可选)
# bash /home/liying_lab/chenxinfeng/ml-project/LILAB-py/lilab/openlabcluster_postprocess/create_400p.sh \
# /mnt/liying.cibr.ac.cn_Data_Temp/multiview_9/zhongzhenchao/CNTNAP2_KO/cntnap2pnd75room2/a
其中 volsize_vfiles
表示一个视频的配置信息,分别是黑鼠的voxelsize(280), 白鼠的voxelsize(280) 和视频同名的分割文件 *.segpkl
。用两个不同的voxel,可以区分不同体型的鼠,例如雌性与雄性。
警告
太小的voxelsize 可能采集的大鼠图像不完整,让关键点越界。太大的voxelsize可能采集的大鼠图像太模糊,降低精度。
得到结果:
xx.smoothed_foot.matcalibpkl
- 两只鼠的3D关键点序列。xx_3_sktdraw_smoothed_foot.mp4
- 两只鼠的3D关键点视频。xx_400p.mp4
- smoothed_foot.mp4 文件的 400x400 分辨率压缩,减少文件大小和响应速度。
验证:打开 xx_3_sktdraw_smoothed_foot.mp4
视频,查看关键点位置是否正确。保存好xx.smoothed_foot.matcalibpkl
,这是包含社交三维姿态坐标的重要文件。
错误
如果开 xx_3_sktdraw_smoothed_foot.mp4
视频分割效果差,可以检查偏差对应时刻的分割视频,意见检查小球矫正文件。DANNCE模型一般来说非常稳定,MASK-RCNN 分割模型容易收到环境光和背景影响,需要经常加训。见数据与模型更新章节。