feat: 导入 IRSTD 研究代码与文档(小目标检测)

- 新增 irstd 核心包、scripts、tests、configs
- 新增研究文档:literature_review / mathematical_analysis / novelty_matrix / experiment_plan / research_decision / research_log / manuscript_outline
- 新增 evidence、results 数据与审计产物
- 新增 pyproject.toml、requirements、.gitignore
This commit is contained in:
u52f85420 committed 2026-11-01 10:10:33 +00:00
1 parent 9b4a29c4d2
commit 04bf90c09b
35 files changed
+2220 -2

No files matched your search

+18
View File
@@ -0,0 +1,18 @@
import unittest,importlib.util
AVAILABLE=importlib.util.find_spec('torch') is not None
@unittest.skipUnless(AVAILABLE,'PyTorch is unavailable; gradient/training tests NOT executed')
class TorchTests(unittest.TestCase):
def test_shapes_and_gradient(self):
import torch
from irstd.models import TinyUNet,segmentation_loss
model=TinyUNet();x=torch.randn(1,1,17,19);y=torch.zeros_like(x);y[:,:,8,9]=1
for name in ['bce','dice','bce_dice','focal','iou']:
model.zero_grad();z=model(x);self.assertEqual(z.shape,x.shape)
loss=segmentation_loss(z,y,name);loss.backward();self.assertTrue(torch.isfinite(loss))
self.assertTrue(all(torch.isfinite(p.grad).all() for p in model.parameters()))
def test_gate_gradients(self):
import torch
from irstd.models import gate_loss
s=torch.tensor([0.,0.],requires_grad=True)
loss,upper=gate_loss(s,torch.tensor([1.,0.]),torch.tensor([4.,1.]),1.,.1)
loss.backward();self.assertLess(s.grad[0],0);self.assertGreater(s.grad[1],0);self.assertAlmostEqual(upper.item(),1.)