1.手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)
2.RewriteçRewriteä»ç»
手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)
手部关键点检测第二部分:使用YOLOv5进行手部检测(附带训练代码和数据集)
本篇将专注于手部检测模型的源码开发,采用自上而下的源码方法,分为两阶段:首先进行手部检测,源码然后估计手部关键点。源码所采用的源码框架是基于开源的YOLOv5项目。
项目成果包括一个精度高达mAP_0.5=0.,源码氓flash动画源码mAP_0.5:0.=0.的源码手部检测模型,以及轻量化版本的源码yolov5s_和yolov5s_模型,均适用于普通Android手机,源码CPU(4线程)约ms左右,源码GPU约ms左右。源码
手部检测结果和手部关键点检测效果已经展示,源码并提供了Android手部关键点检测APP的源码ai应用获取源码下载链接。
1.1 手部检测数据集说明
收集了三个手部检测数据集:Hand-voc1,源码Hand-voc2和Hand-voc3,源码总共有+张,标注格式统一为VOC数据格式,便于深度学习手部目标检测模型算法开发。
1.2 自定义数据集
如果需要调整数据集进行训练,区块链源码可控或自定义数据集,可以参考相应步骤。
2. 基于YOLOv5的手部检测模型训练
训练Pipeline基于YOLOv5进行,使用GitHub上的YOLOv5项目,需要将原始数据集转换为YOLO的格式。项目代码已在Ubuntu和Windows系统上验证,plc程序转换源码确保无误。
训练数据准备、配置数据文件、模型文件,选择轻量化的yolov5s模型,该模型计算量减少了倍,双ci指标源码参数量减少了7倍,适应手机端性能。
训练过程可视化使用Tensorboard,训练结果输出包括各种性能指标。
3. Python版本手部检测效果展示
项目提供demo.py文件用于测试模型效果,兼容Windows系统。展示手部检测结果。
4. 提升模型性能的建议
通过调整数据集、参数配置,可进一步提高模型性能。
5. 手部检测与手部关键点检测
项目已实现Android版本的手部检测与关键点检测,应用在普通Android手机上达到实时效果,满足业务性能需求。
6. 项目源码下载
项目包含手部检测数据集、训练代码和测试代码,支持Android应用开发。
完成的手部检测与关键点检测,可应用于多种场景,提供高性能、实时的手部检测解决方案。
RewriteçRewriteä»ç»
å¾å¤æ åµä¸ï¼æ个 IP ç访é®å¾å®¹æé æ CPU % ï¼æ¯å¦ æäºæç´¢å¼æçåºå®æåï¼å«äººå¤§éçééç«ç¹ï¼ï¼è¿ä¸ªæ¶åæ们就è¦å©ç¨ä¸äºææçæ段å°æ对æ¹ç IPï¼è®©ä»æ æ³æ¶èæå¡å¨çèµæºï¼å° IP çæ¹æ³æå¾å¤ç§ï¼å¦æä½ ç Web æå¡å¨å®è£ äº Rewrite 模åçè¯ï¼ä¹å¯ä»¥è¯è¯å©ç¨ Rewrite è§åå°æ对æ¹ç IPãä¾å¦æ们ææ个ç¹å®ç IP ç´æ¥éå®åå° baidu é¦é¡µï¼å¨ç½ç«æ ¹ç®å½ç .htaccess æ件éæ·»å 代ç ï¼
Codeï¼
RewriteCond % ... [NC]
RewriteRule ^(.*)$ /$1 [R=]
å° ... è¿ä¸ª IP æ¿æ¢ææ¨è¦éå¶ç IP å³å¯ãå¦æè¦å®ç°å¤ä¸ª IP ï¼å¯ä»¥è¿æ ·åï¼
RewriteCond % ... [OR]
RewriteCond % ... [NC]
RewriteRule ^(.*)$ /$1 [R=] Rewrite主è¦çåè½å°±æ¯å®ç°URLçéåãå®çæ£å表达å¼æ¯åºäºPerlè¯è¨ï¼å ¥ç«çè§åç¨äºä¿®æ¹ HTTP è¯·æ± Urlãè¿äºè§åå¯ä»¥ä¸ºä»¥ä¸å 个ç®çï¼å¦æ¼ç¤ºå¯¹ç¨æ·æ´å å好ç URL å½å空é´ä¸ºæ¨ç Web ç«ç¹ï¼å°è¯·æ±ç Url éå®åå°æ°ä½ç½®ï¼æé»æ¢è®¿é® Url æ¥æä¾æå¡ãåºç«çéåè§åä¿®æ¹ HTTP ååºãä¾å¦ï¼å¦ææ¨ç Web ç«ç¹ç导èªç»æå·²æ´æ¹ï¼æ¨å¯ä»¥å建修æ¹æ¨çå 容ä¸ç Urlï¼ä»¥ä¾¿å° Web 页çå 容æåæ£ç¡®çä½ç½®åºç«è§åãç¶åï¼æ¨å¯ä»¥å建åºäºç¼åçä½ç½®ä¸æ°ç url ç客æ·ç«¯è¯·æ±éå®åçå ¥ç«çè§åãå¯åºäºæå¡å¨çº§ç(/ æ¥å¦ä¹ ï¼è¿éæ们举ä¸ä¸ªç®åçä¾åæ¥è¯´æå®çç¨æ³ã
å设æ¨è¦å®ç°è¿æ ·ç Rewrite åè½ï¼æ¨å¸æå½ç¨æ·è®¿é® /about.htm ï¼æ¨ç空é´éå¯ä»¥å¹¶ä¸éè¦åå¨ about.htmï¼çæ¶åå®é 访é®çæ¯ /index.html ã
设置æ¹æ³æ¯ï¼
1ãå建ä¸ä¸ªææ¬æ件ï¼å 容为
[ISAPI_Rewrite]
RewriteRule /about\.htm /index\.html
è¿éï¼RewriteRule è¿ä¸è¡å³ä¸ºè§åè¡ï¼è¿ä¸è¡ç±ä¸é¨åç»æï¼ä¸é¨åç±ç©ºæ ¼éå¼ï¼ç¬¬ä¸é¨åå³ RewriteRule è¿å 个åï¼ç¬¬äºé¨å为ç¨æ·è®¿é®çå°åï¼ä½¿ç¨æ£å表达å¼ï¼ï¼ç¬¬ä¸é¨å为å®é åå¨äºæå¡å¨ä¸çæ件路å¾ã
2ãå°ä¸è¿°æ件ä¿åï¼å½å为 å www.name2.com ï¼æ们å®ç°è®©è®¿é® www.name1.com æ¶çå°çæ¯ç½ç«æ ¹ä¸çå 容ï¼èè®¿é® www.name2.com æ¶çå°çæ¯ /name2/ æ件夹ä¸çå 容ã
é£ä¹è®¾ç½®æ¥éª¤å¦ä¸ï¼
1ãå°æ¨çç½ç«æç»åå www.name1.com å www.name2.com ï¼è¿ä¸ªé常éè¦ï¼ä¸¤ä¸ªååé½è¦æç»ãè¿æ¶åå¦æä¸å设置ï¼ä¸¤ä¸ªåå访é®çé½æ¯ç½ç«æ ¹ä¸ã
2ãä¿®æ¹ä¸è¿°é®é¢ä¸ä¸ç
# 表示ä¸ä¸è¡è§ååªå¯¹ www.name2.com çæï¼æ£å表达å¼ä¸ \. 表示 . æ¬èº«ï¼ã
RewriteRule ^(.*)$ /name2/$1 [I]
# 表示å°ææç½é¡µ Rewrite å° name2 æ件夹ä¸ï¼[I]表示忽ç¥å¤§å°åã
请确认ä¸è¿°å 容ä½äº [ISAPI_Rewrite] è¡ä¹ä¸ï¼å¦æåæ¬ç½ç«ä¸åå¨ httpd.ini æ件ï¼è¯·å°ä¸è¿°å 容åé¢å ä¸ [ISAPI_Rewrite] ã
3ãå°ä¿®æ¹åç httpd.ini ä¸ä¼ å°ç½ç«æ ¹ä¸è¦çåæ件ã
éè¿è¿ä¸ªæ¹æ³ï¼æ¨å¯ä»¥å°æç»å¨ç½ç«ä¸çä»»ä½ä¸ä¸ªååéç¨ä»»ä½ç¹å®ç Rewirte è§åï¼å®ç°ç±»ä¼¼æç»åç®å½çåè½å½ç¶ä¹æ¯ä¸å¨è¯ä¸ãè¿æ ·ï¼æ¨ç空é´è½æç»å¤å°ä¸ªååï¼æ¨å°±å¯ä»¥å»ºç«å¤å°ä¸ªå 容ä¸åçç½ç«äºã ngx_http_rewrite_module模åå 许æ£åæ¿æ¢URIï¼è¿å页é¢éå®åï¼åææ¡ä»¶éæ©é ç½®ã
ngx_http_rewrite_module模åæ令æ以ä¸é¡ºåºå¤çï¼ å¤çå¨server级å«ä¸å®ä¹ç模åæä»¤ï¼ ä¸ºè¯·æ±æ¥æ¾locationï¼ å¤çå¨éä¸çlocationä¸å®ä¹ç模åæ令ãå¦ææ令æ¹åäºURIï¼ææ°çURIæ¥æ¾locationãè¿ä¸ªå¾ªç¯è³å¤éå¤æ¬¡ï¼ä¹ånginxè¿åé误 (Internal Server Error)ã æ令 è¯æ³:break;ããé»è®¤å¼:âä¸ä¸æ:server,location,ifããåæ¢å¤çå½åè¿ä¸è½®çngx_http_rewrite_moduleæ令éã
举ä¾ï¼
if ($slow) { limit_rate k; break;} è¯æ³:if(condition) { ... }ããé»è®¤å¼:âä¸ä¸æ:server,locationãã计ç®æå®çconditionçå¼ãå¦æ为çï¼æ§è¡å®ä¹å¨å¤§æ¬å·ä¸çrewrite模åæ令ï¼å¹¶å°ifæ令ä¸çé ç½®æå®ç»è¯·æ±ãifæ令ä¼ä»ä¸ä¸å±é ç½®ä¸ç»§æ¿é ç½®ã
æ¡ä»¶å¯ä»¥æ¯ä¸åä»»æä¸ç§ï¼ åéåï¼å¦æåéå¼ä¸ºç©ºæè æ¯ä»¥â0âå¼å§çå符串ï¼åæ¡ä»¶ä¸ºåï¼ ä½¿ç¨â=âåâ!=âè¿ç®ç¬¦æ¯è¾åéååç¬¦ä¸²ï¼ ä½¿ç¨â~âï¼å¤§å°åææï¼åâ~*âï¼å¤§å°åä¸ææï¼è¿ç®ç¬¦å¹é åéåæ£å表达å¼ãæ£å表达å¼å¯ä»¥å å«å¹é ç»ï¼å¹é ç»æåç»å¯ä»¥ä½¿ç¨åé$1..$9å¼ç¨ãå¦ææ£å表达å¼ä¸å å«å符â}âæè â;âï¼æ´ä¸ªè¡¨è¾¾å¼åºè¯¥è¢«å å«å¨åå¼å·æåå¼å·çå¼ç¨ä¸ã 使ç¨â-fâåâ!-fâè¿ç®ç¬¦æ£æ¥æ件æ¯å¦åå¨ï¼ 使ç¨â-dâåâ!-dâè¿ç®ç¬¦æ£æ¥ç®å½æ¯å¦åå¨ï¼ 使ç¨â-eâåâ!-eâè¿ç®ç¬¦æ£æ¥æ件ãç®å½æ符å·é¾æ¥æ¯å¦åå¨ï¼ 使ç¨â-xâåâ!-xâè¿ç®ç¬¦æ£æ¥å¯æ§è¡æä»¶ï¼ ä¸¾ä¾ï¼
if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break;}if ($http_cookie ~* id=([^;]+)(?:;|$)) { set $id $1;}if ($request_method = POST) { return ;}if ($slow) { limit_rate k;}if ($invalid_referer) { return ;}
å åµåé$invalid_refererçå¼æ¯éè¿valid_referersæ令设置çã è¯æ³:returncode[text];ããreturncodeURL;ããreturnURL;ããé»è®¤å¼:âä¸ä¸æ:server,location,ifããåæ¢å¤ç并è¿åæå®codeç»å®¢æ·ç«¯ãè¿åéæ åçç¶æç å¯ä»¥ç´æ¥å ³éè¿æ¥èä¸è¿åååºå¤´ã
ä»0.8.çå¼å§ï¼å¯ä»¥å¨æ令ä¸æå®éå®åçURLï¼ç¶æç 为ããåï¼ï¼æè æå®ååºä½ææ¬ï¼ç¶æç ä¸ºå ¶å®å¼ï¼ãååºä½ææ¬æéå®åURLä¸å¯ä»¥å å«åéãä½ä¸ºä¸ç§ç¹æ®æ åµï¼éå®åURLå¯ä»¥ç®å为å½åserverçæ¬å°URIï¼é£ä¹å®æ´çéå®åURLå°æç §è¯·æ±åè®®ï¼$schemeï¼ãserver_name_in_redirectæ令åport_in_redirectæ令çé ç½®è¿è¡è¡¥å ¨ã
å¦å¤ï¼ç¶æç 为ç临æ¶éå®å使ç¨çURLå¯ä»¥ä½ä¸ºæ令çå¯ä¸åæ°ã该åæ°åºè¯¥ä»¥âhttp://âãâhttps://âæè âhttps://âå¼å§ãURLä¸å¯ä»¥å å«åéã
0.7.çæ¬ä»¥ååªè½è¿åä¸é¢ç¶æç ï¼ ããâ ããããã å â ã
ç´å°1.1.å1.0.çï¼ç¶æç æ被认为æ¯ä¸ç§éå®åã è¯æ³:rewriteregexreplacement[flag];ããé»è®¤å¼:âä¸ä¸æ:server,location,ifããå¦ææå®çæ£å表达å¼è½å¹é URIï¼æ¤URIå°è¢«replacementåæ°å®ä¹çå符串æ¹åãrewriteæ令æå ¶å¨é ç½®æ件ä¸åºç°ç顺åºæ§è¡ãflagå¯ä»¥ç»æ¢åç»æ令çæ§è¡ãå¦æreplacementçå符串以âhttp://âæâhttps://âå¼å¤´ï¼nginxå°ç»ææ§è¡è¿ç¨ï¼å¹¶è¿åç»å®¢æ·ç«¯ä¸ä¸ªéå®åã
å¯éçflagåæ°å¯ä»¥æ¯å ¶ä¸ä¹ä¸ï¼ last åæ¢æ§è¡å½åè¿ä¸è½®çngx_http_rewrite_moduleæ令éï¼ç¶åæ¥æ¾å¹é æ¹ååURIçæ°locationï¼ break åæ¢æ§è¡å½åè¿ä¸è½®çngx_http_rewrite_moduleæ令éï¼ redirect å¨replacementå符串æªä»¥âhttp://âæâhttps://âå¼å¤´æ¶ï¼ä½¿ç¨è¿åç¶æç 为ç临æ¶éå®åï¼ permanent è¿åç¶æç 为çæ°¸ä¹ éå®åã å®æ´çéå®åURLå°æç §è¯·æ±åè®®ï¼$schemeï¼ãserver_name_in_redirectæ令åport_in_redirectæ令çé ç½®è¿è¡è¡¥å ¨ã
举ä¾ï¼
server { ... rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last; return ; ...}
ä½æ¯å½ä¸è¿°æ令åå¨â/download/âçlocationä¸æ¶ï¼åºä½¿ç¨æ å¿break代æ¿lastï¼å¦ånginxä¼éå¤è½®å¾ªç¯ï¼ç¶åè¿åé误ï¼
location /download/ { rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break; return ;}
å¦æreplacementå符串å æ¬æ°ç请æ±åæ°ï¼ä»¥å¾ç请æ±åæ°ä¼æ·»å å°æ°åæ°åé¢ãå¦æä¸å¸æè¿æ ·ï¼å¨replacementå符串æ«å°¾å ä¸ä¸ªé®å·âï¼âï¼å°±å¯ä»¥é¿å ï¼æ¯å¦ï¼
rewrite ^/users/(.*)$ /show?user=$1? last;
å¦ææ£å表达å¼ä¸å å«å符â}âæè â;âï¼æ´ä¸ªè¡¨è¾¾å¼åºè¯¥è¢«å å«å¨åå¼å·æåå¼å·çå¼ç¨ä¸ã è¯æ³:rewrite_logon|off;ããé»è®¤å¼:rewrite_log off;ä¸ä¸æ:http,server,location,ifããå¼å¯æè å ³éå°ngx_http_rewrite_module模åæ令çå¤çæ¥å¿ä»¥notice级å«è®°å½å°é误æ¥å¿ä¸ã è¯æ³:setvariablevalue;ããé»è®¤å¼:âä¸ä¸æ:server,location,ifãã为æå®åévariable设置åéå¼valueãvalueå¯ä»¥å å«ææ¬ãåéæè å®ä»¬çç»åã è¯æ³:uninitialized_variable_warnon|off;ããé»è®¤å¼:uninitialized_variable_warn on;ä¸ä¸æ:http,server,location,ifããæ§å¶æ¯å¦è®°å½åéæªåå§åçè¦åå°æ¥å¿ã
å é¨å®ç°
ngx_http_rewrite_module模åçæ令å¨è§£æé ç½®é¶æ®µè¢«ç¼è¯ænginxå é¨æ令ãè¿äºå é¨æ令å¨å¤ç请æ±æ¶è¢«è§£éæ§è¡ãè解éå¨æ¯ä¸ä¸ªç®åçå æ æºå¨ã
æ¯å¦ï¼ä¸é¢æ令
location /download/ { if ($forbidden) { return ; } if ($slow) { limit_rate k; } rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;}
å°è¢«ç¿»è¯æä¸é¢è¿äºæ令ï¼
variable $forbiddencheck against zero return end of codevariable $slowcheck against zeromatch of regular expressioncopy /copy $1copy /mp3/copy $2copy .mp3end of regular expressionend of code
请注æ没æ对åºä¸é¢çlimit_rateæ令çå é¨æ令ï¼å 为è¿ä¸ªæ令ä¸ngx_http_rewrite_module模åæ å ³ãnginxä¼ä¸ºè¿ä¸ªifååç¬å建ä¸ä¸ªé ç½®ï¼å å«limit_rateçäºkãå¦ææ¡ä»¶ä¸ºçï¼nginxå°æè¿ä¸ªé ç½®ææ´¾ç»è¯·æ±ã
æ令
rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;
å¯ä»¥éè¿å°æ£å表达å¼ä¸ç第ä¸ä¸ªæ线â/âæ¾å ¥åæ¬å·ï¼æ¥å®ç°è约ä¸ä¸ªå é¨æ令ï¼
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
对åºçå é¨æ令å°ä¼æ¯è¿æ ·ï¼
match of regular expressioncopy $1copy /mp3/copy $2copy .mp3end of regular expressionend of code