I am using ArcPro 2.3, and need to create a point layer that is the location of trees. I have LiDAR that is classified as ground and not ground, and so from that I was able to create a DEM, DSM, and NDSM. When looking at the NDSM you can clearly see the clusters of high elevations (aka the top of trees) in red. But these trees are very large (west coast location) so the cluster of red/orange/yellow is likely one tree. I can't seem to figure out how to create the point layer of tree locations based off of any of the layers/LiDAR that I have.
Finding the treetop locations from your point cloud data is typically just one part of the larger process known as individual tree detection & segmentation. To accomplish this, you can use a moving window operation to find the local maxima from a canopy height model raster (your Normalized DSM). This will be less computationally intensive and based on my experience similarly accurate to operations that infer the treetop locations directly from the point cloud, though you may want to test this for yourself.
One example of how you can implement this method is using the Focal Statistics tool from the spatial analyst toolbox in ArcMAP or ArcPRO. Here are some other SE links you may find useful:
Aside: Personally I like to use R, specifically the package lidR to perform these kind of operations. There are several algorithms you can use for every part of the pipeline, from removing noise from the initial cloud, decimating the points to speed up processing, detecting ground points, normalization, tree segmentation, crown delineation, and more. The creator of the package, @JRR is also quite active on this site in case you decide to go this route and need some support, so feel free to reach out to the community here. Best of luck and welcome to GIS SE.