Research

Research

One peer-reviewed paper, and three lines of engine research behind the products. Each comes with its figures redrawn, what worked, what did not, and what is still unmeasured.

01 · Paper · SIAM SDM 2023 · co-author

A General-Purpose Transferable Predictor for Neural Architecture Search

Can one performance predictor rank networks from search spaces it was never built for?

Encodings tied to a search spaceIn3×31×1MPOut0123NAS-Bench-101 cellNAS-Bench-201 cellone-hot opsper nodeedge listper cellPredictor APredictor Bdoes not transferOne computation graphIn3×31×1MPOut0123InputConv2DMaxpoolBNBNReLUAddConcatOne predictorany family
Figure 1. Encodings tied to a search space give one predictor per family, and neither transfers. Rewriting every network as a computation graph of primitive operations lets one predictor read them all. Redrawn from Figure 1 of the paper.
GraphConv2DMaxpoolReLUConcatEncodersEncoding NNsweighted opsEncoding NNsother opsNode featuresTypeKernelI/O HWCBiasTypeI/O HWCTypeI/O HWCTypeI/O HWCEdge featuresk-GNNgraphencoderzContrastivesimilar graphs pull,others pushSimCLR, SupConthen fine-tune a headon a few scored nets
Figure 2. Each operation becomes a feature row (type, kernel, input and output height, width and channels, bias) through small encoding networks. A k-GNN reads the rows and the edge features into one embedding, trained with a contrastive loss on unlabelled graphs from many families. A small head is fine-tuned on a few scored networks. Redrawn from Figure 3 of the paper.
NAS-Bench-101-0.400.51.0Synflow0.361Jacov0.358GNN fine-tune0.542CL fine-tune0.553NAS-Bench-201-0.400.51.0Synflow0.823Jacov0.859GNN fine-tune0.884CL fine-tune0.917NAS-Bench-301-0.400.51.0Synflow-0.210Jacov-0.190GNN fine-tune0.872CL fine-tune0.892Spearman ρ, higher is better
Figure 3. Spearman rank correlation between predicted and true accuracy, mean of five fine-tunes, from Table 1 of the paper. The zero-cost proxies go negative on NAS-Bench-301. Both graph predictors stay above 0.85 there, and the contrastive one leads on all three benchmarks.

Architecture search spends most of its budget scoring candidates. Predictors make that cheap, but the predictors of the time each understood one search space, because they read a fixed recipe of blocks.

The paper rewrites any convolutional network as a computation graph of primitive operations, then learns that graph with contrastive learning on unlabelled architectures from several families. A small head, fine-tuned on a few scored networks, ranks a family the predictor was not trained on.

I am a co-author, not the lead author. It was written at Huawei's Canadian lab in Edmonton, with the University of Alberta and UBC.

  • 0.917

    Spearman on NAS-Bench-201

  • 0.892

    Spearman on NAS-Bench-301, where zero-cost proxies go negative

  • 94.23%

    best NAS-Bench-101 architecture found in 700 queries, on average the 2nd best in the space

  • 79.2%

    ImageNet top-1 for a MobileNetV3 found with the transferred predictor

Spearman figures are means over five fine-tunes, with a spread of about 0.01. Search and ImageNet numbers are the single results the paper reports.

02 · Engine research · Atlas · 2025 to 2026

Zero-shot change detection

Can frozen self-supervised features find change on a site they have never seen, with no labels at all?

InputsTilesFrozen backboneSiamese headConfidence weightClean and nameI₁, 2017I₂, 20243 scales3 scalesDINOv2 ViT-B/14frozen, patch 14DINOv2 ViT-B/14frozen, patch 14shared weightsF₁F₂[F₁; F₂; |F₁ − F₂|]2,304 channelsHead2,304 → 256→ 2learnedPL, cClassical channel, always returns a mappixel difference|I₂ − I₁|structure1 − SSIM(I₁, I₂)edges|∇I₂ − ∇I₁|PCw = clip((c − clo) /(chi − clo), 0, 1)P = w·PL + (1 − w)·PCwcclassical leadslearned leadsOn an unseen site, confidencesits in the mid band, so theclassical channel carriesthe boundary.thresholdfrom the observed spreadmorphologyclose, open, fill holesvectorisesize-tieredCLIP namesViT-B/32, zero-shotchange polygons
Figure 4. Zero-shot change detection. A frozen DINOv2 ViT-B/14 reads both dates; a small head over before, after and absolute-difference features (2,304 to 256 to 2 channels) scores change and its own confidence. A model-free classical channel always returns a map. Where the learned score is unsure, the weight hands the pixel to the classical channel. Image chips are real public Sentinel-2 crops from the mining scene on this site.

Labelled change pairs are scarce and every new site looks different. The question was whether a frozen vision transformer gives usable change maps out of the box, and what it takes to run one honestly on mixed satellite pairs.

