{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"哪些锚框受哪一种监督 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.md","pages":[{"id":"reading-opening","title":"哪些锚框受哪一种监督 · 实现代码","unit":"哪些锚框受哪一种监督 · 实现代码","unitId":"notebook-blocks/b6e5552805db40308895eb423c00fff1","chapter":"course","number":1}],"aliases":[{"oldId":"b-63018cb325d1d1d81c6c4d23","targetId":"b-63018cb325d1d1d81c6c4d23","page":"reading-opening","operation":"move","beforeSHA256":"68ab73f0c1cbd872efb5dd565e57f07f1b4a2b56c5ea0ce2c6ed91ff60ff5a3f","afterSHA256":"68ab73f0c1cbd872efb5dd565e57f07f1b4a2b56c5ea0ce2c6ed91ff60ff5a3f","reason":"Same source body in authored semantic page"},{"oldId":"b-efd1394b129d9bb981ee180f","targetId":"b-efd1394b129d9bb981ee180f","page":"reading-opening","operation":"move","beforeSHA256":"0ca30553d4795d3d47fd3862b802de3f407d1fd4ba254e6f6d20994c91db664e","afterSHA256":"0ca30553d4795d3d47fd3862b802de3f407d1fd4ba254e6f6d20994c91db664e","reason":"Same source body in authored semantic page"},{"oldId":"b-74d0b8af2c57865c7bb32e5e","targetId":"b-74d0b8af2c57865c7bb32e5e","page":"reading-opening","operation":"move","beforeSHA256":"42cba31deccba2a350b9b23bd0ca1dcaa4c4c5cb9d35c773e1fcb89124788ccd","afterSHA256":"42cba31deccba2a350b9b23bd0ca1dcaa4c4c5cb9d35c773e1fcb89124788ccd","reason":"Same source body in authored semantic page"},{"oldId":"b-2cb3a5d1df756dc74e175b19","targetId":"b-2cb3a5d1df756dc74e175b19","page":"reading-opening","operation":"move","beforeSHA256":"b1c765d7bf903321abd36e75bae49048d61faec2aa3fd11922b328c5970003b1","afterSHA256":"b1c765d7bf903321abd36e75bae49048d61faec2aa3fd11922b328c5970003b1","reason":"Same source body in authored semantic page"},{"oldId":"b-996380a7009e7276ccdf0882","targetId":"b-996380a7009e7276ccdf0882","page":"reading-opening","operation":"move","beforeSHA256":"69910f0e843b76b0a9e207e1e13e524023bbfe037d0f6cd9c295e98abfdf64a5","afterSHA256":"69910f0e843b76b0a9e207e1e13e524023bbfe037d0f6cd9c295e98abfdf64a5","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-63018cb325d1d1d81c6c4d23","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html#b-63018cb325d1d1d81c6c4d23","content":"[LAB 10 · 从 RGB 图像训练小型检测器](/course/notebooks/a14237bfa9dd413d959ab4e458e11f42.html)","sha256":"68ab73f0c1cbd872efb5dd565e57f07f1b4a2b56c5ea0ce2c6ed91ff60ff5a3f","chapter":{"id":"course","title":"哪些锚框受哪一种监督 · 实现代码"},"unit":{"id":"notebook-blocks/b6e5552805db40308895eb423c00fff1","title":"哪些锚框受哪一种监督 · 实现代码"},"page":{"id":"reading-opening","title":"哪些锚框受哪一种监督 · 实现代码","number":1},"sectionTitle":"哪些锚框受哪一种监督 · 实现代码","currentQuestion":"哪些锚框受哪一种监督 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-efd1394b129d9bb981ee180f","prerequisites":[],"relatedBlocks":[]},{"id":"b-efd1394b129d9bb981ee180f","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html#b-efd1394b129d9bb981ee180f","content":"# 哪些锚框受哪一种监督 · 实现代码","sha256":"0ca30553d4795d3d47fd3862b802de3f407d1fd4ba254e6f6d20994c91db664e","chapter":{"id":"course","title":"哪些锚框受哪一种监督 · 实现代码"},"unit":{"id":"notebook-blocks/b6e5552805db40308895eb423c00fff1","title":"哪些锚框受哪一种监督 · 实现代码"},"page":{"id":"reading-opening","title":"哪些锚框受哪一种监督 · 实现代码","number":1},"sectionTitle":"哪些锚框受哪一种监督 · 实现代码","currentQuestion":"哪些锚框受哪一种监督 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-63018cb325d1d1d81c6c4d23","nextBlock":"b-74d0b8af2c57865c7bb32e5e","prerequisites":[{"id":"b-63018cb325d1d1d81c6c4d23","url":"#b-63018cb325d1d1d81c6c4d23","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-74d0b8af2c57865c7bb32e5e","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html#b-74d0b8af2c57865c7bb32e5e","content":"主线阅读与优先实验","sha256":"42cba31deccba2a350b9b23bd0ca1dcaa4c4c5cb9d35c773e1fcb89124788ccd","chapter":{"id":"course","title":"哪些锚框受哪一种监督 · 实现代码"},"unit":{"id":"notebook-blocks/b6e5552805db40308895eb423c00fff1","title":"哪些锚框受哪一种监督 · 实现代码"},"page":{"id":"reading-opening","title":"哪些锚框受哪一种监督 · 实现代码","number":1},"sectionTitle":"哪些锚框受哪一种监督 · 实现代码","currentQuestion":"哪些锚框受哪一种监督 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-efd1394b129d9bb981ee180f","nextBlock":"b-2cb3a5d1df756dc74e175b19","prerequisites":[{"id":"b-efd1394b129d9bb981ee180f","url":"#b-efd1394b129d9bb981ee180f","role":"section-title"},{"id":"b-63018cb325d1d1d81c6c4d23","url":"#b-63018cb325d1d1d81c6c4d23","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-2cb3a5d1df756dc74e175b19","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html#b-2cb3a5d1df756dc74e175b19","content":"RGB图像、单特征层锚框检测器、分类/位置损失、NMS、独立检测评价","sha256":"b1c765d7bf903321abd36e75bae49048d61faec2aa3fd11922b328c5970003b1","chapter":{"id":"course","title":"哪些锚框受哪一种监督 · 实现代码"},"unit":{"id":"notebook-blocks/b6e5552805db40308895eb423c00fff1","title":"哪些锚框受哪一种监督 · 实现代码"},"page":{"id":"reading-opening","title":"哪些锚框受哪一种监督 · 实现代码","number":1},"sectionTitle":"哪些锚框受哪一种监督 · 实现代码","currentQuestion":"哪些锚框受哪一种监督 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-74d0b8af2c57865c7bb32e5e","nextBlock":"b-996380a7009e7276ccdf0882","prerequisites":[{"id":"b-efd1394b129d9bb981ee180f","url":"#b-efd1394b129d9bb981ee180f","role":"section-title"},{"id":"b-63018cb325d1d1d81c6c4d23","url":"#b-63018cb325d1d1d81c6c4d23","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-996380a7009e7276ccdf0882","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/b6e5552805db40308895eb423c00fff1.html#b-996380a7009e7276ccdf0882","content":"```\n%%writefile -a lab10_detector.py\ndef anchors_grid(grid=12,sizes=(.23,.37)):\n    boxes=[]\n    for y in range(grid):\n        for x in range(grid):\n            for s in sizes:boxes.append([(x+.5)/grid-s/2,(y+.5)/grid-s/2,(x+.5)/grid+s/2,(y+.5)/grid+s/2])\n    return torch.tensor(boxes)\n\ndef encode(anchors,boxes):\n    ac=(anchors[:,:2]+anchors[:,2:])/2;aw=anchors[:,2:]-anchors[:,:2]\n    bc=(boxes[:,:2]+boxes[:,2:])/2;bw=boxes[:,2:]-boxes[:,:2]\n    return torch.cat([(bc-ac)/aw,torch.log((bw/aw).clamp(min=1e-6))],1)\n\ndef decode(anchors,offset):\n    ac=(anchors[:,:2]+anchors[:,2:])/2;aw=anchors[:,2:]-anchors[:,:2]\n    bc=ac+offset[:,:2]*aw;bw=aw*torch.exp(offset[:,2:].clamp(-3,3))\n    return torch.cat([bc-bw/2,bc+bw/2],1).clamp(0,1)\n\ndef match_targets(anchors,target):\n    \"\"\"-1 ignore, 0 background, 1/2 object. Each GT gets a distinct forced anchor.\"\"\"\n    classes=torch.zeros(len(anchors),dtype=torch.long);offsets=torch.zeros_like(anchors)\n    if not len(target['boxes']): return classes,offsets\n    overlap=iou_matrix(anchors,target['boxes']);best,best_gt=overlap.max(1)\n    classes[(best>=.25)&(best<.45)]=-1\n    positive=best>=.45\n    # Greedy global maximum, invalidate its anchor and GT; guarantees all GT assigned.\n    work=overlap.clone()\n    for _ in range(len(target['boxes'])):\n        flat=int(work.argmax()); a=flat//work.shape[1];g=flat%work.shape[1]\n        positive[a]=True;best_gt[a]=g;work[a,:]=-1;work[:,g]=-1\n    classes[positive]=target['labels'][best_gt[positive]]\n    offsets[positive]=encode(anchors[positive],target['boxes'][best_gt[positive]])\n    return classes,offsets\n\n\n```","sha256":"69910f0e843b76b0a9e207e1e13e524023bbfe037d0f6cd9c295e98abfdf64a5","chapter":{"id":"course","title":"哪些锚框受哪一种监督 · 实现代码"},"unit":{"id":"notebook-blocks/b6e5552805db40308895eb423c00fff1","title":"哪些锚框受哪一种监督 · 实现代码"},"page":{"id":"reading-opening","title":"哪些锚框受哪一种监督 · 实现代码","number":1},"sectionTitle":"哪些锚框受哪一种监督 · 实现代码","currentQuestion":"哪些锚框受哪一种监督 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-2cb3a5d1df756dc74e175b19","nextBlock":null,"prerequisites":[{"id":"b-efd1394b129d9bb981ee180f","url":"#b-efd1394b129d9bb981ee180f","role":"section-title"},{"id":"b-63018cb325d1d1d81c6c4d23","url":"#b-63018cb325d1d1d81c6c4d23","role":"problem-context"}],"relatedBlocks":[]}]}
