Skip to content

Commit b0191bd

Browse files
author
KCL Default
committed
Automated weekly lab webpage update (2026-03-23 16:36:55)
1 parent a33241c commit b0191bd

File tree

6 files changed

+161
-40
lines changed

6 files changed

+161
-40
lines changed

_data/pub/dynamic.bib

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
% AUTO-GENERATED FILE. DO NOT EDIT.
2-
% Updated on 2026-03-23T20:41:38Z
2+
% Updated on 2026-03-23T21:36:00Z
33
44
@inproceedings{10.1007/978-3-032-04617-8_3,
55
abstract = {Historical maps contain valuable, detailed survey data often unavailable elsewhere. Automatically extracting linear objects, such as fault lines, from scanned historical maps benefits diverse application areas, such as mining resource prediction. However, existing models encounter challenges in capturing adequate image context and spatial context. Insufficient image context leads to false detections by failing to distinguish desired linear objects from others with similar appearances. Meanwhile, insufficient spatial context hampers the accurate delineation of elongated, slender-shaped linear objects. This paper introduces the Linear Object Detection TRansformer (LDTR), which directly generates accurate vector graphs for linear objects from scanned map images. LDTR leverages multi-scale deformable attention to capture representative image context, reducing false detections. Furthermore, LDTR's innovative N-hop connectivity component explicitly encourages interactions among nodes within an N-hop neighborhood, enabling the model to learn sufficient spatial context for generating graphs with accurate connectivity. Experiments show that LDTR improves detection precision by 6{\%} and enhances line connectivity by 20{\%} over state-of-the-art baselines.},
@@ -330,14 +330,6 @@ @misc{Chiang2025_geoanomaly_detection_towards_finding_needles_of
330330
year = {2025}
331331
}
332332

333-
@misc{Jang2026_omnident_towards_an_accessible_and_explainable,
334-
author = {Leeje Jang and Yao-Yi Chiang and Angela M Hastings and Patimaporn Pungchanchaikul and Martha B Lucas and Emily C Schultz and Jeffrey P Louie and Mohamed Estai and Wen-Chen Wang and Ryan HL Ip and Boyen Huang},
335-
howpublished = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer …},
336-
title = {OMNI-Dent: Towards an Accessible and Explainable AI Framework for Automated Dental Diagnosis},
337-
url = {https://openaccess.thecvf.com/content/WACV2026W/P2P/html/Jang_OMNI-Dent_Towards_an_Accessible_and_Explainable_AI_Framework_for_Automated_WACVW_2026_paper.html},
338-
year = {2026}
339-
}
340-
341333
@misc{Jang2026_ticls_tightly_coupled_language_text_spotter,
342334
abstract = {Scene text spotting aims to detect and recognize text in real-world images, where instances are often short, fragmented, or visually ambiguous. Existing methods primarily rely on visual cues and implicitly capture local character dependencies, but they overlook the benefits of external linguistic knowledge. Prior attempts to integrate language models either adapt language modeling objectives without external knowledge or apply pretrained models that are misaligned with the word-level granularity of scene text. We propose TiCLS, an end-to-end text spotter that explicitly incorporates external linguistic knowledge from a character-level pretrained language model. TiCLS introduces a linguistic decoder that fuses visual and linguistic features, yet can be initialized by a pretrained language model, enabling robust recognition of ambiguous or fragmented text. Experiments on ICDAR 2015 and Total-Text demonstrate that TiCLS achieves state-of-the-art performance, validating the effectiveness of PLM-guided linguistic integration for scene text spotting.},
343335
author = {Leeje Jang and Yijun Lin and Yao-Yi Chiang and Jerod Weinman},
@@ -348,6 +340,16 @@ @misc{Jang2026_ticls_tightly_coupled_language_text_spotter
348340
year = {2026}
349341
}
350342

343+
@inproceedings{Jang_2026_WACV,
344+
author = {Jang, Leeje and Chiang, Yao-Yi and Hastings, Angela M. and Pungchanchaikul, Patimaporn and Lucas, Martha B. and Schultz, Emily C. and Louie, Jeffrey P. and Estai, Mohamed and Wang, Wen-Chen and Ip, Ryan H.L and Huang, Boyen},
345+
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) Workshops},
346+
month = {March},
347+
pages = {415-424},
348+
title = {OMNI-Dent: Towards an Accessible and Explainable AI Framework for Automated Dental Diagnosis},
349+
url = {https://openaccess.thecvf.com/content/WACV2026W/P2P/html/Jang_OMNI-Dent_Towards_an_Accessible_and_Explainable_AI_Framework_for_Automated_WACVW_2026_paper.html},
350+
year = {2026}
351+
}
352+
351353
@misc{Jelinski2025_finescale_soil_mapping_in_alaska_with,
352354
author = {Nicolas A Jelinski and Yao-Yi Chiang and Timm Nawrocki and Matt Macander and Sue Ives and Grunwald Sabine and Colby Brungard and Theresa Chen and Yijun Lin},
353355
howpublished = {ACM SIGSPATIAL 2025},

_data/pub/override.bib

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,4 @@ @misc{Jang2026_ticls_tightly_coupled_language_text_spotter
99
title = {TiCLS : Tightly Coupled Language Text Spotter},
1010
url = {https://arxiv.org/api/hSim6Wn9a5IS6tFjvGu5mnDLxXo},
1111
year = {2026}
12-
}
13-
14-
@InProceedings{Jang2026_omnident_towards_an_accessible_and_explainable,
15-
author = {Jang, Leeje and Chiang, Yao-Yi and Hastings, Angela M. and Pungchanchaikul, Patimaporn and Lucas, Martha B. and Schultz, Emily C. and Louie, Jeffrey P. and Estai, Mohamed and Wang, Wen-Chen and Ip, Ryan H.L and Huang, Boyen},
16-
title = {OMNI-Dent: Towards an Accessible and Explainable AI Framework for Automated Dental Diagnosis},
17-
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) Workshops},
18-
month = {March},
19-
year = {2026},
20-
pages = {415-424}
2112
}

publications.bib

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
% AUTO-GENERATED FILE — DO NOT EDIT
2-
% Updated on 2026-03-23T21:10:36Z
2+
% Updated on 2026-03-23T21:36:55Z
33
44
@inproceedings{10.1007/978-3-032-04617-8_3,
55
abstract = {Historical maps contain valuable, detailed survey data often unavailable elsewhere. Automatically extracting linear objects, such as fault lines, from scanned historical maps benefits diverse application areas, such as mining resource prediction. However, existing models encounter challenges in capturing adequate image context and spatial context. Insufficient image context leads to false detections by failing to distinguish desired linear objects from others with similar appearances. Meanwhile, insufficient spatial context hampers the accurate delineation of elongated, slender-shaped linear objects. This paper introduces the Linear Object Detection TRansformer (LDTR), which directly generates accurate vector graphs for linear objects from scanned map images. LDTR leverages multi-scale deformable attention to capture representative image context, reducing false detections. Furthermore, LDTR's innovative N-hop connectivity component explicitly encourages interactions among nodes within an N-hop neighborhood, enabling the model to learn sufficient spatial context for generating graphs with accurate connectivity. Experiments show that LDTR improves detection precision by 6{\%} and enhances line connectivity by 20{\%} over state-of-the-art baselines.},
@@ -1292,15 +1292,6 @@ @inproceedings{Jaiswal2014-km
12921292
year = {2014}
12931293
}
12941294

1295-
@inproceedings{Jang2026_omnident_towards_an_accessible_and_explainable,
1296-
author = {Jang, Leeje and Chiang, Yao-Yi and Hastings, Angela M. and Pungchanchaikul, Patimaporn and Lucas, Martha B. and Schultz, Emily C. and Louie, Jeffrey P. and Estai, Mohamed and Wang, Wen-Chen and Ip, Ryan H.L and Huang, Boyen},
1297-
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) Workshops},
1298-
month = {March},
1299-
pages = {415-424},
1300-
title = {OMNI-Dent: Towards an Accessible and Explainable AI Framework for Automated Dental Diagnosis},
1301-
year = {2026}
1302-
}
1303-
13041295
@misc{Jang2026_ticls_tightly_coupled_language_text_spotter,
13051296
abstract = {Scene text spotting aims to detect and recognize text in real-world images, where instances are often short, fragmented, or visually ambiguous. Existing methods primarily rely on visual cues and implicitly capture local character dependencies, but they overlook the benefits of external linguistic knowledge. Prior attempts to integrate language models either adapt language modeling objectives without external knowledge or apply pretrained models that are misaligned with the word-level granularity of scene text. We propose TiCLS, an end-to-end text spotter that explicitly incorporates external linguistic knowledge from a character-level pretrained language model. TiCLS introduces a linguistic decoder that fuses visual and linguistic features, yet can be initialized by a pretrained language model, enabling robust recognition of ambiguous or fragmented text. Experiments on ICDAR 2015 and Total-Text demonstrate that TiCLS achieves state-of-the-art performance, validating the effectiveness of PLM-guided linguistic integration for scene text spotting.},
13061297
author = {Leeje Jang and Yijun Lin and Yao-Yi Chiang and Jerod Weinman},
@@ -1311,6 +1302,16 @@ @misc{Jang2026_ticls_tightly_coupled_language_text_spotter
13111302
year = {2026}
13121303
}
13131304

1305+
@inproceedings{Jang_2026_WACV,
1306+
author = {Jang, Leeje and Chiang, Yao-Yi and Hastings, Angela M. and Pungchanchaikul, Patimaporn and Lucas, Martha B. and Schultz, Emily C. and Louie, Jeffrey P. and Estai, Mohamed and Wang, Wen-Chen and Ip, Ryan H.L and Huang, Boyen},
1307+
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) Workshops},
1308+
month = {March},
1309+
pages = {415-424},
1310+
title = {OMNI-Dent: Towards an Accessible and Explainable AI Framework for Automated Dental Diagnosis},
1311+
url = {https://openaccess.thecvf.com/content/WACV2026W/P2P/html/Jang_OMNI-Dent_Towards_an_Accessible_and_Explainable_AI_Framework_for_Automated_WACVW_2026_paper.html},
1312+
year = {2026}
1313+
}
1314+
13141315
@misc{Jelinski2025_finescale_soil_mapping_in_alaska_with,
13151316
author = {Nicolas A Jelinski and Yao-Yi Chiang and Timm Nawrocki and Matt Macander and Sue Ives and Grunwald Sabine and Colby Brungard and Theresa Chen and Yijun Lin},
13161317
howpublished = {ACM SIGSPATIAL 2025},
2.1 KB
Binary file not shown.

scripts/update_pubs.py

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
seq_ratio, token_set_ratio, # Fuzzy matching
1515
extract_doi, extract_arxiv_id, # DOI stuff
1616
make_bib_key, # bibtex creation
17-
bibtex_to_fields, get_bibtex_with_fallback, # Default grab
17+
bibtex_to_fields, get_bibtex_with_fallback, cv_family_bibtex_by_url, # Default grab
1818
arxiv_api_query_by_id, arxiv_find_best_by_title, # Things for arxiv
1919
acm_bibtex_by_doi, springer_bibtex_by_doi, crossref_bibtex_by_doi, # Outer bibtex
2020
crossref_bibtex_transform, crossref_search_best, # Crossref grab
@@ -82,15 +82,27 @@ def main(scholar_id:str,
8282

8383
print(f"Filling bibtex for {idx+1}: {title}")
8484

85-
# Try filling with scholarly
85+
# Prefer BibTeX exposed directly on CV-family paper pages.
86+
cv_family_bibtex = ""
87+
cv_family_fields = {}
88+
try:
89+
cv_family_bibtex = cv_family_bibtex_by_url(link, title=title)
90+
if cv_family_bibtex:
91+
cv_family_fields = bibtex_to_fields(cv_family_bibtex)
92+
except Exception:
93+
cv_family_bibtex = ""
94+
cv_family_fields = {}
95+
96+
# Fall back to scholarly when no conference-page BibTeX is available.
8697
scholar_bibtex = ""
8798
scholar_fields = {}
88-
try:
89-
scholar_bibtex = get_bibtex_with_fallback(p_full, title=title)
90-
scholar_fields = bibtex_to_fields(scholar_bibtex)
91-
except Exception: # If either fails
92-
scholar_bibtex = ""
93-
scholar_fields = {}
99+
if not cv_family_bibtex:
100+
try:
101+
scholar_bibtex = get_bibtex_with_fallback(p_full, title=title)
102+
scholar_fields = bibtex_to_fields(scholar_bibtex)
103+
except Exception: # If either fails
104+
scholar_bibtex = ""
105+
scholar_fields = {}
94106

95107
is_arxiv = False
96108
if ARXIV_WORD_RE.search(venue or ""):
@@ -133,8 +145,13 @@ def main(scholar_id:str,
133145
entry = {}
134146

135147
# Try getting DOI
136-
doi = extract_doi([link, scholar_bibtex,
137-
json.dumps(scholar_fields, ensure_ascii=False)])
148+
doi = extract_doi([
149+
link,
150+
cv_family_bibtex,
151+
scholar_bibtex,
152+
json.dumps(cv_family_fields, ensure_ascii=False),
153+
json.dumps(scholar_fields, ensure_ascii=False),
154+
])
138155

139156
# ACM
140157
if doi and doi.startswith("10.1145/"):
@@ -229,6 +246,16 @@ def main(scholar_id:str,
229246
if cr_abs:
230247
entry["abstract"] = cr_abs
231248

249+
if not entry and cv_family_bibtex:
250+
entry = build_other_bib_entry(
251+
cv_family_bibtex,
252+
title_fallback=title,
253+
venue_fallback=venue,
254+
year_fallback=year,
255+
link_fallback=link,
256+
abstract_fallback="",
257+
)
258+
232259
# Fall back to Scholarly bibtex if they have that
233260
if not entry and scholar_bibtex:
234261
entry = build_other_bib_entry(
@@ -272,4 +299,4 @@ def main(scholar_id:str,
272299

273300
main(scholar_id=args.scholar_id,
274301
year_window=args.year_window,
275-
outpath=args.outpath)
302+
outpath=args.outpath)

scripts/utils.py

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,106 @@ def parse_first_bibtex_entry(bibtex_str: str) -> dict:
241241
"(KHTML, like Gecko) Chrome/120 Safari/537.36"
242242
)
243243
}
244+
245+
CV_FAMILY_HOST_RE = re.compile(
246+
r"^https?://(?:www\.)?(?:openaccess\.thecvf\.com|thecvf\.com|ecva\.net)/",
247+
re.I,
248+
)
249+
CV_FAMILY_CONF_RE = re.compile(r"(?:CVPR|ICCV|ECCV|WACV)", re.I)
250+
BIBTEX_ENTRY_START_RE = re.compile(
251+
r"@(?:article|book|booklet|conference|inbook|incollection|inproceedings|manual|"
252+
r"mastersthesis|misc|phdthesis|proceedings|techreport|unpublished)\s*\{",
253+
re.I,
254+
)
255+
256+
def is_cv_family_url(url: str) -> bool:
257+
url = normalize_ws(url)
258+
return bool(url and CV_FAMILY_HOST_RE.search(url) and CV_FAMILY_CONF_RE.search(url))
259+
260+
def cv_family_candidate_urls(url: str) -> List[str]:
261+
url = normalize_ws(url)
262+
if not url or not is_cv_family_url(url):
263+
return []
264+
265+
candidates = [url]
266+
267+
# CVF PDF links map cleanly to paper HTML pages, which expose the BibTeX block.
268+
if re.search(r"/papers/.+_paper\.pdf(?:\?.*)?$", url, re.I):
269+
html_url = re.sub(r"/papers/", "/html/", url, flags=re.I)
270+
html_url = re.sub(r"_paper\.pdf(?:\?.*)?$", "_paper.html", html_url, flags=re.I)
271+
if html_url not in candidates:
272+
candidates.append(html_url)
273+
274+
return candidates
275+
276+
def extract_bibtex_entries(text: str) -> List[str]:
277+
text = html.unescape(text or "")
278+
entries = []
279+
280+
for match in BIBTEX_ENTRY_START_RE.finditer(text):
281+
start = match.start()
282+
pos = match.end() - 1
283+
depth = 0
284+
285+
while pos < len(text):
286+
ch = text[pos]
287+
if ch == "{":
288+
depth += 1
289+
elif ch == "}":
290+
depth -= 1
291+
if depth == 0:
292+
entry = text[start:pos + 1].strip()
293+
if entry:
294+
entries.append(entry)
295+
break
296+
pos += 1
297+
298+
return entries
299+
300+
def cv_family_bibtex_by_url(url: str, title: str = "") -> str:
301+
candidates = cv_family_candidate_urls(url)
302+
if not candidates:
303+
return ""
304+
305+
expected_title = normalize_title(title)
306+
307+
for candidate in candidates:
308+
try:
309+
r = requests.get(candidate, headers=UA_HEADERS, timeout=25)
310+
if r.status_code != 200:
311+
continue
312+
if "pdf" in (r.headers.get("Content-Type") or "").lower():
313+
continue
314+
except Exception:
315+
continue
316+
317+
entries = extract_bibtex_entries(r.text)
318+
if not entries:
319+
continue
320+
321+
if len(entries) == 1 and not expected_title:
322+
return entries[0]
323+
324+
best_entry = ""
325+
best_score = 0.0
326+
for entry in entries:
327+
fields = bibtex_to_fields(entry)
328+
entry_title = normalize_title(fields.get("title") or "")
329+
if not entry_title:
330+
continue
331+
score = seq_ratio(expected_title, entry_title) if expected_title else 0.0
332+
if score > best_score:
333+
best_score = score
334+
best_entry = entry
335+
336+
if best_entry and best_score >= 0.88:
337+
return best_entry
338+
339+
if len(entries) == 1:
340+
return entries[0]
341+
342+
return ""
343+
244344
# ACM
245345
def acm_bibtex_by_doi(doi: str) -> str:
246346
"""
@@ -565,4 +665,4 @@ def get_bibtex_with_fallback(p_full: dict, title: str) -> str:
565665
return scholarly.bibtex(pub2) or ""
566666
except Exception:
567667
return ""
568-
668+

0 commit comments

Comments
 (0)