{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"4. 根据实际输出解释每次条件变化 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.md","pages":[{"id":"reading-opening","title":"4. 根据实际输出解释每次条件变化 · 实现代码","unit":"4. 根据实际输出解释每次条件变化 · 实现代码","unitId":"notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf","chapter":"course","number":1}],"aliases":[{"oldId":"b-1097a47e8ffea98c4aa1d356","targetId":"b-1097a47e8ffea98c4aa1d356","page":"reading-opening","operation":"move","beforeSHA256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","afterSHA256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","reason":"Same source body in authored semantic page"},{"oldId":"b-aa7a2a52a56bc49ac1660235","targetId":"b-aa7a2a52a56bc49ac1660235","page":"reading-opening","operation":"move","beforeSHA256":"f0f586dd0bf3c53b60ef095b37d6ee2118dbcdc12c6f72144f35b22198224a34","afterSHA256":"f0f586dd0bf3c53b60ef095b37d6ee2118dbcdc12c6f72144f35b22198224a34","reason":"Same source body in authored semantic page"},{"oldId":"b-abbae8594bc40ce47090bbc1","targetId":"b-abbae8594bc40ce47090bbc1","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-b391d06623e0c55bf67c8c77","targetId":"b-b391d06623e0c55bf67c8c77","page":"reading-opening","operation":"move","beforeSHA256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","afterSHA256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","reason":"Same source body in authored semantic page"},{"oldId":"b-d0d8bb87f90bdac3c9ee171a","targetId":"b-d0d8bb87f90bdac3c9ee171a","page":"reading-opening","operation":"move","beforeSHA256":"77e72c82a85eed826bad3c37be4f3698bf1a208c8fe4ea8b010784313ec03256","afterSHA256":"77e72c82a85eed826bad3c37be4f3698bf1a208c8fe4ea8b010784313ec03256","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-1097a47e8ffea98c4aa1d356","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html#b-1097a47e8ffea98c4aa1d356","content":"[LAB 15 · 语言指代小练习：目标、参照与关系](/course/notebooks/7dc83786d067465aa76264475db2c62d.html)","sha256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","chapter":{"id":"course","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"unit":{"id":"notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"page":{"id":"reading-opening","title":"4. 根据实际输出解释每次条件变化 · 实现代码","number":1},"sectionTitle":"4. 根据实际输出解释每次条件变化 · 实现代码","currentQuestion":"4. 根据实际输出解释每次条件变化 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-aa7a2a52a56bc49ac1660235","prerequisites":[],"relatedBlocks":[]},{"id":"b-aa7a2a52a56bc49ac1660235","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html#b-aa7a2a52a56bc49ac1660235","content":"# 4. 根据实际输出解释每次条件变化 · 实现代码","sha256":"f0f586dd0bf3c53b60ef095b37d6ee2118dbcdc12c6f72144f35b22198224a34","chapter":{"id":"course","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"unit":{"id":"notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"page":{"id":"reading-opening","title":"4. 根据实际输出解释每次条件变化 · 实现代码","number":1},"sectionTitle":"4. 根据实际输出解释每次条件变化 · 实现代码","currentQuestion":"4. 根据实际输出解释每次条件变化 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-1097a47e8ffea98c4aa1d356","nextBlock":"b-abbae8594bc40ce47090bbc1","prerequisites":[{"id":"b-1097a47e8ffea98c4aa1d356","url":"#b-1097a47e8ffea98c4aa1d356","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-abbae8594bc40ce47090bbc1","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html#b-abbae8594bc40ce47090bbc1","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"unit":{"id":"notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"page":{"id":"reading-opening","title":"4. 根据实际输出解释每次条件变化 · 实现代码","number":1},"sectionTitle":"4. 根据实际输出解释每次条件变化 · 实现代码","currentQuestion":"4. 根据实际输出解释每次条件变化 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-aa7a2a52a56bc49ac1660235","nextBlock":"b-b391d06623e0c55bf67c8c77","prerequisites":[{"id":"b-aa7a2a52a56bc49ac1660235","url":"#b-aa7a2a52a56bc49ac1660235","role":"section-title"},{"id":"b-1097a47e8ffea98c4aa1d356","url":"#b-1097a47e8ffea98c4aa1d356","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-b391d06623e0c55bf67c8c77","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html#b-b391d06623e0c55bf67c8c77","content":"RGB规则提框、错误关键词基线、目标/参照/关系与干预","sha256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","chapter":{"id":"course","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"unit":{"id":"notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"page":{"id":"reading-opening","title":"4. 根据实际输出解释每次条件变化 · 实现代码","number":1},"sectionTitle":"4. 根据实际输出解释每次条件变化 · 实现代码","currentQuestion":"4. 根据实际输出解释每次条件变化 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-abbae8594bc40ce47090bbc1","nextBlock":"b-d0d8bb87f90bdac3c9ee171a","prerequisites":[{"id":"b-aa7a2a52a56bc49ac1660235","url":"#b-aa7a2a52a56bc49ac1660235","role":"section-title"},{"id":"b-1097a47e8ffea98c4aa1d356","url":"#b-1097a47e8ffea98c4aa1d356","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-d0d8bb87f90bdac3c9ee171a","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf.html#b-d0d8bb87f90bdac3c9ee171a","content":"```\nfig,axes=plt.subplots(2,2,figsize=(11,7))\nfor ax,(condition,pixels,phrase),row in zip(axes.flat,cases,results):\n    ax.imshow(pixels)\n    for role,color in [('target','#c93636'),('reference','#2a5ed0')]:\n        obj=row.get(role)\n        if obj:\n            x1,y1,x2,y2=obj['box'];ax.add_patch(Rectangle((x1,y1),x2-x1,y2-y1,fill=False,ec=color,lw=2.5));ax.text(x1,y1-3,role,color=color,fontsize=10,weight='bold')\n    ax.set(xlim=(0,160),ylim=(96,0),xlabel='x (pixels)',ylabel='y (pixels)')\n    ax.set_title(condition+'\\n'+phrase+'\\n'+row['status'],fontsize=11)\nfig.suptitle('LAB15: image pixels -> candidate boxes -> explicit relation rules',fontsize=14)\nfig.tight_layout();fig.savefig(OUT/'lab15-grounding-interventions.png',dpi=160);plt.show();plt.close(fig)\nfig,axes=plt.subplots(1,2,figsize=(8,3))\nfor ax,edited,title in [(axes[0],occluded,'Only target region covered'),(axes[1],swapped,'Only cup colors exchanged')]:\n    changed=np.any(base!=edited,axis=-1);ax.imshow(changed,cmap='gray',vmin=0,vmax=1);ax.set_title(title+'\\nchanged pixels: '+str(int(changed.sum())),fontsize=10);ax.axis('off')\nfig.tight_layout();fig.savefig(OUT/'lab15-pixel-differences.png',dpi=160);plt.show();plt.close(fig)\nreport={'notebook_id':'7dc83786d067465aa76264475db2c62d','execution':'local fresh Python process; deterministic rules; no neural pretrained inference','created_utc':datetime.now(timezone.utc).isoformat(),'environment':{'python':sys.version,'numpy':np.__version__,'platform':platform.platform()},'coordinate_convention':'xyxy half-open pixels; relation compares horizontal box centers; category cup only','baseline_error':{'phrase':phrases[-1],'keyword_output':'right-blue','correct_target':'left red cup','failure':'blue modifies the reference, not the target'},'results':results,'pixel_changes':{'occlusion':int(np.any(base!=occluded,axis=-1).sum()),'color_exchange':int(np.any(base!=swapped,axis=-1).sum())},'pretrained_grounding_status':'not run; official GroundingDINO implementation and evidence linked in notebook','input_sha256':{p.name:hashlib.sha256(p.read_bytes()).hexdigest() for p in sorted(OUT.glob('lab15-*.png')) if p.name in ['lab15-base.png','lab15-target-occluded.png','lab15-colors-exchanged.png']}}\n(OUT/'lab15-results.json').write_text(json.dumps(report,indent=2));print('saved',OUT)\n```","sha256":"77e72c82a85eed826bad3c37be4f3698bf1a208c8fe4ea8b010784313ec03256","chapter":{"id":"course","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"unit":{"id":"notebook-blocks/e73e270ed0de4f8cb1e775057ca0b1bf","title":"4. 根据实际输出解释每次条件变化 · 实现代码"},"page":{"id":"reading-opening","title":"4. 根据实际输出解释每次条件变化 · 实现代码","number":1},"sectionTitle":"4. 根据实际输出解释每次条件变化 · 实现代码","currentQuestion":"4. 根据实际输出解释每次条件变化 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-b391d06623e0c55bf67c8c77","nextBlock":null,"prerequisites":[{"id":"b-aa7a2a52a56bc49ac1660235","url":"#b-aa7a2a52a56bc49ac1660235","role":"section-title"},{"id":"b-1097a47e8ffea98c4aa1d356","url":"#b-1097a47e8ffea98c4aa1d356","role":"problem-context"}],"relatedBlocks":[]}]}
