ã¿ãªããããã«ã¡ã¯ã ããã¯Habréã«é¢ããç§ã®èšå¿µèšäºã§ãã ã»ãŒ7幎éã10件ã®èšäºïŒãã®èšäºãå«ãïŒãå·çããŸãããããã®ãã¡8件ã¯æè¡çãªãã®ã§ãã ãã¹ãŠã®èšäºã®ç·é²èŠ§æ°ã¯çŽ50äžã§ãã
PHPãšãµãŒããŒç®¡çã®2ã€ã®ããã«äž»ã«è²¢ç®ããŸããã ç§ã¯ããã2ã€ã®åéã®æ¥ç¹ã§ä»äºãããã®ã奜ãã§ãããç§ã®é¢å¿ã®ç¯å²ã¯ãã£ãšåºãã§ãã
å€ãã®éçºè
ãšåæ§ã«ãç§ã¯ãã°ãã°ä»ã®äººã®ä»äºã®çµæïŒHabréã®èšäºãgithubã®ã³ãŒããªã©ïŒã䜿çšããã®ã§ãããã«å¿ããŠã³ãã¥ããã£ãšçµæãå
±æã§ããããšãåžžã«å¬ããæã£ãŠããŸãã èšäºãæžãããšã¯ãã³ãã¥ããã£ãžã®åéã®è¿æžã§ããã ãã§ãªããå¿ãåãããã人ã
ãèŠã€ããçãåéã®å°é家ããã³ã¡ã³ããåŸãŠããã®åéã®ç¥èãããã«æ·±ããããšãã§ããŸãã
å®éããã®èšäºã¯ãããã®ãã€ã³ãã®1ã€ã«ã€ããŠã§ãã ãã®äžã§ãç§ã¯éå»6ãæéã«ã»ãšãã©ãã¹ãŠã®èªç±æéãéãããããšã説æããŸãã
éè·¯ãæž¡ã£ãŠæµ·ã«
æ³³ãã«è¡ã£ãç¬éã«å ããŠããã¬ãçªçµãèŠãããã²ãŒã ããããããŸããã

çŸåšããæ©æ¢°åŠç¿ãã¯éåžžã«çºå±ããŠãããHabrãå«ãå€ãã®èšäºãæžãããŠãããã»ãšãã©ãã¹ãŠã®éçºè
ãä»äºã®ã¿ã¹ã¯ãããŒã ãããžã§ã¯ãã§ããã䜿çšããŠäœ¿ãå§ããããšæã£ãŠããŸããåžžã«ã¯ãªã¢ã åå¿è
åãã®ã»ãšãã©ã®èšäºã«ã¯ã人çã足ããªããã®ãèªãããã®å€ãã®æåŠãè±èªã³ãŒã¹ïŒãããŠç§ãã¡å
šå¡ããã·ã¢èªã»ã©å¹æçã«è±èªãåŠã¶ããšãã§ããããã§ã¯ãããŸããïŒããå®äŸ¡ãªããã·ã¢èªã³ãŒã¹ãªã©ããããŸãã
ç¹å®ã®åé¡ã解決ããããã®æ°ããã¢ãããŒãã説æããæ°ããèšäºãå®æçã«è¡šç€ºãããŸãã githubã§ã¯ãèšäºã«èšèŒãããŠããã¢ãããŒãã®å®è£
ãèŠã€ããããšãã§ããŸãã ããäžè¬çã«ã¯ããã°ã©ãã³ã°èšèªãšããŠäœ¿çšãããŸãïŒc / c ++ãpython 2/3ãluaããã³matlabãããã³ãã¬ãŒã ã¯ãŒã¯ãšããŠïŒcaffeãtensorflowãtorchã 誰ããæžããŠãã-誰ãäœãããŠããã ããã°ã©ãã³ã°èšèªãšãã¬ãŒã ã¯ãŒã¯ã®å€§èŠæš¡ãªã»ã°ã¡ã³ãåã«ãããå¿
èŠãªãã®ãèŠã€ããŠãããžã§ã¯ãã«çµ±åããããã»ã¹ãéåžžã«è€éã«ãªããŸãã ãŸããæè¿ãäžåœèªã®ã³ã¡ã³ãä»ãã®å€ãã®ãœãŒã¹ã³ãŒãããããŸãã
opencvã®ãã®æ··ä¹±ããªããšãããŠæžããããã«ãã¡ã€ã³ãã¬ãŒã ã¯ãŒã¯ã§èšç·Žãããã¢ãã«ã䜿çšã§ãã
dnnã¢ãžã¥ãŒã«ãè¿œå ããŸãã ã ç§ã®åŽã§ã¯ããã®ã¢ãžã¥ãŒã«ãphpãã䜿çšããæ¹æ³ã瀺ããŸãã
How_standardsã¯multipliing.jpgã§ãããããæ°é
ãã®ããèªè
ã¯ããã«ãã®åçã«ã€ããŠèãã圌ã¯éšåçã«æ£ããã§ãããã

