OpenCV C++学习笔记(2): Mat数据结构
opencv用了一种Mat的矩阵来存储图像数据, Mat看起来很神秘, 尤其是在处理图片局部的时候, 很神秘, 我一直想把两个摄像头拍摄的画面合并到一张图上显示, 查了很多, 才大概弄明白一点.
OpenCV C++学习笔记(1): 读/写图像
OpenCV C++学习笔记(0): Mac下安装
一直想写一个video see-through的程序, 用头戴显示器通过摄像头看外面, 以前用python写过, 但是延迟太明显. 于是去学了C++, 但也一直没有动手, 最近写毛笔字时开始给自己录像, 于是又有了很多视频需要剪切、调整、变形, 这些操作肯定是不愿意手动的, 于是打算用OpenCV, 然后继续嫌弃python太慢, 既然已经学了C++, 那干脆把OpenCV的C++版本学会好了.
于是一边查一边写, 写一句查一句, 觉得效率太低, 反正磨刀不误砍柴工, 干脆找本书认真学OpenCV好了, 目前买了本《OpenCV 4计算机视觉项目实战》 来看.
首先是安装. 我觉得开源软件如果提供一个远程安装指导的付费服务, 一定能产生巨巨巨巨巨大的GDP. 一开始折腾了一整天, 也没搞定一句#include <opencv2/opencv.hpp>
AI 4 Med 笔记(1.2)各种率
而且这张图做得很好, 一张图说明问题, 先看图, 再看后面的计算方式:
例如有这样的结果:
预测=A | 预测=B | 预测=C | |
---|---|---|---|
实际=A | 100 | 6 | 11 |
实际=B | 1 | 110 | 12 |
实际=C | 2 | 7 | 120 |
以下表格中, 分子是红字, 分母是黄色背景, 考虑C的情况
Accuracy¶
- 正确率
- 有病没病都说对了的概率
预测=A | 预测=B | 预测=C | |
---|---|---|---|
实际=A | 100 | 6 | 11 |
实际=B | 1 | 110 | 12 |
实际=C | 2 | 7 | 120 |
Recall¶
- 敏感性, 检出率, 真阳性率.
- 实际有病, 测出有病的概率
预测=A | 预测=B | 预测=C | |
---|---|---|---|
实际=A | 100 | 6 | 11 |
实际=B | 1 | 110 | 12 |
实际=C | 2 | 7 | 120 |
Precision¶
- 精确度, 阳性预测率, PPV
- 测出有病, 还说对了的概率
预测=A | 预测=B | 预测=C | |
---|---|---|---|
实际=A | 100 | 6 | 11 |
实际=B | 1 | 110 | 12 |
实际=C | 2 | 7 | 120 |
Specificity¶
- 特异性, 真阴性率
- 测出没病, 还说对了的概率
预测=A | 预测=B | 预测=C | |
---|---|---|---|
实际=A | 100 | 6 | 11 |
实际=B | 1 | 110 | 12 |
实际=C | 2 | 7 | 120 |
False Positive Rate¶
- 假阳性率, 误报率
- 本来没病, 测出有病的概率
预测=A | 预测=B | 预测=C | |
---|---|---|---|
实际=A | 100 | 6 | 11 |
实际=B | 1 | 110 | 12 |
实际=C | 2 | 7 | 120 |
真假阴阳性¶
预测为(-) | 预测为(+) | |
---|---|---|
实际为(-) | TN | FP |
实际为(+) | FN | TP |
- TP = true positive 真阳性
- FP = false positive (Type I error) 假阳性(Type I错误) , 印象里就是P<0.05的0.05
- TN = true negative 真阴性
- FN = false negative (Type II error)假阴性(Type II错误)
敏感特异性¶
-
Accuracy: 分类正确的概率. 实际为(-)预测为(-), 实际为(+)预测为(+)叫做正确. $$ Accuracy=\frac{TP + TN}{TP + TN + FP + FN} $$
-
Classification error: (1-Accuracy), 分类错误的概率 $$ Classification\; error=\frac{FP + FN}{TP + TN + FP + FN} $$
-
Recall, 真阳性率: 实际上为(+), 能够被预测成(+)的概率
- Recall又叫
- True Positive Rate (TPR): 真阳性率
- Sensitivity: 敏感性
- Probability of detection: 检出率 $$ Recall=\frac{TP}{TP+FN} $$
-
Precision: 如果预测为(+), 那么预测正确的概率 $$ Precision=\frac{TP}{TP+FP} $$
-
False positive rate (FPR): 假阳性率, 误报率. 本来实际上是(-)的, 结果分类器报告成(+)的概率
- Specificity, 特异性
应该是真阴性率(之前写错了), TNR, 实际上为(-), 能够被测成(-)的概率 $$ Specificity=\frac{TN}{TN+FN} $$
F1-score: 结合precision与recall¶
$$ F_1=2\frac{precision \times recall}{precision+recall}=\frac{2TP}{2TP+FN+FP} $$F-score: 更一般地将precision与recall结合成单独一个数¶
$$ F_\beta=(1+\beta^2)\frac{precision \times recall}{\beta^2\times precision+recall}=\frac{(1+\beta^2)TP}{(1+\beta^2)TP+FN+FP} $$𝛽用来调整recall vs precision之间的重要程度:
- Precision-oriented users: 𝜷 = 0.5
- Recall-oriented users: 𝜷 = 2
其中 prevalence=P(pos), 阳性结果的发生率. 如果自己都知道TP、FP的数据, 当然用简单的公式计算, 如果拿到的是一个标记好各种率的试剂盒, 或者是看一篇新闻报道, 对方把各种率搅合在一起, 那么可能就要通过后一种公式来计算
置信区间¶
比如某个概率p=0.80(95% CI 0.78, 0.82),
是说, 真实的概率p, 谁知道是啥, 有95%的概率, 会落在[0.78, 0.82]的范围内. 置信区间的范围和样本量有关, 样本量越大, 置信区间的宽度越窄.
ROC曲线¶
- X轴: False Positive Rate 假阳性率
- Y轴: True Positive Rate 真阳性率
左上顶点:
- 理想点
- False positive rate 假阳性率=0
- True positive rate 真阳性率=1
- ROC曲线越往左上, 越好.
- 曲线下面积(AUC), 越大越好
- 45度线是随机瞎猜线
人工晶体闪辉Glistening
近期认真读了一下关于人工晶体Glistening(闪辉)的文献, 连带读了相关的专利. 很有意思, 写出来供眼科同道观赏. (专业文章讲解惯例, 专业名词第一次出现时使用中文译名, 此后持续使用英文原名.)
临床部分比较无聊, 但原理部分相当有趣.
9年前的鸡汤
笔法方程的应用: 怎样算写字不好
我在《笔法方程略史》里面提到了书法的first principle:
基本定理:写完一笔以后, 笔应该恢复到能够写下一笔的状态。
也就是说, 一笔写完以后, 由于笔的弹性, 笔应该回到初始状态, 笔锋是处于聚拢状态的。不妨称为“回归律”
并且在那篇文章末尾, 还做了少许应用, 仅仅从这个第一性原理就可以推知一个人的书法是否不好.
好的艺术表达并不是“科学”或者可度量的, 一定程度以上就较少有客观标准来衡量了. 但不好的艺术表达比较容易定性甚至半定量地分析.
在本文中, 我将再展开讨论如何算是不好的书法.
我们平时看到的书法, 通常是写完以后的作品, 是静态的. 但书法是一个写的过程, 我更愿意把书法作品当作是 书法家通过毛笔玩“极限运动”时在平面留下的轨迹.
想象一下玩极限运动的人, 就是那种踩着滑板上下翻飞的场景. 明白王羲之为什么字“逸少”了吧.
我们现在已经无法看到古代人写字的过程, 只能从他们留下的痕迹里去猜想精彩的极限运动过程. 但现代的书法作品不同, 现代有录像啊, 可以从录像里直接看到一个人写字的全过程.
以下的分析是理工科定性或半定量分析, 不涉及到任何主观感受, 是我最爱的 机械的、生硬的、可重复的 分析.
AI 4 Med 笔记(1.1)胸片诊断
第一门课叫AI For Medical Diagnosis, 也就是用于诊断的AI. 有三周的课程
用于诊断一般就是图像识别, 看胸片、眼底照片、CT、核磁. 其中MRI是3D数据, 其他一般是二维.
诊断问题一般就是二分类, 有病或者没病.
二分类的loss很简单:
L(X,y)=
- -log(P(Y=1|X)) if y==1
- -log(P(Y=0|X)) if y==0
就是把卷积神经网络CNN最后一步的激活函数设成sigmoid, 得到一个在[0,1]之间的概率, 对这个数字求-log.
AI 4 Med 笔记(0)总体印象
最近选了deeplearning.ai在coursera上开设的[AI for Medicine Specialization], 有三门课:
目前我已经通过了前两门, AI For Medical Treatment要到5月才能开课.
本来想在7天免费期内一口气刷完三门课通关, 可惜因为开课时间所限, 无法达成此成就了.