The first zero-shot runs returned nothing. Logging the score distribution showed why: confidence sat between about 0.3 and 0.6, and a threshold borrowed from convention, 0.7, erased every change. Thresholds now come from the spread each run actually produces, and that spread is logged every time.

One coarse tile lost small features. Three tile scales, a classical channel and a confidence weight between them took one scene from 2 detections to 187. A light head trained on 26 real pairs could not be shown to beat the frozen comparator, so it was not adopted. The negative result stays on the record.

  • 185

    change polygons on a public coal mine, 671.47 ha

  • 2 → 187

    detections on one scene after multi-scale tiling, a count and not an accuracy

  • 356 s

    for that scene on a 4 GB GPU, 2.8 GB peak memory

  • 30.2%

    mean pixel confidence, the honest mid band; 177 of 185 polygons sit between 30% and 50%

Precision and recall against labelled change polygons have not been measured yet. A 200-pair labelled set is planned for that.

03 · Engine research · Atlas · 2026

Automatic georeferencing

Can a scanned map with no coordinates be placed on the satellite base automatically, and refused when the fit is wrong?

Map branchscanned sheetsno coordinatestext masklabels kept out of inkink skeletonjunctions, degree ≥ 3parcel graph52 junctions, 40 polygonsSatellite branchsatellite mosaic1,312 tiles at z19road unionthree road sourcesjunctions, curves881 junctions108 polylinesCoarse seeddense matcher,no keypoint detectorBayesian searchover zoom levelsleave-one-outpasses the gate?yescross-modal matchparcels onto roadsshipcontrol-point selectoraffine warp, COGnoseed refusedfails closedcluster-shape recoveryN from 4 to 1212 rotations each6.15 mleave-one-out8 control pointsone golden run
Figure 5. Automatic georeferencing. The map branch turns scanned sheets into a parcel graph; the satellite branch turns a mosaic into a road graph. A coarse seed is scored by leave-one-out error, never in-sample. A seed that fails the gate is refused, and a recovery search over cluster shapes takes over. Chips are from the cleared Atlas run on this site.

Old parcel sheets hold decades of records but carry no coordinates, and an ink drawing looks nothing like a photograph. The open questions: does any matcher find enough true correspondences between the two, how do you notice a wrong alignment when in-sample residuals look fine, how do you recover, and how much transform can a handful of control points support?

The answer was two graphs and a gate. The map becomes a parcel graph and the satellite base a road graph. A dense matcher proposes a seed across zoom levels, and the seed is scored by leave-one-out error, never in-sample. If it fails, a search over cluster shapes takes over, and with few control points the transform is capped at affine.

One bug is worth keeping: matches were rescaled by the original image size while the matcher worked at a fixed internal size, which quietly threw every match away. A test now pins it.

  • 6.15 m

    trusted leave-one-out error with 8 control points, one golden run

  • 4 sheets

    stitched into a 13,061 by 8,368 pixel canvas before matching

  • ~75 min

    for a cold job on one GPU; about 5 minutes to rematch after an operator moves a point

  • 5 m

    the most the optimiser will move an anchor a person placed

Internal measurements on one run. The in-sample residual is lower and is never quoted.

04 · Engine research · Atlas · 2025 to 2026

Zero-shot segmentation and labelling

Can fields be drawn and change be named without training a segmentation network?

season compositeNDVI, May, July, SeptemberSAM2, frozenprompted on vegetationgraph segmentationclassical, beside itfieldsdrawn from what grewk-meanson each season curvegroups by behaviournot crop labels
Figure 6. Fields without a parcel map. A frozen SAM2 model, prompted on vegetation imagery, and a classical graph segmentation run side by side. Fields are grouped by their season curves; names come later, from CLIP, with one result reserved per class. Chips are real public Sentinel-2 crops from the agriculture scene on this site.

Frozen SAM2 and CLIP models, used as they are, with rules around them where they fail. Prompted on vegetation imagery, SAM2 drew field shapes with a median IoU of 0.562 against a published baseline at 0.086. A graph segmentation beside it recovered 90% of field boundaries.

Labelling needed fixing. On an arid mine, pit benches matched the built-up class, so low-colour masks are now tested by chroma and sent to bare soil. Ranking change by confidence times area filled one summary with a single class, so one result per class is now reserved before the rest fill by score.

  • 0.562

    median field IoU, 6.5 times the published baseline

  • 0.901

    boundary recall from the graph segmentation

  • 0.809

    overall accuracy for seven crop classes, kappa 0.755, spatial cross-validation on 136 fields

Crop accuracy comes from a separate classifier on season features, validated by holding out whole areas.

Research · Next step

Working on something close to this?

I am happy to talk through methods, negative results included.