Rasterflow, Earth Intelligence & inference engine now in public preview Learn More

Yulin Naval Base in Satellite Imagery: AI-Assisted Vessel Counts

Authors

Commercial satellites collect imagery often, and it arrives ready to analyze within hours. The slow step in geospatial intelligence (GEOINT) is exploitation: an analyst finds, measures and compares the objects in each image. The report that comes out of it, called dissemination, goes out of date when the next image arrives. We ran six Vantor satellite images of Yulin Naval Base on Hainan through Wherobots RasterFlow and Meta’s SAM3 model, then checked every large detection by eye. The test shows what changes in exploitation and reporting when a text prompt finds the objects and the results go into a database table. It also shows which steps still need an analyst.

Key takeaways

  • Yulin Naval Base on Hainan is the center of China’s naval presence in the South China Sea, with China’s only base for ballistic-missile submarines and a pier for aircraft carriers.
  • We ran six Vantor images of two docking areas, taken on five dates from May 25 to June 8, 2026, through one pipeline in Wherobots.
  • WherobotsDB pan-sharpened the images, SAM3 on RasterFlow returned 902 outlines for the prompts “ship” and “boat”, and spatial SQL measured each one.
  • Of the 72 outlines 30 m or longer with a score of 0.5 or more, a review of each crop confirmed 37 vessels and found 20 piers.
  • A confidence score did not separate vessels from piers at this port, so the counts come from reviewed detections, joined to their verdicts in SQL.
  • Each new image becomes measured rows in a database. Analysts check a short list of detections and explain what changed.
Vantor multispectral browse image of a naval port on Hainan, June 3, 2026
Area 2, Yulin Naval Base, Hainan, June 3, 2026, 03:18 UTC. Image: Vantor.
Vantor multispectral browse image of a naval port on Hainan, June 4, 2026
Area 2, Yulin Naval Base, Hainan, June 4, 2026, 23:20 UTC. Image: Vantor.

Why Yulin Naval Base matters

Yulin Naval Base, on the southern tip of Hainan Island, is the center of China’s naval presence in the South China Sea. A Pentagon-commissioned analysis of open-source data, reported by The Washington Post in 2024, valued the infrastructure of the Greater Yulin Naval Base at more than $18 billion as of 2022. The same report says the eastern base holds China’s only base for ballistic-missile submarines, with a cave cut into a hillside to keep them out of sight of satellites. The Federation of American Scientists first showed one of those submarines at Yulin in a satellite image from 2008.

Large surface ships are based there too. Yulin has a pier for aircraft carriers, which let the navy station the carrier Shandong at the base, according to Defense News. The same report says most of China’s amphibious assault ships, built to land troops by boat or helicopter, are assigned to the fleet based there. China commissioned its newest carrier, the Fujian, at a naval port in Sanya on November 5, 2025.

The base also keeps changing. Satellite images from July 2022 showed two new piers under construction beside four existing ones, according to that report. Ships arrive and leave with deployments and exercises, so a count from one image goes out of date quickly. That makes Yulin a fair test for a pipeline that counts vessels on every new image.

Where time goes in imagery exploitation

Take one question through the usual process. A watch officer asks: “Has berthing activity at this naval port changed this week?” Berthing activity means the ships that dock at the port and leave it.

Ordering and collecting the imagery is now the easy part. Very-high-resolution (VHR) satellites such as Vantor’s record detail finer than 1 m, and Planet’s satellites image the same place every day. The picture often exists before anyone asks for it. Processing is fast too. Imagery arrives corrected for terrain and camera angle (orthorectified) within hours of reaching the ground.

Exploitation still depends on analysts. An analyst finds each vessel, measures it and compares it with the previous image. The work grows with every image: six images of two docking areas mean six sessions of an analyst studying the screen. The answer goes out as an annotated image and a paragraph. Collection is measured in hours, and exploitation in days. To show a week of change, the analyst repeats that work on every image and compares the results by hand.

One pipeline over six satellite images