Jeremy Howard ïŒç¡æã®å®è·µã³ãŒã¹
ãã³ãŒããŒåãæ©æ¢°åŠç¿ãã®äœæè
ïŒã¯ãæ©æ¢°åŠç¿ã®åŠç¿ãšå®è·µã®éã«å€§ããªéçããããšèããŠããŸãã
ãã¯ãŒãã¯ã
1幎ã®ããã°ã©ãã³ã°çµéšã§æ©æ¢°åŠç¿ã®åŠç¿ãéå§ããã«
ã¯åå
ã ãšèšããŸãã ç§ã¯åœŒã«å®å
šã«åæããç§ã®èšäºãæ©æ¢°åŠç¿ã«æ
£ããŠããªãPHPéçºè
ã®opencvã«åå ããããã®ãããå€ãäžããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãããŸã 圌ãããããè¡ããã©ããããããªãããŸããã¹ãŠã®ãã€ã³ãã説æããããšããç§ã¯æ°æéãè²»ãããã®ã§ã1åãããããªãã£ãã
ããã§ã¯ãããŽä»¥å€ã«äœãããŸãããïŒ
ïŒopencvãçäœã§ç§ã蚎ããªãããšãé¡ã£ãŠããŸãïŒ
SWIGã䜿çšããŠèªåã§php-opencvã¢ãžã¥ãŒã«ãäœæããããšãæ€èšããããã«å€ãã®æéãè²»ãããŸããããäœãéæããŠããŸããã ç§ã¯c / c ++ãç¥ãããphp 7ã®æ¡åŒµæ©èœãæžããªãã£ããšããäºå®ã«ãã£ãŠè€éã«ãªããŸãããæ®å¿µãªããšã«ãphpæ¡åŒµæ©èœã«é¢ããã€ã³ã¿ãŒãããäžã®è³æã®ã»ãšãã©ã¯php 5çšã«æžãããŠããã®ã§ãå°ããã€æ
å ±ãåéããèªåã§åé¡ã解決ããªããã°ãªããŸããã§ããã
次ã«ãgithubã®æ¡åŒµã§
php-opencvã©ã€ãã©ãªãèŠã€ããŸãããããã¯ãopencvã¡ãœãããåŒã³åºãphp7ã®ã¢ãžã¥ãŒã«ã§ãã ãµã³ãã«ã®ã³ã³ãã€ã«ãã€ã³ã¹ããŒã«ãå®è¡ã«æ°æ¥ããããŸããã ãã®ã¢ãžã¥ãŒã«ã®ããŸããŸãªæ©èœãè©ŠããŠã¿ãŸããããããã€ãã®æ¹æ³ãæ¬ ããŠãããããèªåã§è¿œå ãããã«ãªã¯ãšã¹ããäœæããã©ã€ãã©ãªã®äœæè
ãæ¿èªããŸããã ãã®åŸãããã«å€ãã®æ©èœãè¿œå ããŸããã
ããããããã®æç¹ã§èªè
ã¯èªåã«è³ªåãããã§ãããïŒ
ãªãèè
ã¯ãã®ãããªåé¡ããŸã£ããå¿
èŠãšããªãã£ãã®ãããªãpythonãštensorflowã®äœ¿çšãéå§ã§ããªãã£ãã®ãïŒçãã 泚æãéå±ããèšãèš³ïŒäºå®ãç§ã¯æ©æ¢°åŠç¿ã®å°é家ã§ã¯ãããŸããããã®æ®µéã§ã¯ãç¹å®ã®çã課é¡ã解決ããç¬èªã®ã¢ãããŒããéçºããããšã¯ã§ããŸãããããã¯ç¹èš±äºé
ã§ãã ããšãã°ãåŠäœãæã€äžåœäºº5人ãããããŸããã圌ãã¯
mtcnnãéçºããmatlabãšcaffeã§å®è£
ãäœæããŸããã 次ã«ãä»ã®3人ã®äžåœäººããã®ã³ãŒããC ++ãšcaffeãPythonãšmxnetãPythonãšcaffeã«ç§»æ€ããŸããã ããããæ¢ã«æšæž¬ããããã«ãpythonãštensorflowã ããç¥ã£ãŠããããšã¯ããã»ã©é ããããŸããã äžåœèªã®ç°ãªããã¬ãŒã ã¯ãŒã¯ãšã³ã¡ã³ãã䜿çšããŠãç°ãªãèšèªã®ã³ãŒããåžžã«åŠçããå¿
èŠããããŸãã
å¥ã®äŸãšããŠã
opencvã®facemarkã䜿çšãããã£ãã®ã§ãããæ®å¿µãªããšã«ãèè
ã¯Pythonã§äœæ¥ãããšãã«ãã®ã¢ãžã¥ãŒã«ã®ãµããŒããè¿œå ããŸããã§ããã åæã«ãphpã«ãã§ã€ã¹ããŒã¯ãã€ã³ããŒãè¿œå ããã®ã«1æ©ããããŸããã
ãŸããããã€ãã®æ瀺ã«åŸã£ãŠãopenjsãnodejsã§åäœããããã«ã³ã³ãã€ã«ããããšããŸããããããŸããŸãªãšã©ãŒãçºçããçµæãéæã§ããŸããã§ããã
ã»ãšãã©ã®å Žåããã¹ãŠã®å°é£ã«ããããããããããè¡ãããšã«èå³ããããŸããã
äžè¬ã«ããããŸã§ã®ãšãããphpã§opencvã䜿çšããããšã«æºè¶³ããŠããŸãã
ããã¯ãç»åã®èªã¿èŸŒã¿ã®æ§åã§ãã
$image = cv\imread("images/faces.jpg");
æ¯èŒã®ããã«ãPythonã§ã¯æ¬¡ã®ããã«ãªããŸãã
image = cv2.imread("images/faces.jpg")
PHPïŒããã³c ++ïŒã§ç»åãèªã¿åãå Žåãæ
å ±ã¯Matãªããžã§ã¯ãïŒãããªãã¯ã¹ïŒã«ä¿åãããŸãã phpã§ã¯ããã®ã¢ããã°ã¯å€æ¬¡å
é
åã§ãããå€æ¬¡å
é
åãšã¯ç°ãªãããã®ãªããžã§ã¯ãã§ã¯ããã¹ãŠã®èŠçŽ ãæ°å€ã§é€ç®ãããªã©ãããŸããŸãªè¿
éãªæäœãå¯èœã§ãã pythonã§ã¯ãç»åãèªã¿èŸŒããšãnumpyãªããžã§ã¯ããè¿ãããŸãã
泚æã¬ã¬ã·ãŒïŒ imreadïŒphpãc ++ãããã³pytonïŒãRGB圢åŒã§ã¯ãªãBGRã§ç»åãããŒãããã®ã¯å¶ç¶ã®ããšã§ãã ãã®ãããopencvã®äŸã§ã¯ãå€ææé BGR-> RGBãèŠãããšãã§ãããã®éãåæ§ã§ãã
åçå
ã®é¡ãæ€çŽ¢ãã
ç§ãæåã«è©Šããã®ã¯ãã®æ©èœã§ãã
Opencvã«ã¯ã
CascadeClassifierã¯ã©ã¹ã
ãã ãäºåã«ãã¬ãŒãã³ã°ãããã¢ãã«ãxml圢åŒã§äœ¿çšã§ããŸãã é¡ãèŠã€ããåã«ãç»åãçœé»ã§ç¿»èš³ããããšããå§ãããŸãã
$src = imread("images/faces.jpg"); $gray = cvtColor($src, COLOR_BGR2GRAY); $faceClassifier = new CascadeClassifier(); $faceClassifier->load('models/lbpcascades/lbpcascade_frontalface.xml'); $faceClassifier->detectMultiScale($gray, $faces);
â
å®å
šãªãµã³ãã«ã³ãŒãçµæïŒ

