Sʜᴇɴɢ Dong’s blog

通过 GitHub Pages 发布

If knowledge can create problems, it is not throught ignorance that we can solve them.

Issac Asimov

九月底的好消息

九月发生了两件值得高兴的事情:通过了博士开题答辩,以及进组以来的第一篇论文(综述)见刊了!希望今后再接再厉🎉🎉

September 28, 2024 · 1 min · Sheng, D. · 

2024年8月,长滩

长滩的早上通常被浓浓的海雾所笼罩,温度很宜人。穿过downtown街道上隐约的甜腻与骚臭气息,一路向南到海边,再一路往西经过成排的度假酒店和棕榈树,就到了2024 Annual Meeting of the Ecological Society of America的会场。然后在数个不同的会议室之间来回穿梭听报告,直到傍晚再滑着滑板回到旅馆,或者在沿途路边的墨西哥餐车买个torta当晚饭。 这样子听会议的日子重复了接近一个礼拜,笔记本上的潦草记录也飞速增长了好几页。碰到几位课题感兴趣的教授,冲上去提问交流并在会后发了跟进的邮件——属实是没想到身为I人的自己原来也能social至此。会议的规模很大,分会场的主题也很多。我试图在每一个感兴趣的话题上都了解到一些前沿进展,给自己9月份的博士开题积攒些灵感。期间还参观了当地中产社区里的花园农场,走出学术界听了听当地居民在生活中面临着什么食品问题。 最后一天只有上午有活动,而我预定了夜里的飞机,于是下午到海边的景区逛了逛。不得不说风景确实很美,彩色的小屋​​、游艇​​、草坪和灯塔在午后晴朗的天空下明净艳丽。可惜没能​去逛水族馆和观​鲸,希望以后有机会再见吧!​

August 12, 2024 · 1 min · Sheng, D. · 

自定义计算MMDetection目标检测模型的precision, recall, F1, AP, AR

使用自定义的类别和数据集训练了MMDetection的目标检测模型,需要汇报模型的precision, recall等等各项指标。在MMDetection的官网文档里只找到了生成混淆矩阵的代码,但似乎并不支持直接给出其他常见的评价指标(见Github项目的issue#6212和issue#8791。搜索一番后发现CSDN博客上有人分享了如何通过在tools/analysis_tools/confusion_matrix.py的main()函数末尾添加代码,从而得到precision, recall, F1, AP, AR。然而实际运行后发现其实有bug,并且原理上也有一些问题,所以进行了适当修改。 总体思路是,先从混淆矩阵中计算出每个分类的真阳性样本量FP、假阳性样本量TP、假阴性样本量FN,然后按照公式计算各分类标签的precision和recall。 需要注意的是,precision和recall的长度其实比分类数量多1。这是因为前面生成confusion matrix的时候,在已有分类的后边还加了一个“background”的标签。precision和recall的最后一位其实就是“background”的精确率和召回率,并且总是为零。从混淆矩阵里面也可以看出,background的真阳性比例一定是0%。在计算平均precision和recall的时候,我们不需要考虑这一个额外的分类。 MMDetection官方文档里的normalized confusion matrix,"background"分类的真阳性比例一定是0% 需要在main()函数末尾添加的代码为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 TP = np.diag(confusion_matrix) FP = np.sum(confusion_matrix, axis=0) - TP FN = np.sum(confusion_matrix, axis=1) - TP precision = TP / (TP + FP) recall = TP / (TP + FN) average_precision = np.mean(precision[:-1]) average_recall = np.mean(recall[:-1]) f1 = 2* (average_precision * average_recall) / (average_precision + average_recall) print('\n===Averaging all classes===') print('AP:', average_precision) print('AR:', average_recall) print('F1:', f1) print('Classes', dataset.metainfo['classes'] + ('background', )) print('Precision', precision) print('Recall', recall) 然后按照官方文档的说明,正常运行代码就可以输出结果了。 1 python tools/analysis_tools/confusion_matrix.py ${CONFIG} ${DETECTION_RESULTS} ${SAVE_DIR} --show 打印内容形如: ...

May 17, 2024 · 1 min · Sheng, D. · 

拆机加硬盘,新电脑已是老油条了

凭借曾经在E志者学到的功夫,拆开笔记本并添加了一条固态硬盘(SSD)。 ...

April 29, 2024 · 1 min · Sheng, D. · 

果味VC-日落(cover)

“这欲望的湖泊,很多人都在溺爱它。” ...

April 9, 2024 · 1 min · Sheng, D. ·