We ran one pipeline, unchanged, over six images of two docking areas at Yulin Naval Base from Vantor, the company called Maxar Intelligence until October 2025. The two areas are neighboring stretches of waterfront, about 1.5 km and 2 km on a side; area 2 borders area 1 to the north. Area 1 was imaged on May 25, June 4, June 6 and June 8, 2026, and area 2 on June 3 and June 4. Dates are in UTC; local time on Hainan is eight hours ahead. Each delivery holds a panchromatic band at 0.39 to 0.61 m per pixel and eight multispectral bands at 1.5 to 2.4 m per pixel.

panchromatic and multispectral image
  → WherobotsDB raster SQL pan-sharpens it to color
  → RasterFlow builds one mosaic per image at 0.5 m
  → SAM3 returns outlines for the prompts "ship" and "boat"
  → spatial SQL removes duplicates and measures each outline
  → visual review of every outline 30 m or longer
  → results table, one row per object, by area and date

WherobotsDB raster functions combine the sharp panchromatic band with the red, green and blue bands (pan-sharpening). The result is a color image at the panchromatic detail. RasterFlow then turns each image into a mosaic at 0.5 m per pixel on the local UTM grid, a map projection that keeps distances accurate.

The detection model is Meta’s SAM3, run on RasterFlow’s managed GPUs (graphics processors, the chips that run AI models). SAM3 is not a ship model. It is a foundation model, trained on broad image data, that finds objects described in words. We typed “ship” and “boat”. For each object it found, SAM3 returned an outline placed on the map and a confidence score. Each image took 4 to 7 minutes on the GPUs. Pointing the model at other objects takes a new prompt and no new code.

Spatial SQL then measures every detection, the job an imagery analyst does by hand for each vessel (mensuration). The query converts each outline to meters on the UTM grid. It fits the smallest rectangle around each outline, at whatever angle the vessel is moored, and reads the length and width (beam) from it. When both prompts return the same vessel, it keeps the higher-scoring outline. Each detection becomes one row in a table, with its area, date, outline, length, width and score.

One query that counts the rows for each area and date answers the watch officer’s question. The count for every new image is ready to chart, compare or set an alert on as soon as the image is processed. No analyst has to write it down.

Vantor multispectral browse image of a naval port on Hainan, June 4, 2026
Area 1, Yulin Naval Base, Hainan, June 4, 2026, 23:20 UTC. Image: Vantor.
Vantor multispectral browse image of a naval port on Hainan, June 6, 2026
Area 1, Yulin Naval Base, Hainan, June 6, 2026, 03:16 UTC. Image: Vantor.

What the satellite images of Yulin Naval Base show

SAM3 returned 902 outlines across the six images. After duplicates were removed, 72 were 30 m or longer with a score of 0.5 or more. The visual review confirmed 37 of those 72 as vessels. Twenty were piers.

AreaDate (UTC)SAM3 outlines 30 m or longer, score 0.5 or moreConfirmed vesselsPiersPart of a vessel already countedOther
Area 1May 25118021
Area 1June 452111
Area 1June 6106130
Area 1June 873121
Area 2June 32010721
Area 2June 41981010
Total723720114
Confirmed vessels counts outlines; at area 2 on each date, one outline holds two vessels moored side by side. Other: three floating solar arrays and one stretch of shore. Source: Wherobots RasterFlow (SAM3) detections and WherobotsDB counts on Vantor imagery.

Each count is a snapshot of one image, not a log of arrivals and departures, so comparing dates is a change detection question. The images differ in light and weather. The May 25 and June 4 images were taken in the early morning local time (07:49 and 07:20), with the sun 22° and 15.7° above the horizon. The metadata for the June 8 image reports 27% cloud cover. At area 1, confirmed vessels went from 2 on June 4 to 6 on June 6 and 3 on June 8. That change could be ships arriving and leaving, or ships SAM3 missed in poorer light. Telling the two apart is the analyst’s question the pipeline sets up. At area 2, 17 of the 39 large outlines were piers. Long piers there carry rows of construction modules, and at 0.5 m per pixel SAM3 scored some of them as high as moored ships.