äŸãããããããã«ããŸã³ãã®å粧ã®åçã§ãé¡ãèŠã€ããããšã¯åé¡ã§ã¯ãããŸããã ãŸããã¡ã¬ãã¯é¡ãèŠã€ããã®ã劚ããŸããã
åçã«åã£ãŠãã人ã®èªèïŒèªèïŒ
ãããè¡ãããã«ã
opencvã«ã¯
LBPHFaceRecognizerã¯ã©ã¹ãštrain /
predictã¡ãœããããããŸãã
åçã«èª°ãåã£ãŠããããç¥ãããå Žåãæåã«trainã¡ãœããã䜿çšããŠã¢ãã«ããã¬ãŒãã³ã°ããå¿
èŠããããŸãã2ã€ã®ãã©ã¡ãŒã¿ãŒãå¿
èŠã§ããé¡ç»åã®é
åãšãããã®ç»åã®æ°å€ããŒã¯ã®é
åã§ãã ãã®åŸããã¹ãã€ã¡ãŒãžïŒé¡ïŒã§predictã¡ãœãããåŒã³åºããããã«å¯Ÿå¿ããæ°å€ããŒã¯ãååŸã§ããŸãã
$faceRecognizer = LBPHFaceRecognizer::create(); $faceRecognizer->train($myFaces, $myLabels = [1,1,1,1]);
â
å®å
šãªãµã³ãã«ã³ãŒãé¡ã®ã»ããïŒ


