It's very rudimentary: smooth the canopy and find the local maxima above a base height. It's really just identifying the tallest points.
Here is the first pass, https://i.imgur.com/f7Gpxmm.png, it under counted and also even counted my house as a tree, lol.
> counted my house as a tree
Even the more sophisticated algorithms pretty much always do this ;-)
You are probably not interested in taking this further, but you could give the Li tree filter a try: https://pdal.org/en/stable/stages/filters.litree.html
But getting perfect segmentation is basically impossible.