How we checked the output

Every step below ran in Wherobots, and each check is logged in the job runs, so the numbers in the table can be traced back to the images.

  1. Color images. For each pan-sharpened image, the job logged the pixel size, the count of valid pixels and the footprint. All six covered the same two areas, at 0.37 to 0.48 m per pixel.
  2. Model settings. SAM3 ran with the settings Wherobots publishes on the model’s card. We tested it on the June 6 image before running the other five.
  3. Duplicates and measurement. The “ship” and “boat” prompts often returned the same vessel. An outline was dropped when a higher-scoring outline covered more than half of it, which cut 902 outlines to 699. Each kept outline was measured with a rectangle turned to the vessel’s own angle, so pier deck beside an angled hull does not add to its length.
  4. A look at every image. We drew every measured rectangle 10 m or longer over all six images. Most sat on vessels. At area 2, several high-scoring rectangles covered a whole pier, sometimes with the ships moored along it.
  5. Two automatic pier filters, tested and dropped. Overture Maps, the open map data in the Wherobots catalog, has only two pier lines at this port and no pier areas, so it could not mask the piers. We then ran SAM3 with the prompts “pier” and “wharf” to map the piers from the imagery itself. That mask also covered ships: it would have removed a 99 m vessel in open water that scored 0.92. Neither filter was used.
  6. A visual review of every large outline. All 72 outlines 30 m or longer with a score of 0.5 or more were cut from the color images at full 0.5 m detail, with a 60 m margin. Each crop got one verdict: vessel, two vessels in one outline, part of a vessel already counted, pier, floating structure or shore. Claude, Anthropic’s AI assistant, made the 72 calls from the crops while preparing this post. Each verdict is stored with its outline, so an analyst can audit or change any of them and rerun the count.
  7. Counts from the database. The verdicts went back into WherobotsDB as a table, and the counts in the table above come from a SQL join of verdicts to outlines. A check confirmed that each of the 72 outlines has exactly one verdict.

The measurement and the count are short queries. This one measures every SAM3 outline in meters on the UTM zone 49N grid:

WITH m AS (
  SELECT scene_id, label, bbox_score,
         ST_Transform(geometry, 'EPSG:4326', 'EPSG:32649') AS g
  FROM detections
), r AS (
  SELECT *, ST_ExteriorRing(ST_OrientedEnvelope(g)) AS ring FROM m
), s AS (
  SELECT scene_id, label, bbox_score,
         ST_Distance(ST_PointN(ring, 1), ST_PointN(ring, 2)) AS s1,
         ST_Distance(ST_PointN(ring, 2), ST_PointN(ring, 3)) AS s2
  FROM r
)
SELECT scene_id, label, bbox_score,
       GREATEST(s1, s2) AS length_m, LEAST(s1, s2) AS beam_m
FROM s

This one joins the review verdicts to the outlines and returns the table above:

SELECT c.area, c.acquired, COUNT(*) AS candidates,
       SUM(CASE WHEN v.verdict IN ('vessel', 'merged') THEN 1 ELSE 0 END) AS vessels,
       SUM(CASE WHEN v.verdict = 'pier' THEN 1 ELSE 0 END) AS piers
FROM review_candidates c
JOIN verdicts v ON c.hid = v.hid
GROUP BY c.area, c.acquired
ORDER BY c.area, c.acquired
Overview of area 2 of the Yulin Naval Base on June 4, 2026, with SAM3 outlines 30 m or longer drawn in green for vessels, orange for piers and yellow for parts of vessels already counted. Most orange outlines lie along long piers that carry rows of construction modules
Area 2, June 4, 2026: every SAM3 outline 30 m or longer with a score of 0.5 or more, by review verdict. Green: vessel. Orange: pier. Yellow: part of a vessel already counted. Imagery: Vantor. Detections: Wherobots RasterFlow with SAM3. Counts: WherobotsDB.
Four review crops from area 2 on June 4, 2026: a single vessel, two vessels moored side by side in one outline, a pier with construction modules, and an outline covering part of a vessel
Review examples at full 0.5 m detail: a vessel, two vessels in one outline, a pier, and part of a vessel already counted. Imagery: Vantor. Detections: Wherobots RasterFlow with SAM3.