çµæïŒ

LBPHFaceRecognizerã䜿ãå§ãããšããå®æããã¢ãã«ãä¿åãããŒããåãã¬ãŒãã³ã°ããæ©èœããããŸããã§ããã å®éãç§ã®æåã®pullrequestã¯ãããã®ã¡ãœãããè¿œå ããŸããïŒwrite / read / updateã
é¡ã®ã¿ã°ä»ã
opencvã䜿ãå§ãããšããç®ã錻ãåãªã©ãç¹ã§ããŒã¯ãããŠããé¡ã®åçãããç®ã«ããŸããã ç§ã¯ãã®å®éšãèªåã§ç¹°ãè¿ãããã£ãã®ã§ãããããã¯Pythonã®opencvããŒãžã§ã³ã§ã¯å®è£
ãããŠããŸããã§ããã
FacemarkLBFã®ãµããŒããphpã«è¿œå ãã2çªç®ã®ãã«ãªã¯ãšã¹ããéä¿¡ãã
ã®ã«å€æ¹ããããŸããã ãã¹ãŠãåçŽã«æ©èœããäºåã«èšç·Žãããã¢ãã«ãããŒãããå
¥åã«é¢ã®é
åãéä¿¡ããåé¢ã®ãã€ã³ãã®é
åãååŸããŸãã
$facemark = FacemarkLBF::create(); $facemark->loadModel('models/opencv-facemark-lbf/lbfmodel.yaml'); $facemark->fit($src, $faces, $landmarks);
â
å®å
šãªãµã³ãã«ã³ãŒãçµæïŒ

