728x90
파워 쉘에서 coco data를 이용하여 웹캠으로 화면을 잡을 시 밑에 사진과 같은 결과를 얻을 수 있다.
하지만 특정 class만 화면에 detection 하고 싶으면 image_opencv.cpp이라는 파일에서 draw_detections_cv_v3이라는 함수를 수정해주면 된다.
for (i = 0; i < num; ++i) {
char labelstr[4096] = { 0 };
int class_id = -1;
for (j = 0; j < classes; ++j) {
int show = strncmp(names[j], "dont_show", 9);
if (dets[i].prob[j] > thresh && show) {
if (class_id < 0) {
strcat(labelstr, names[j]);
class_id = j;
char buff[20];
if (dets[i].track_id) {
sprintf(buff, " (id: %d)", dets[i].track_id);
strcat(labelstr, buff);
}
sprintf(buff, " (%2.0f%%)", dets[i].prob[j] * 100);
strcat(labelstr, buff);
printf("%s: %.0f%% ", names[j], dets[i].prob[j] * 100);
if (dets[i].track_id) printf("(track = %d, sim = %f) ", dets[i].track_id, dets[i].sim);
}
else {
strcat(labelstr, ", ");
strcat(labelstr, names[j]);
printf(", %s: %.0f%% ", names[j], dets[i].prob[j] * 100);
}
}
}
if (class_id >= 0) {
int width = std::max(1.0f, show_img->rows * .002f);
위의 코드에서 if (class_id >= 0) { int width = std::max(1.0f, show_img->rows * .002f); 밑에 조건을 걸어주면 특정 class만 화면에서 detection 하는 것이 가능하다.
for (i = 0; i < num; ++i) {
char labelstr[4096] = { 0 };
int class_id = -1;
for (j = 0; j < classes; ++j) {
int show = strncmp(names[j], "dont_show", 9);
if (dets[i].prob[j] > thresh && show) {
if (class_id < 0) {
strcat(labelstr, names[j]);
class_id = j;
char buff[20];
if (dets[i].track_id) {
sprintf(buff, " (id: %d)", dets[i].track_id);
strcat(labelstr, buff);
}
sprintf(buff, " (%2.0f%%)", dets[i].prob[j] * 100);
strcat(labelstr, buff);
printf("%s: %.0f%% ", names[j], dets[i].prob[j] * 100);
if (dets[i].track_id) printf("(track = %d, sim = %f) ", dets[i].track_id, dets[i].sim);
}
else {
strcat(labelstr, ", ");
strcat(labelstr, names[j]);
printf(", %s: %.0f%% ", names[j], dets[i].prob[j] * 100);
}
}
}
if (class_id >= 0) {
int width = std::max(1.0f, show_img->rows * .002f);
if (strcmp(names[class_id], "person") != 0)
continue;
저의 경우는 coco data중에 person만 detection 되도록 설정을 하였다.
위의 이미지와 같이 person만 detection 된 것을 확인 할 수 있다. 위의 경우는 동영상이나 웹캠에서 사용할 수 있는 방법이고, 사진의 경우 image.c에서 위의 방법을 같이 수행하면 된다.
728x90
'인공지능 > 실습' 카테고리의 다른 글
[ubuntu] YOLOV4파일을 tflite형식으로 변환하기(convert YOLOV4 to tflite) (0) | 2020.10.22 |
---|---|
[ubuntu,yolo]이미지 라벨링을 위한 YOLO-mark설치(YOLO-mark installation for image labeling) (0) | 2020.10.22 |
[ubuntu] ubuntu에서 YOLOV4 설치(Install Yolo v4 on Ubuntu) (0) | 2020.10.22 |
yolo - v3 다크넷(darknet) 설치(윈도우 환경) (0) | 2020.09.02 |
[라즈베리파이,파이썬,yolov3,소켓] 사람 감지 시스템 (0) | 2020.09.01 |