The review checks the outlines SAM3 returned. It does not find vessels SAM3 missed, and outlines under 30 m were not reviewed. The table therefore counts confirmed detections, which can be fewer than the vessels in port.

What changes at each stage of the cycle

In the usual process of satellite imagery analysis, detection produces marks on an image. Here it produces measured outlines stored as rows in a table.

Exploitation now costs computing time: the sixth image, or the six-hundredth, adds 4 to 7 minutes on the GPUs. Analyst time goes to the detections worth checking: here, 72 close-up crops in place of six full images. The pipeline ran as jobs on a small Wherobots runtime, and RasterFlow ran the model on its own GPUs. First-phase exploitation of every new image of every port of interest stops being a staffing decision.

Reporting becomes a query. No one builds and sends a report. The detections and review verdicts sit in open-format tables (Apache Iceberg). Map tools can display them, and SQL can query them. The Wherobots server for the Model Context Protocol (MCP), an open standard for connecting AI assistants to data, gives them access to the same tables. People can then ask in plain English, for example: “how many vessels were at area 1 on June 8?” The answer is computed from the detections. People get the answer when they need it, instead of waiting for a report to be published.

Analysts spend their time on judgment. The pipeline reports where the vessels are and how big they are. What they are doing stays the analyst’s call. The analyst’s task used to be “review six images.” Now it is “check 72 detections, then explain why the count at area 1 changed between June 4 and June 8.” That is the question their training prepared them for.

A change used to reach a decision-maker after the image waited in an analyst’s queue. Now it arrives after one pipeline run and a short review. The five steps (tasking, collection, processing, exploitation and dissemination, known together as TCPED) stay separate. The two that ran at human speed now run mostly on computers. So the time from one detection run to the next decision about what to image gets shorter.

Combining sources with a spatial join

Each detection is a row in a spatial database, so it can be combined with other data (fusion) as soon as it is saved. Each row holds an outline, a time, a measured length and width, and a confidence score. The same database can hold every other source an intelligence team uses.

Vantor multispectral browse image of a naval port on Hainan, June 8, 2026
Area 1, Yulin Naval Base, Hainan, June 8, 2026, 05:45 UTC. Image: Vantor.

Combining sources becomes a query:

  • Different satellites and resolutions. A common pattern is called tip and cue. A satellite that images wide areas daily, such as Planet’s at about 3 m per pixel, shows activity. A sharper satellite, such as Vantor’s, confirms it. When both write to the same table with the same columns, “what did the sharper image confirm about yesterday’s activity?” is one query that matches the table against itself by place and time.
  • Other sources. Ships broadcast their position and identity by radio, a system called AIS. A “dark” vessel is one seen in imagery with no matching AIS signal. Finding them means matching detections to AIS tracks by distance (ST_DWithin) and time, in the same SQL used for the measurements. Radar (SAR) detections, maps of port facilities and lists of known military units (order of battle) match on place and time the same way.
  • Base maps. Open map data such as Overture Maps (coastlines, facilities, administrative areas) is already in the Wherobots catalog. So “detections inside the naval base boundary” is one filter, where the map data covers the place. At Yulin it maps only two pier lines, which is why the pier filter above came from a visual review.

This test used optical imagery only and did not run these matches. When every source lands as measured shapes in one planetary-scale spatial database, each pair of sources no longer needs its own system. A new source is one more table in the query.

Limits of the workflow

A SAM3 confidence score ranks how closely an object matches the prompt. It does not say what type of vessel the object is. At this port, a score of 0.5 or more did not separate vessels from piers: 20 of the 72 large outlines were piers. Some outlines hold two vessels moored side by side, and some cover only part of a vessel. Vessels SAM3 missed are not counted, because no second source was checked. Prompts and score cutoffs need tuning for each port and satellite. Analysts still decide what a change means. The pipeline gives them detections from every new image, sooner, and a short list to check.

