I've tried motioneye, zoneminder, shinobi cctv, blue iris, and frigate NVR.
I couldn't get motioneye to work, but I'll blame on me being a noob (especially at the time).
Zoneminder was stable but the UI is a bit weak and it doesn't have person detection to my knowledge. You can get around the UI by using homeassistant as a front end.
Shinobi cctv has the best UI, but I found it to be a buggy mess, person detection was difficult to implement, and it didn't play nice with homeassistant.
Blue iris is solid, but requires a license and windows. I have the least experience with it, but it seemed decent.
Ultimately, I landed on frigate NVR and it's my favorite so far. Its very solid/stable, has built in object/person detection with simple support for hardware acceleration, and UI is simple but passable. Personally, I use homeassistant as a front end for WAF, but the built in UI isn't bad and shows all your person detection events. Also, compared to all the above, configuration is done through a text file. While this may seem daunting at first, the manuals are very good and it becomes copy paste after the first camera (makes backups easy too).
For hardware, frigate has recommendations on their site. A cheap PC will do the job with ideally an Intel processor for hardware acceleration. For cameras, I've had the best luck with amcrest. Just make sure you throw whatever cameras you get on their own restricted vlan with no internet access. Feel free to reach out if you have any other questions.