Open nicelala opened 2 years ago
mAP在/run/*/evaluate.py程序中计算输出。bbox可视化未提供程序,请自行实现。
想請問作者這行代碼的怎計算出來
indexes_img, indexes_anchor, indexes_cls = torch.where(scores > conf_thresh)
因為我每張測試輸出的scores都是1,但是輸出的座標並沒有跟gt座標完全一樣,一定會產生誤差,不應該會是1才對
scores作为预测值,跟输出坐标与gt坐标的吻合度无关。(不确定是否完全理解了你的问题)
那請問socres是否等於confidence
是的
我把bbox可視化輸出座標與gt座標沒有完全重合,但是confidence卻顯示1,這是我現在遇到的問題
confidence并不是评价输出坐标与gt坐标重合度的指标,只是预测当前位置是否存在目标的概率或分数(比如我预测自己考了100分(confidence),实际上我可以考90分或80分)。输出坐标与gt坐标是否重合,confidence都可以是1。任何情况下,模型都可以预测confidence为0-1之间的任意值。
作者我用您給的預訓練權重去跑我自己的資料集,所得到的mAP都只有20以下,我該怎麼解決這個問題
模型在特定数据上一般需要经过finetune才能取得预期效果
請問輸入圖片大小為128128,prior_box設置需要做調整嗎 ` prior_box = { 'strides': [8, 16, 32, 64, 128], 'sizes': [3] 5, 'aspects': [[1, 2, 4, 8]] * 5, 'scales': [[2 0, 2 (1 / 3), 2 * (2 / 3)]] 5, }`
如果进行训练的话,prior_box有必要根据图像尺寸做调整。如果用已训练权重做预测的话,prior_box需要保持不变,这时图像输入尺寸受到训练时的输入尺寸限制。
請問我該往模型的哪個部份去做finetune
finetune可以是加载以训练权重对模型初始化,然后加入新数据做训练,更新权重,这需要保证prior_box等设置保持一致。或者你可以从头训练模型。
我兩種方式都有試著做過,我的mAP結果都在20以下,我的資料集是骨頭的x光照片,會不會差異太大導致結果太差
x光照片跟遥感影像差异较大,需要考虑目前的数据增强方法是否适合。另外prior_box需要根据图像尺寸、目标大小做适当调整。如果数据处理得当以及模型设置合适,我觉得mAP不应该这样低。
我圖片大小差不多在100-200之間,然後要框出骨頭的裂痕,我只有把prior_box的size調成1,其他都不更動這樣
prior_box = { 'strides': [8, 16, 32, 64, 128], 'sizes': [1] * 5, 'aspects': [[1, 2, 4, 8]] * 5, 'scales': [[2 ** 0, 2 ** (1 / 3), 2 ** (2 / 3)]] * 5,
假如你将图像输入尺寸固定为192,那么P3、P4、P5的特征层进行预测比较合适,对应的stride
为8, 16, 32
,而size
一般应该保持不变。
圖片固定為192會報錯,還是固定256看看,這樣才不會報錯
RuntimeError: The size of tensor a (3) must match the size of tensor b (4) at non-singleton dimension 3
不是设置prori_box就行,还需要设置输出的feature map与stride相对应。
我圖片固定為192,extra設置為0,它就沒有報tensor不批配的錯誤了
prior_box = { 'strides': [8, 16, 32], 'sizes': [3] * 5, 'aspects': [[1, 2, 4, 8]] * 5, 'scales': [[2 ** 0, 2 ** (1 / 3), 2 ** (2 / 3)]] * 5, }
cfg = { 'prior_box': prior_box, 'num_classes': num_classes, 'extra': 0, }
是的。sizes
、aspects
、scales
也应该与随strides
做相应修改,不过由于python的zip
函数的特点,这里并没有产生异常。
我正在試著將您的FeaturePyramidNet網路改BiFPN,以下是更改過後的程式碼的連結 https://drive.google.com/file/d/18XaQUi9mBt6OCf1gByIoF9v1o4jSSCTk/view?usp=sharing 但是我遇到以下的問題,請問我該怎麼解決 ` File "run/dota/train.py", line 105, in main loss.backward() File "/home/sosel/anaconda3/envs/pytorch1.4/lib/python3.6/site-packages/torch/tensor.py", line 118, in backward torch.autograd.backward(self, gradient, retain_graph, create_graph) File "/home/sosel/anaconda3/envs/pytorch1.4/lib/python3.6/site-packages/torch/autograd/init.py", line 93, in backward allow_unreachable=True) # allow_unreachable flag
RuntimeError: Function DivBackward0 returned an invalid gradient at index 1 - expected type torch.FloatTensor but got torch.cuda.FloatTensor `
显然是你使用的这些变量导致的:
self.p5_td_w1 = torch.tensor(1, dtype=torch.float, requires_grad=True)
self.p5_td_w2 = torch.tensor(1, dtype=torch.float, requires_grad=True)
...
你应该还不了解pytorch的一些使用方法,如torch.nn.Parameter,这样的情况下很难保证你做的修改是正确的。
請問作者我使用自己的資料集,train data數量為141;test data數量為35,如果遇到over fitting有什麼建議方法嗎
除了增加训练集外并没有太好的方法,也许小样本学习相关的方法可以有帮助,不过我对此也并不了解。
请问可视化您怎么实现的 指导一下呗 谢谢
不是不给指导,只是这要指导的话,那要给的指导就多了。所以原则上除模型相关以外的问题,都自行解决。
这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。