ãã®äŸãããããããã«ããŸã³ãã®æ§æã¯ãé¡ã®åºæºç¹ã®äœçœ®ãæªåãããå¯èœæ§ããããŸãã ã¡ã¬ããé¡ãéªéããããšããããŸãã ãã€ã©ã€ãã圱é¿ããŸãã ãã®å Žåãå£ã®äžã®ç°ç©ïŒã€ããŽãã¿ãã³ãªã©ïŒãå¹²æžããããšã¯ãããŸããã
æåã®ãã«ã¯ãšã¹ãã®åŸãç§ã¯ã€ã³ã¹ãã¬ãŒã·ã§ã³ãåããopencvã§ä»ã«äœãã§ããããèŠå§ã
ãçŸåšOpenCVã«ãããã£ãŒãã©ãŒãã³ã°ã®èšäºã«åºäŒããŸããã ããããããšãªããç§ã¯php-opencvã«ãã€ã³ã¿ãŒãããäžã§å®å
šãªäºååŠç¿æžã¿ã¢ãã«ã䜿çšããæ©èœãè¿œå ããããšã«ããŸããã Caffeã¢ãã«ãããŠã³ããŒãããã®ã¯ããã»ã©é£ãããªãããšãå€æããŸããããåŸã§å€æ¬¡å
è¡åã®æäœæ¹æ³ãç¿åŸããã®ã«å€ãã®æéãèŠããŸããããã®ååã¯c ++ã«ãªããopencvã®å
éšã調ã¹ã2ã€ç®ã¯Pythonã§ãCaffe / Torchã¢ãã«ãæäœããŸãã/ opencvã䜿çšããªããã³ãœã«ãããŒã
dnnã¢ãžã¥ãŒã«ã䜿çšããŠåçã®é¡ãæ€çŽ¢ãã
ãã®ããã
opencvã§ã¯ã
readNetFromCaffeé¢æ°ã䜿çšããŠãäºåã«ãã¬ãŒãã³ã°ãããã¢ãã«ãCaffeã«èªã¿èŸŒãããšãã§ããŸãã .prototxtãã¡ã€ã«ãš.caffemodelãã¡ã€ã«ãžã®ãã¹ãšãã2ã€ã®ãã©ã¡ãŒã¿ãŒãå¿
èŠã§ãã prototxtãã¡ã€ã«ã«ã¯ã¢ãã«ã®èª¬æãå«ãŸããcaffemodelã«ã¯ã¢ãã«ã®ãã¬ãŒãã³ã°äžã«èšç®ãããéã¿ãå«ãŸããŸãã
prototxtãã¡ã€ã«ã®å§ãŸãã®äŸã次ã«
瀺ããŸã ã
input: "data" input_shape { dim: 1 dim: 3 dim: 300 dim: 300 }
ãã¡ã€ã«ã®ãã®éšåã¯ã4次å
ã®1x3x300x300ãããªãã¯ã¹ãå
¥åããããšäºæ³ãããããšã説æããŠããŸãã ã¢ãã«ã®èª¬æã§ã¯ãéåžžããã®åœ¢åŒã§äºæ³ãããå
容ãèšè¿°ããŸãããã»ãšãã©ã®å Žåãããã¯300x300ãµã€ãºã®RGBã€ã¡ãŒãžïŒ3ãã£ã³ãã«ïŒãå
¥åããããšäºæ³ãããããšãæå³ããŸãã
é¢æ°imreadã䜿çšããŠ300x300 RGBã€ã¡ãŒãžãèªã¿èŸŒããšã300x300x3ãããªãã¯ã¹ãåŸãããŸãã
opencvã§300x300x3ãããªãã¯ã¹ã1x3x300x300ã«ããããã«ã
blobFromImageé¢æ°ããããŸãã
ãã®åŸã
setInputã¡ãœããã䜿çšããŠãããã¯ãŒã¯å
¥åã«blobãéä¿¡ãã
forwardã¡ãœãããåŒã³åºãã ãã§ãå®æããçµæãè¿ãããŸãã
$src = imread("images/faces.jpg"); $net = \CV\DNN\readNetFromCaffe('models/ssd/res10_300x300_ssd_deploy.prototxt', 'models/ssd/res10_300x300_ssd_iter_140000.caffemodel'); $blob = \CV\DNN\blobFromImage($src, $scalefactor = 1.0, $size = new Size(300, 300), $mean = new Scalar(104, 177, 123), $swapRB = true, $crop = false); $net->setInput($blob, ""); $result = $net->forward();
ãã®å Žåãçµæã¯1x1x200x7ãããªãã¯ã¹ãã€ãŸã å7èŠçŽ ã®200é
åã 4人ã®åçã§ããããã¯ãŒã¯ã¯200人ã®åè£è
ãèŠã€ããŸããã ãããã[ãã $ä¿¡é Œã$ startXã$ startYã$ endXã$ endY]ã®ããã«ãªããŸãã $ä¿¡é ŒèŠçŽ ã¯ããä¿¡é Œãã«è²¬ä»»ããããŸãã äºæž¬ã®ç¢ºçãæåããããšãããšãã°0.75ã 次ã®èŠçŽ ã¯ãé¢ãšé·æ¹åœ¢ã®åº§æšãæ
åœããŸãã ãã®äŸã§ã¯ã50ïŒ
ãè¶
ããä¿¡é ŒåºŠã§3人ããæ€åºããããæ®ãã®197人ã®åè£è
ã®ä¿¡é ŒåºŠã¯15ïŒ
æªæºã§ãã
ã¢ãã«ãµã€ãº10 MBã
å®å
šãªãµã³ãã«ã³ãŒã ã
çµæïŒ