What the test shows

In GEOINT, analyzing images has been slower than collecting them for years. This test shows that the first look at each image, and the report, can now keep up with collection. A text prompt pointed the detection model at vessels. The model ran on managed GPUs and turned images into outlines. The results became time-stamped rows that can be queried, checked and matched with other data.

The test covered six images of two areas of one port over two weeks, all processed by one pipeline. A question that used to wait in an analyst’s queue is now a SQL query that anyone cleared to ask it can run, plus a review of the detections that need a person’s judgment.

Built on Wherobots: RasterFlow (SAM3 detection from text prompts on managed GPUs) and WherobotsDB / Apache Sedona spatial SQL and raster functions (pan-sharpening, measurement and counts). Imagery: Vantor very-high-resolution panchromatic and multispectral, processed in Wherobots Cloud.

Frequently Asked Questions

Where is Yulin Naval Base?

On the southern tip of Hainan Island in China, on the edge of the South China Sea (Defense News, 2022). The naval complex lies east of the city of Sanya (Defense News, 2021).

What is based at Yulin Naval Base?

Submarines and large surface ships. The Washington Post reported in 2024 that the eastern base holds China’s only base for ballistic-missile submarines. Defense News reported in 2022 that a carrier pier let the navy station the carrier Shandong there. The same report says most of China’s amphibious assault ships are assigned to the fleet based there.

How do you count ships in satellite imagery?

In this test: SAM3 on RasterFlow returned an outline for each object matching the prompts “ship” and “boat”. Spatial SQL removed duplicates and measured each outline with a rectangle at the vessel’s angle. Every outline 30 m or longer with a score of 0.5 or more was reviewed on a close-up crop. A SQL join then counted the confirmed vessels for each area and date.

Can AI tell what type of warship is in a satellite image?

Not in this pipeline. A SAM3 score ranks how closely an object matches a prompt such as “ship”. It does not give a vessel class. At Yulin, 20 of the 72 large outlines with a score of 0.5 or more were piers. Naming the type of each vessel stays with the analyst.

What is TCPED?

TCPED stands for tasking, collection, processing, exploitation and dissemination, the five steps that take an intelligence question from ordering an image to a finished report. This test speeds up exploitation and dissemination, the two steps that ran at human speed.

RELATED POSTS
VIEW MORE

RasterFlow is now available in Public Preview

RasterFlow makes planetary-scale earth intelligence workflows easy and costs predictable. We are excited to announce that RasterFlow is now in Public Preview, opening up the power of planetary scale Earth Intelligence to all Wherobots Professional Edition customers! RasterFlow let’s you solve complex monitoring challenges with vision-language models or tailored models for specific use cases, without […]

Wherobots for QGIS: Cloud-Scale Spatial Data, from Wherobots Labs

Wherobots for QGIS is a new plugin that connects QGIS to Wherobots Cloud. From a panel inside QGIS, an analyst can run spatial SQL against WherobotsDB, load the results as a map layer, push a local layer up to a Wherobots Iceberg table, and pull raster data into the canvas.  Why Wherobots for QGIS: Eliminating […]

How Wherobots builds with NVIDIA to let AI see the physical world

The world and what happens in it is digitized by petabytes of raw and derivative spatial datasets of various data types and scales, and the potential for applying AI to it is immense. But the AI models and agents we use every day need connectivity to tools that turn this data into usable insights and relationships. Wherobots gives AI the ability operate on and understand raw physical-world data, and NVIDIA GPUs are core to it. Architecturally here’s how this works at a high level.

El Niño 2026, atmospheric rivers, and California’s burn scars: one SQL engine, two data models

7,713 mapped building footprints sit inside or within 500 m (1,640 ft) of the 42 Eaton basins USGS rates high hazard for debris flows, and 388 km (241 mi) of mapped road and path cross the low ground below the scar. WherobotsDB finds both in SQL: a join to the USGS basins for the buildings, and a raster vector join over elevation for the roads.