[python]mac에서 opencv의 이미지 감지 (자기 데이터로)

동기



「Opencv쨩, mac의 내장 카메라로 얼굴 검출을 할 수 있는 것은 알았기 때문에 좋아하는 걸을 인식시켜 주거나… 참고로 잘 갔던 곳에서 비망록을 만들려고 생각하고 썼습니다.
※소요시간 30분 정도

개발 환경



· macOS High Sierra 버전 10.13.6
· 파이썬 3.6.4
・anaconda3 가상 환경(Navigator 사용했습니다)
· opencv-python

이번은 번역있어 이 패치를 인식하고 싶습니다.
adversarial patch
Adversarial Patch
htps //w w. 요츠베. 이 m/와 tch? v = 예 1sp4X57TL4

바로 해보자



OpenCV를 brew로 넣기



당신의 mac에 Home brew가 넣어 있는 전제로 해 갑니다.
$brew install opencv
$opencv_traincascade

치고

Usage: opencv_traincascade

라고 나오면 제대로 opencv가 인스톨 되고 있다고 생각된다(※나중에 사용합니다)

디렉토리 만들기



모든 디렉토리에 다음과 같이 각 폴더를 만듭니다.
ーpos(정답 이미지를 저장하는 폴더)
ーvec(정답 이미지 벡터 파일용 폴더)
-neg(부정해 이미지를 저장하는 폴더)
ーcascade/trained_data (분류기용 폴더)

이미지 배치



pos/안에 위의 이미지를 patch.jpg라는 이름으로 저장하고 정답 이미지 (이하 긍정 이미지)로 넣습니다.
pos/patch.jpg

neg/안에 부정해진 이미지(네거티브 이미지) 넣기
neg/100000.jpg
neg/100001.jpg
.....

부정적인 이미지는 패치가 아니라면 어떤 이미지라도 좋을 것입니다. (jpg1.tar.gz라고 녀석)
htp : /// 아 r. 인리아 lぺs. fr/~지우고/였다. php #호다 ys

Tar.gz의 압축 해제 명령으로 압축을 풀면
htps : // 코 m / 타카 츄 / ms / 4c f84 6935556204b2
위 그림과 같이 neg 아래에 배치하십시오.

벡터 데이터 만들기



단일 이미지에서 벡터 데이터를 만듭니다.

opencv_traincascade 명령을 사용하면 한 장의 이미지를 변형하여 수천 개 이상의 벡터 데이터를 만들 수 있습니다.
$opencv_createsamples -img ./pos/patch.jpg -vec ./vec/patch.vec -num 100 -bgcolor 255 -w 44 -h 44

네거티브 이미지 목록을 하나의 파일로 결합


$ls neg | xargs -I {} echo neg/{} > nglist.txt

실제로 분류기를 만들


$opencv_traincascade -data ./cascade/trained_data/ -vec ./vec/patch.vec -bg nglist.txt -numPos 100 -numNeg 100 -w 44 -h 44

그러면 cascade.xml이 만들어지고 cascade 분류자가됩니다.

mac의 카메라로 찍어 보자.



위 사이트의 코드
ーpos(정답 이미지를 저장하는 폴더)
ーvec(정답 이미지 벡터 파일용 폴더)
-neg(부정해 이미지를 저장하는 폴더)
ーcascade/trained_data (분류기용 폴더)
ーcapture.py

와 같이 배치하고 저장한다.

그 후.
# OpenCVに用意されている顔認識するためのxmlファイルのパス
cascade_path = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" 


# OpenCVに用意されている顔認識するためのxmlファイルのパス
cascade_path = "./cascade/trained_data/cascade.xml" 

그리고 다시 써
$python capture.py

에서 실행하면 mac의 내장 카메라로 이런 느낌으로 실시간으로 검출할 수 있다. (레이턴시 때문에 조금 어긋나 있습니다만)



그리고는 자신의 인식시키고 싶은 화상을 pos/에 넣어 학습시켜 보세요.
학습 매수가 100장씩뿐이므로 그다지 정밀도는 아니었습니다만, 좀 더 데이터를 늘려 해 보고 싶습니다.
시도한 결과 opencv_createsamples로 만들 수있는 100 장이 한계였습니다.

P.S.



기계 학습, 자동 운전 등을 메인으로 (가끔 그 이외도) 발신하고 있으므로 꼭 이 Qiita와 트위터 팔로우 부탁드립니다.

참고 사이트



피카츄 선배의 인식
htp://를 r 이렇게 t-엔기네 r. 코 m / py 텐 - 오펜 cv 또는 s 또는 /
물체 감지 – HaarLike 분류기 만들기 for mac
htp : //이 py 또는 t. 토키 / 코 py f 여 m / 543 /
htp : //이 py 또는 t. 토키 / 코 py-f m / 577 /

좋은 웹페이지 즐겨찾기