äŸãããããããã«ããã¥ãŒã©ã«ãããã¯ãŒã¯ããé¡ã«ã䜿çšãããšãå¿
ãããè¯ãçµæãåŸããããšã¯éããŸããã 4人ç®ã®äººç©ã¯èŠã€ãããŸããã§ããã4æç®ã®åçãåãåãããããã¯ãŒã¯ã«åå¥ã«éä¿¡ãããšãé¡ãèŠã€ãããŸãã
ãã¥ãŒã©ã«ãããã¯ãŒã¯ã䜿çšããç»è³ªã®æ¹å
ç§ã¯é·ãé
waifu2xã©ã€ãã©ãªã«ã€ããŠèããŠã
ãŸãã ãããã«ããããã€ãºãé€å»ããã¢ã€ã³ã³/åçã®ãµã€ãºã倧ããããããšãã§ããŸãã ã©ã€ãã©ãªèªäœã¯luaã§èšè¿°ãããŠããããã³ãããã®äžã§ã¯ãããŒãã§ãã¬ãŒãã³ã°ãããããã€ãã®ã¢ãã«ïŒã¢ã€ã³ã³ã®æ¡å€§ããã©ããã€ãºã®é€å»ãªã©ïŒã䜿çšããŠããŸãã ã©ã€ãã©ãªã®äœæè
ã¯ãããã®ã¢ãã«ãcaffeã«ãšã¯ã¹ããŒãããopencvããã®äœ¿çšãæ¯æŽããŸããã ãã®çµæãã¢ã€ã³ã³ã®è§£å床ãäžããããã«phpã§ãµã³ãã«ãäœæãããŸããã
ã¢ãã«ãµã€ãº2 MBã
å®å
šãªãµã³ãã«ã³ãŒã ã
ãªãªãžãã«ïŒ

