CvDnn 으로 얼굴 감지하는데 4GB 메모리 pc에서 메모리 오류

“보호된 메모리를 읽거나 쓰려고 했습니다.
이것은 종종 다른 메모리가 손상되었음을 나타냅니다.”
이런 오류입니다.

전에는 HaarCascade, LbpCascade 로 얼굴감지하다가
인식률에 문제가 있어서 CvDnn으로 바꿔서
개발 끝내고 배포했더니 클라이언트 pc에서 오류가 발생합니다.
4GB RAM이라는 공통점이 있는 pc에서만…
모델파일도 바꿔봤는데 동일한 오류가 발생하네요
OpencvSharp4 버전도 최신이고

const string configFile = “weights.prototxt”;
const string faceModel = “res_ssd_300Dim.caffemodel”;

using var frame = Cv2.ImRead(@“c:\IdImage\IDImg.jpg”);
int frameHeight = frame.Rows;
int frameWidth = frame.Cols;
using var faceNet = CvDnn.ReadNetFromCaffe(configFile, faceModel);
using var blob = CvDnn.BlobFromImage(frame, 1.0, new OpenCvSharp.Size(300, 300), new Scalar(104, 117, 123), false, false);

faceNet?.SetInput(blob, “data”);

// 여기서 오류발생
using var detection = faceNet?.Forward(“detection_out”);

구글링해도 솔루션이 안나오네요.
tensorflow.net으로 바꿔볼까도 생각했는데
tensorflow.dll 파일용량이 200mb이라서 배포용량이 너무 커지고
혹시 같은 문제로 해결하신분의 도움이 필요합니다ㅠ

3 Likes

여러 방법 테스트결과 :
4GB RAM x64비트 운영체제에서 문제 발생
정확히는 4GB, 16GB, 32GB 에 x64비트 운영체제 테스트결과
4GB RAM pc에서만 오류발생.
해결방법 1. 빌드를 32bit로 하면 오류안남
해결방법 2. OpenCvSharp4 버전이 4.5, 4.6에서 오류안남(4.7에서만 발생)
2번 방법으로 다운그레이드 해서 배포해야겠습니다.

7 Likes

원인을 찾으셔서 다행이고 원인을 공유해주셔서 감사합니다.

6 Likes