Sʜᴇɴɢ Dong’s blog

通过 GitHub Pages 发布

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

Issac Asimov

东北亚一瞥

对东京的惊鸿一瞥似乎让刻板印象有增无减。 落地前,空乘提醒大家可以从左侧舷窗看到富士山。夕阳下有一个锥形的庞然大物拔地而起,耸立云端。黑色的岩体和山尖的积雪都蒙上了一层金黄。直到飞机降落,还是一眼就能在天边看到富士山突兀地站着,显得脚底下的一切高楼和丘陵都与平地无异。以前一直觉得《富士山下》里所谓 “富士山爱情论” 是很烂的比喻1,总觉得这喻体有些莫名其妙。现在总算明白为什么偏要硬扯上富士山——因为它的轮廓真的是一抬头就能看到,如影随形。难怪它成为如此著名的日本的文化符号。 本想落地后找个好的角度再拍照,可惜夜幕已经完全降临。但又有别的收获。从羽田机场看过去的东京建成区,是一片密密麻麻的红光。我印象里从未见过如此密集的警示灯,将城市的天际线勾勒得如此清晰——似乎所有高的矮的宽的窄的都并非房屋,而是仅仅由红色光点组成的阵列,在黑暗里形成天和地的轮廓。科幻作品里的那个赛博朋克的城市似乎又在向我招手。 转机的时间只有匆匆几十分钟。机场派了专人在舱门前等待,然后一路引导我赶往下一个登机口。他们对旅客的服务意识很好,但不会很好地回应超出既定流程的问题。一路上行色匆匆,与别人交流之后必恳切鞠躬。人和人之间感觉确实是礼貌恭敬,而又隔着厚壁障的。目光所及都在强化我对于这个社会的文化的刻板印象。这是件坏事,毕竟对服务行业的采样本带有强烈的系统偏差。我不应该拿到这样一个小而偏的样本就大肆演绎。 今年夏天经首尔转机的经历亦如是。经典的的锅盖头发型,精心打扮的妆容,让人觉得这么多韩剧的服化道诚不欺我。还有各种不遗余力推广韩国传统文化的宣传片、演出、体验中心等。作为中国人,看到变种(?)的汉服、毽子、投壶以“K-Culture”的标签大力宣传,真的很难绷住。看到“请对韩国文化保持尊重,不要有冒犯性言论”的手写标语之后更难绷了,不禁让人联想这里的工作人员经历了什么尴尬的场面。好的坏的刻板印象,同样在短短几小时内不减反增…… 想起高中的几个同窗正在东京读书,可惜转机时间紧迫,也没有办过境签,不能顺道小聚。 再次起飞后,终于看到了建成区发出暖黄色或白色的灯光,勾勒出道路、建筑、河流和公园。富士山早已隐入夜幕,我也辨别不出东京塔在哪里,现在的夜景倒是似与其他的城市别无二致了。 从左至右:透过舷窗看到日落时的富士山;东京都市圈夜景俯瞰;仁川机场的文化宣传海报 2024年12月15日,杭州至匹兹堡途中 ...

December 16, 2024 · 1 min · Sheng, D. · 

九月底的好消息

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

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. ·