çµæïŒ

ãã¥ãŒã©ã«ãããã¯ãŒã¯ã䜿çšããã«ç»åãæ¡å€§ããïŒ

ç»ååé¡
ImageNetããŒã¿ã»ããã§ãã¬ãŒãã³ã°ããã
MobileNetãã¥ãŒã©ã«ãããã¯ãŒã¯ã䜿çšãããšãç»åãåé¡ã§ããŸãã åèšã§
1000åã®ã¯ã©ã¹ãå®çŸ©ã§ããŸãããç§ã®æèŠã§ã¯ããã§ååã§ãã
ã¢ãã«ãµã€ãº16 MBã
å®å
šãªãµã³ãã«ã³ãŒã ã
ãªãªãžãã«ïŒ

çµæïŒ
87ïŒ
-ãšãžããç«ã4ïŒ
-ãã©ããã©ç«ã2ïŒ
-ãã©ç«
Tensorflowãªããžã§ã¯ãæ€åºAPI
COCOããŒã¿ã»ããã§
Tensorflowã§ãã¬ãŒãã³ã°ãããMobileNet SSDïŒã·ã³ã°ã«ã·ã§ãããã«ãããã¯ã¹ãã£ãã¯ã¿ãŒïŒãã¥ãŒã©ã«ãããã¯ãŒã¯ã¯ãç»åãåé¡ã§ããã ãã§ãªãã
182ã®ã¯ã©ã¹ã®ã¿ãç»åãå€å¥ã§ã
ãŸãããé åãè¿ãããšãã§ããŸãã
ã¢ãã«ãµã€ãº19 MBã
å®å
šãªãµã³ãã«ã³ãŒã ã
ãªãªãžãã«ïŒ

çµæïŒ

æ§æã®åŒ·èª¿è¡šç€ºãšã³ãŒãè£å®
ãŸãã
phpdoc.phpãã¡ã€ã«ã
ãªããžããªäŸã«è¿œå ããŸããã 圌ã®ãããã§ãPhpstormã¯é¢æ°ãã¯ã©ã¹ãããã³ãããã®ã¡ãœããã®æ§æãããã³ã³ãŒãè£å®ã匷調ããŠããŸãã ãã®ãã¡ã€ã«ãã³ãŒãã«å«ããå¿
èŠã¯ãããŸããïŒããããªããšããšã©ãŒãçºçããŸãïŒããããžã§ã¯ãã«å
¥ããã ãã§ååã§ãã å人çã«ã¯ãç§ã®ç掻ã楜ã«ãªããŸãã ãã®ãã¡ã€ã«ã¯opencvã®ã»ãšãã©ã®æ©èœã説æããŠããŸããããã¹ãŠã§ã¯ãããŸããã®ã§ããã«ãªã¯ãšã¹ããæè¿ããŸãã
èšçœ®
dnnã¢ãžã¥ãŒã«ã¯ãããŒãžã§ã³
3.4ã§ã®ã¿
opencvã«ç»å ŽããŸããïŒãã以åã¯opencv-contribã«ãããŸããïŒã
ubuntu 18.04ã§ã¯ãopencvã®ææ°ããŒãžã§ã³ã¯
3.2ã§ãã ãœãŒã¹ããopencvããã«ãããã«ã¯çŽ30åããããŸãããã®ãããubuntu 18.04ïŒ17.10ã§åäœããµã€ãº25MBïŒã®ããã±ãŒãžãã³ã³ãã€ã«ããphp 7.2ïŒubuntu 18.04ïŒããã³php 7.1ïŒubuntu 17.10ïŒïŒãµã€ãº100KBïŒã
ppaïŒphp-opencvãç»é²ããŸãããããŸã å¡ãã€ã¶ãããã¹ã¿ãŒããŠãããã
ããã±ãŒãžãgithubã«ã¢ããããŒããã以äžã®è¯ããã®ã¯èŠã€ãããŸããã§ããã ãŸããpeclã§ã¢ã«ãŠã³ããäœæãããªã¯ãšã¹ããäœæããŸããããæ°ãæåŸã«å¿çããããŸããã§ããã
ãããã£ãŠãubuntu 18.04ã§ã®ã€ã³ã¹ããŒã«ã¯æ¬¡ã®ããã«ãªããŸãã
apt update && apt install -y wget && \ wget https://raw.githubusercontent.com/php-opencv/php-opencv-packages/master/opencv_3.4_amd64.deb && dpkg -i opencv_3.4_amd64.deb && rm opencv_3.4_amd64.deb && \ wget https://raw.githubusercontent.com/php-opencv/php-opencv-packages/master/php-opencv_7.2-3.4_amd64.deb && dpkg -i php-opencv_7.2-3.4_amd64.deb && rm php-opencv_7.2-3.4_amd64.deb && \ echo "extension=opencv.so" > /etc/php/7.2/cli/conf.d/opencv.ini
ãã®ãªãã·ã§ã³ã䜿çšããã€ã³ã¹ããŒã«ã«ã¯çŽ1åããããŸãã
ubuntuã®ãã¹ãŠã®ã€ã³ã¹ããŒã«ãªãã·ã§ã³ ã
ãŸã
ã168 MBã®dockerã€ã¡ãŒãžãäœæããŸãã ã
äŸã䜿çšãã
ããŠã³ããŒãïŒ
git clone https://github.com/php-opencv/php-opencv-examples.git && cd php-opencv-examples
æã¡äžãïŒ
php detect_face_by_dnn_ssd.php
PS
èå³ã®ãããã¹ãŠã®äººã«ãèšäºã®åŸã«æ祚ã«çããŠãããã次ã®èšäºãèŠéããªãããã«ç»é²ããŠãã ãããã³ã¡ã³ããæžããŠè³ªåãæžããŠãããããã«åæ©ä»ããæ°ããå®éš/èšäºã®ãªãã·ã§ã³ãææ¡ããŠãã ããã
äŒçµ±çã«ãç§ã¯HabrããœãŒã·ã£ã«ãããã¯ãŒã¯ã®å人çãªã¡ãã»ãŒãžãéããŠå©èšãæ¯æŽãããªããšèŠåããŠããŸãã
githubïŒãã·ã¢èªã§å©çšå¯èœïŒã§Issueãäœæããããšã«ããããã€ã§ã質åãããããšãã§ããŸãã
è¬èŸïŒgithubã§ç°¡åã«åç
ã§ããdkurt ã
arrybnã®èšäºããã£ãŒãã©ãŒãã³ã°ãçŸåšOpenCVã§ã
åç
§ïŒâ
php-opencv-examples-èšäºã®ãã¹ãŠã®äŸ
â
php-opencv / php- opencv
- dnnã¢ãžã¥ãŒã«ããµããŒãããç§ã®ãã©ãŒã¯
â
hihozhou / php-opencv- dnnã¢ãžã¥ãŒã«ããµããŒãããªãå
ã®ãªããžããªïŒpullrequestãäœæããŸãããããŸã åãå
¥ããããŠããŸããïŒã
â
èšäºã®è±èªãžã®ç¿»èš³ -ã€ã®ãªã¹äººãšã¢ã¡ãªã«äººã¯è±èªã®ééãããã人ã«éåžžã«å¿è匷ããšèããŸãããããã¹ãŠã«ååé
ãããããã®ã©ã€ã³ãè¶ããããã«æããŸã:) åãããšã
redditã«ãåœãŠã¯ãŸããŸãã