tag:blogger.com,1999:blog-3675525395004566002024-03-16T22:35:41.153-07:00史蒂夫嘰嘰叫史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.comBlogger175125tag:blogger.com,1999:blog-367552539500456600.post-11139594643265444462023-02-24T00:11:00.004-08:002023-07-23T12:11:22.233-07:00<p> <span style="font-family: "AR PL UKai TW"; font-size: 14pt; font-weight: 700; text-align: center; white-space: pre-wrap;">ELRS – ExpressLRS</span></p><span id="docs-internal-guid-8f164606-7fff-a204-ffa8-d6825dfe63d4"><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.expresslrs.org/" style="text-decoration-line: none;"><span style="color: navy; font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://www.expresslrs.org/</span></a></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">ELRS 是一個 open source 遙控協議,最初專為四軸穿越機而打造,藉由最新的2.4G / 900MHz無線電通訊科技達到在相同的</span><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">發射功率</span><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">達到更遠的距離,更高的資料傳輸率以及更低的延遲.有效遙控距離可達數十公里,</span><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">資料傳輸率</span><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">最高可達1000Hz, 相關的參數都可依據應用場景自由調整. </span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Packet rate (資料傳輸率)</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">50Hz, 150Hz, 250Hz, 500Hz, D250Hz, D500Hz, F500Hz, and F1000Hz </span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">TX Power (發射功率)</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">10mW ~ 250mW</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">遙控協議上可選擇合適的</span><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">開關模式</span><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">, 例如1~4 ch 全解析度(10 bits), ch 5 兩位置(2 pos), ch 6~9 (6 pos)在穿越機上已足夠,輸率最高可設定至1000Hz. 固定翼機則可選擇1~4, 6~9 ch 全解析度(10 bits), ch 5 兩位置(2 pos), 輸率最高可設定為100或333Hz. </span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Switch Configuration Modes (開關模式)</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Hybrid, Wide, Full Res 8 ch, Full Res 16 ch - rate/2, Full Res 12 ch Mixed</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.expresslrs.org/software/switch-config/" style="text-decoration-line: none;"><span style="color: navy; font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://www.expresslrs.org/software/switch-config/</span></a></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">發射機已有內建ELRS的產品, 或是JR Bar形式的發射模組搭配OpenTX / EdgeTX等發射機.</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">接收機可輸出S.BUS / CRSF, 需要接伺服機可選擇有PWM輸出的,可設定PWM的頻率(數位Servo已可支援到333Hz以上)及輸出對應的輸入通道.</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">ELRS專案目前很活躍,新的版本一直在推出,因此在拿到新的發射機及接收機時往往需要更新firmware.</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">以下是Radiomaster TX12 MKII發射機(內建ELRS RF模組)及MATEKSYS ELRS PWM-R24-P6接收機更新firmware的過程紀錄</span></p><br /><br /><span style="border: none; display: inline-block; height: 437px; overflow: hidden; width: 437px;"><img height="437" src="https://lh4.googleusercontent.com/ICSj5VZS-FAYhNdykBHKf-h7pZWtDxK7TigSQ6xnHoBeTfLM5ATJmWq_yJsOitBv2sZD__PxwYSGUCZUpB0yzrMBsfKSBwFKBCT1IE5-ULnU_dOLOxoWwdoGjUmAxs-8IxX6sZNnxRWZ8E-XPJAugn7ASmhXaBA0" style="margin-left: 0px; margin-top: 0px;" width="437" /></span><br /><span style="border: none; display: inline-block; height: 257px; overflow: hidden; width: 643px;"><img height="257" src="https://lh5.googleusercontent.com/rb_LeGLvdc42g9OFAa9kxjlMweCyBLto2xA_wC-csHWmW7j7QSYxqpAsttvz85FTdlMoIBaR3-QE8huNnNmB-hJxsJlzrH2ek3KG1PAtMqK5GqY5rnZklR0joSl8ISXstLhwczxSFxyT10IVTJ6I1VefaAjWiNpm" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">ELRS Firmware upgrade</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">更新2.4G發射模組韌體及接收機韌體,兩個版本要相同.這裡使用的版本是3.2.0 </span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">使用 ExpressLRS Configurator 這工具來更新及設定 發射模組 及 接收機, 可選從擇Wifi 或Uart 更新.它會依據所選的廠牌型號從網路上下載所需要的軟體套件及原始碼並在本機電腦編譯出韌體,接著將發射機或接收機的Wifi AP 啟動,本機電腦連線上會自動跳出設定畫面,給定好韌體檔案位置進行更新即可.</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.expresslrs.org/quick-start/installing-configurator/" style="text-decoration-line: none;"><span style="color: navy; font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://www.expresslrs.org/quick-start/installing-configurator/</span></a></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">1.Radiomaster TX12 MKII內建發射模組ELRS Firmware Upgrade</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">首先在遙控器設定畫面開啟一個新的Model,啟動內建ELRS RF模組.</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">KEY MOD -> [ MODESEL ] -> KEY PAGE -> [ SETUP ]</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Enable Internal RF</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">KEY RTN</span></p><br /><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh4.googleusercontent.com/frb6MdRwoaykyTD6yQZ7Hzp6j2Rn7VCOaZAoYl_GW_-uAHCtx5S77FcHK0CBs00RcgoKOENFU34E5fUVhVCk0xVGdb3egwn4wThvFAk_qBLUeohi0vyIhDeAo_6xoeGDnHujVQPdTImHZj93wGFHoaaj0Rhq6xDR" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">按 MOD 鍵</span></p><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh4.googleusercontent.com/7hc5FyeqpbEB_3cLcxsOGEyxSdD0GLxdzgSueD8H3VDrhF1NH9Mw9eOP5xhmQYNiIM1b_iqPjrRAKkZgkLoMfnRkdqb0OA6Wnww2IhDI7kYlByS0hFYUhxX0daVIomyYMexN0mcrw9-KgdJYUXvuUz_j_3Mrq7Hz" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">按 PAGE> 鍵 選至SETUP頁面</span></p><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh4.googleusercontent.com/-gJSv-oa7nBGh7HHe5hpBkzaJckfCLhsGQHr9FHfk7ZQS0w3F5VXU2NzqMFRLqtbAltk9UEIpV8oG3jCpgGg2jozZezWNR_rnLHew_FCABGllFGhEQgplSERfW1VUu2zicTrwTxAWSXwaWJXddlY8vyfNy_p9ATK" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">旋轉滾輪至Internal RF選項,選取Enable</span></p><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh4.googleusercontent.com/TMMlAoR9hFdoQu1LGdtCLnfNpvbIxvCYRJPqEUzFh2zyJwg6s1uK46W3pbbbAnmwksPfDe7NzaRhRyK81DmIyhbTJ-ULM4DExjRvQwSWaM4001RLCsAmUKZ0uwzo79D7A7zrf-BViwpIlZbsxWwBhQoMGCtdniF6" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">回到遙控器主畫面進入ELRS設定,啟動內建Wifi AP作為更新韌體之用.</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">KEY SYS → [ TOOLS ] → [ 02 ExpressLRS ] → [ Wifi Connectivity ] → [ Enable Wifi ] </span></p><br /><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh6.googleusercontent.com/Mxh7jhJctv37HoaAqjhoRureFfv027GcZdnmdVzm-DTNLMu68GR7AFEiWGxmI9lV48jHLoNKzpfktPzf-Dhu5lunnpPH5tu9eJntSLe4MsxUPYqrdLlJOEeL7B2t1FA0g8CnpM08Hin_g3G9XjqYeaXcG4KH6X9y" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh6.googleusercontent.com/GFxxyCaQLAROIQyYVQVBfYUA0cvMfyc8q4upDZJnrq4rjR02T4qIq33zz1GHNFMArQe2D9FKR4zirRcVcuOuGkzWF6gPim_C6hbYK7CQgsgglLlZ7fdzXZ_sUkVxjId1Gd4o5Gg_b917oQfKaXvX9BOPbGdmJy6S" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh5.googleusercontent.com/2rVKKfPV8vCSTVc0189a04qThOeilBAU2ceY1g6ga87wy1ZsGODFDoFKYC8IAk6cf4187AWixmWoKLsf59g2nEGqCIUWBF7O7rShgS80LKLnEC93JL3PhvVFgus4WxiAQoAatJ6ikVxOTOXWZQVJ5Ro7jYD8saa7" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh6.googleusercontent.com/MIOfrHJEGazSgiZxceZdyrjdbs0WmUGUTUL1Io-j14usKX0mc1b_csOSbDf159YZ4Ki5iqyAApnNjs3FcNZG0GArXetgArR-AUFFMd1vLaPYlOS-55FNUkXPOGka7LJbs01SVYMDx5Tm9La6RHjB9m9t12vBzJi0" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh5.googleusercontent.com/Yb5NjObV8I9Vp3sUXo4iRGG4iq8U2iPHx_xb3TQuFWa2F4bt7c6rWkiAvq_mjF8oiKbxloOKzaArIMSJ70g1910lCnHS5W3bx6IjoQ-1WtN-W2FrkmFHbdgeuetsGP55emJNxylmC2MYTW4LqPEcQS4KiNcEd9GI" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><span style="border: none; display: inline-block; height: 289px; overflow: hidden; width: 384px;"><img height="289" src="https://lh4.googleusercontent.com/UYAH4n0I_BlF-jk1YBDUL9rz-1t15cvtX521wRQWg15pKGNt0Z1f5WxlycG-c2twqOMYAdrVqE4v8R4009Ala6kLDaO-vZLkX362BpUEYGpIaHrFmCvsP9h4H3AZlx2_8E4b_8Tmn2kvcyiiSmdmMdN9qlAkAdj8" style="margin-left: 0px; margin-top: 0px;" width="384" /></span><br /><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">在本機電腦(Ubuntu 20.04)啟動安裝好的ExpressLRS Configurator</span></p><br /><br /><span style="border: none; display: inline-block; height: 380px; overflow: hidden; width: 555px;"><img height="380" src="https://lh6.googleusercontent.com/hq8SJXAIhE09dDBAM0iMJcx96v60HfOzxz9IEi7ka6iMyJiClHBI3tIUFLUvjgtRbCbdfgrEFF9pOOjYCCeE3PwsMl0VXDWDvcp3JdLIeAeghnmG73IFZIYVPTRWuHxO-xDKOJJyM7n919PYONG_rtO0kp9HRHdZ" style="margin-left: 0px; margin-top: 0px;" width="555" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">選擇Target – RadioMaster 2.4GHz / RadioMaster TX12 2400 TX</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">方式Method – WiFi</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> </span></p><br /><span style="border: none; display: inline-block; height: 380px; overflow: hidden; width: 555px;"><img height="380" src="https://lh6.googleusercontent.com/EPuAsj61T4v1gLNasLpAXA8HnmNiXLaznM5Q4jXP3HZsm5rlDHmpr9kExFbDLmifQj2-ovfRo4DkDDxYKcUDIUNMA6BH7X5bMFXdz-em4DzP7KGew0kPEmqS1SSBexCkxchFDnS8j_NYv8glSOJ6bUYI9r2Bjz5F" style="margin-left: 0px; margin-top: 0px;" width="555" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">設定完成按BUILD,就會自動把firmware產生出來</span></p><br /><br /><span style="border: none; display: inline-block; height: 380px; overflow: hidden; width: 555px;"><img height="380" src="https://lh5.googleusercontent.com/ikVyZUdNDOTn_awQezMKvwNDgmcn7lBZuTdRZZpMwQKKhl1sGQDbCgA0WFWNBw5qcT7eAuZG2aIVez67X4eJP2Dhj0E2xr5b_l1Z-gjMWhghInRoVpLPqt-R-8NPijZbqwym-A_KFUHA1ust3_kBv_OQyhEqCQK0" style="margin-left: 0px; margin-top: 0px;" width="555" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">第一次BUILD會花大約十幾分鐘的時間,因為會從網路上下載所需的軟體套件及Source code.之後BUILD就很快了.完成後會跳出韌體所在位置的檔案管理視窗</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">本機電腦Wifi連線到ELRS發射模組</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">SSID : ExpressLRS TX</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Password : ExpressLRS</span></p><br /><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">連線上之後等幾秒鐘會自動跳出設定畫面</span></p><br /><br /><span style="border: none; display: inline-block; height: 268px; overflow: hidden; width: 469px;"><img height="268" src="https://lh5.googleusercontent.com/QSWm6I5yeTckwzmwfI5o9WJ94S9IsJOCAFCOUfaSGuR9xxCQPwrkSL8WnvL2XDwKyZiNF2cJKGjqWN2CRg3BNPw5c6qBHG9dXhWiw1cSLsQ7syZmstBZzmUmkPaYF6BiLUj96Xd4TDl5prUba5ptXgKgauz-3dlA" style="margin-left: 0px; margin-top: 0px;" width="469" /></span><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">給定firmware然後Update</span></p><br /><br /><br /><span style="border: none; display: inline-block; height: 268px; overflow: hidden; width: 469px;"><img height="268" src="https://lh3.googleusercontent.com/qejGreUie8QJf6JavqwcBJJqf9vc6-Nsu9KQKA4S_xsxgNOGvuQVJyd4bCi1alnM-2__CDz9rAikj_2TNXZfWD_WPPWRWKU4NKI7H8tTPnolOYRrNnYkSE4aDKxrHs6SPvu-Ms_vz6ztUXA-KR69mDiFWAo4FeQ3" style="margin-left: 0px; margin-top: 0px;" width="469" /></span><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">到這裡就完成發射機Firmware Upgrade</span></p><br /><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">1.MATEKSYS ELRS PWM-R24-P6接收機 Firmware Upgrade</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><a href="http://www.mateksys.com/?portfolio=elrs-r24-p6#tab-id-2" style="text-decoration-line: none;"><span style="color: navy; font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">http://www.mateksys.com/?portfolio=elrs-r24-p6#tab-id-2</span></a></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">更新Firmware一樣是用ExpressLRS Configurator</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">依據以上原廠網頁說明</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">選擇Target – DIY 2.4GHz / DIY 2400 RX PWMP EX</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">方式Method – WiFi</span></p><br /><br /><span style="border: none; display: inline-block; height: 441px; overflow: hidden; width: 643px;"><img height="441" src="https://lh5.googleusercontent.com/K1IH7iZXKPtQxYO06ko7OlFs7-9l52Lt3cEGLzVzcgHGXqsuKOG1m3Z65CagROzRKrSZqaVA752lznq-a10Cmjwdffw0nSAqS5qTQzGl3ymqI_faAwI1dcAz8-QCX2amGeN375M-oycpf8ei8OOSkRUnkSnX-v9s" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><br /><br /><span style="border: none; display: inline-block; height: 441px; overflow: hidden; width: 643px;"><img height="441" src="https://lh4.googleusercontent.com/z8rTjNlsJgY-JZSo8sYdlTpFqD9tDnGMCpo-0jwX2dSLrOAAETSieUq6iQwigvA-lvxVVUJEJG_MxL474jBtU4wib6lNLD1xCWJITx31JuHca6Qbs-3ChPfVgBzOdy69DlMtoIgNw-Q-LNvdJSpt9RsHZccmVN9K" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">按BUILD產生Firmware</span></p><br /><br /><span style="border: none; display: inline-block; height: 441px; overflow: hidden; width: 643px;"><img height="441" src="https://lh5.googleusercontent.com/L4VsJMcjgc1X9adz_O63H2IXRMxJsMO9HCKUfECZDxjPkdw5G2SzIefOk9x-AYh1UN7lv2PQ5DQrm697me3cIneuu4JJxTpTBFNaj7gLMXZnyX_M4d4PkVnO4-mAZCK-Vrj_dehDRTRhsdZEzCjQL9cPBYUdJulX" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">接著將接收機上電,這時上面的紅色LED燈會慢閃,等待60秒會變快閃,這時接收機的Wifi AP就已經啟動.</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">SSID : ExpressLRS RX</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Password : ExpressLRS 或著是 expresslrs</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">將本機電腦Wifi連線上接收機,連線上之後等幾秒鐘會自動跳出設定畫面.</span></p><br /><br /><span style="border: none; display: inline-block; height: 366px; overflow: hidden; width: 643px;"><img height="366" src="https://lh3.googleusercontent.com/TYYwg5CHtY-5pUd7qo0K1Dugx4Uxe0rsuXx0nd3i5meaITK62um66_HU5zUQUZFfagHJxKvHv4ZbbVks2dzht93N__f9pKIG58dJIBgokrX6w_-DbFm0cPAagh2Rc1jPdMoaBpgr7faBiTcoLoAMxeMGZqAbxjgY" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">給定firmware然後Update</span></p><br /><br /><span style="border: none; display: inline-block; height: 366px; overflow: hidden; width: 643px;"><img height="366" src="https://lh4.googleusercontent.com/HhkVJTWvwStoHi73VndV40NP-DDcU-G_Dw8otv3E2s9wt6xneIAGuJggEf0f_Ec3vhyraYiqC77hlziLJa3LBmHfLlG7KUx07L6pgV54_M1s6Cbr71EYfmC-EkVhdgTVJDUguN5BxNx_cX6RcPIlAzVQ3gazOg2w" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">到這裡就完成接收機Firmware Upgrade</span></p><br /><br /><br /><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">PWM輸出的接收機需要調整Servo channel的對映,主要是ch5在ELRS中固定作為Arm / Disarm的開關,是一個只有on/off兩位置的輸出.修改 Output 5 → ch6 / Output 6 → ch7.</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">市售的數位Servo大多已經支援333MHz以上的PWM data rate. 預設Output Mode是50Hz等於是犧牲了ELRS低延遲效果,Output Mode全部都改為333MHz.</span></p><br /><br /><span style="border: none; display: inline-block; height: 366px; overflow: hidden; width: 643px;"><img height="366" src="https://lh4.googleusercontent.com/Ph_mXu3QmgVf9ePhvVce8tH_dwjU7Iq_pCkYa3Dbupjc7by-5AiuTAshWrY9Jj_Nf8wEsPEyS7-cd6ULbOzj0RXAucleawrG_q8jKnqMWNpBgeezlVCpVsnL2ClhusARXVkEFza3qOfrlPNmGDHkpOupu5zeERZC" style="margin-left: 0px; margin-top: 0px;" width="643" /></span><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">
參考資料</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://oscarliang.com/setup-expresslrs-2-4ghz/" style="text-decoration-line: none;"><span style="color: navy; font-family: "AR PL UKai TW"; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://oscarliang.com/setup-expresslrs-2-4ghz/</span></a></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">ExpressLRS Configurator v1.6.0</p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">For MATEKSYS R24-P6</p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJme4uicwNMsk_V8qQHFd_UX3sbp8QvduigIpdYZwMRtR66Jl5w0U-IdKFqQr3N2KQYIKJTB1TStr2e7x09p2oO4ljNbkpDcOAMNMPNbUqSZ3_4pO4neCjCbu8MfG3RlY3WFyZcLJltkz7xi4Gzq975xkhmtdrFn9lXeFdbKHB3YX8wXWY6Y2yeq0coR4/s1420/Screenshot%20from%202023-07-24%2003-07-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="975" data-original-width="1420" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJme4uicwNMsk_V8qQHFd_UX3sbp8QvduigIpdYZwMRtR66Jl5w0U-IdKFqQr3N2KQYIKJTB1TStr2e7x09p2oO4ljNbkpDcOAMNMPNbUqSZ3_4pO4neCjCbu8MfG3RlY3WFyZcLJltkz7xi4Gzq975xkhmtdrFn9lXeFdbKHB3YX8wXWY6Y2yeq0coR4/w640-h440/Screenshot%20from%202023-07-24%2003-07-05.png" width="640" /></a></div><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><br /><br /></span>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-87940048231627758822022-02-07T04:11:00.009-08:002022-09-06T21:02:48.211-07:00Install TensorRT on Ubuntu 20.04 <br /><br /><span style="font-size: medium;"><b> It takes me a lot of time to get TensorRT working with Ubuntu 20.04 on my laptop.<br />There are some issues makes it even harder @@<br /></b></span><br /><span style="color: #2b00fe;">1.With the default nVidia driver from Ubuntu 20.04, the laptop failed to resume after suspend (hibernate).<br />The solution is to reinstall older version. T</span><span style="color: #2b00fe;">his lead cuda version limited to 10.2</span><div><br /></div><div>sudo apt purge nvidia-* </div><div>sudo apt autoremove <br />sudo apt install nvidia-driver-450-server </div><div><br /></div><div><span style="color: #2b00fe;">2.Ubuntu 20.04 default is python3.8 and TensorRT works with python3.6 </span></div><div><span style="color: #2b00fe;"><br /></span></div><div><span style="color: #2b00fe;">3.TensorRT doesn't support Ubuntu 20.04 with cuda 10.2</span></div><div><br /></div><div><span style="font-size: medium;"><b>The solution is to use python virtualenv to install TensorRT </b></span></div><div><br /></div><div><div>sudo apt install python3.6-venv</div><div><br /></div><div>mkdir venv/</div><div>cd venv</div><div><br /></div><div>### Create virtual environment in path venv/tensorrt</div><div><br /></div><div>python3.6 -m venv tensorrt</div><div><br /></div><div>source tensorrt/bin/activate</div><div><br /></div><div>pip install --upgrade pip</div><div><br /></div><div>python3 -m pip install numpy onnx</div><div><br /></div><div><div>### Download & extract TensorRT-7.2.3.4.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.1.tar.gz</div></div><div><br /></div><div>cd Downloads/</div><div><br /></div><div>sudo cp -a TensorRT-7.2.3.4 /usr/local/</div><div><br /></div><div>export LD_LIBRARY_PATH=/usr/local/TensorRT-7.2.3.4/lib</div><div><br /></div><div>cd TensorRT-7.2.3.4/python/</div><div><br /></div><div>python3 -m pip install tensorrt-7.2.3.4-cp36-none-linux_x86_64.whl</div><div><br /></div><div>cd ../uff</div><div><br /></div><div>python3 -m pip install uff-0.6.9-py2.py3-none-any.whl uff-0.6.9-py2.py3-none-any.whl</div><div><br /></div><div>which convert-to-uff</div><div><br /></div><div>cd ../graphsurgeon/</div><div><br /></div><div>python3 -m pip install graphsurgeon-0.4.5-py2.py3-none-any.whl</div><div><br /></div><div>cd ../onnx_graphsurgeon/</div><div><br /></div><div>python3 -m pip install onnx_graphsurgeon-0.2.6-py2.py3-none-any.whl</div><div><br /></div><div>cd ../..</div><div><br /></div><div><div>### Download libcudnn8_8.2.1.32-1+cuda10.2_amd64.deb & libcudnn8-dev_8.2.1.32-1+cuda10.2_amd64.deb</div></div><div><br /></div><div>sudo dpkg -i ./libcudnn8_8.2.1.32-1+cuda10.2_amd64.deb</div><div>sudo dpkg -i ./libcudnn8-dev_8.2.1.32-1+cuda10.2_amd64.deb</div><div><br /></div><div>pip3 install torch</div><div>pip3 install torchvision</div><div>pip3 install matplotlib</div><div><br /></div><div>pip3 install --global-option=build_ext --global-option="-I/usr/local/cuda-10.2/targets/x86_64-linux/include/" --global-option="-L/usr/local/cuda-10.2/targets/x86_64-linux/lib/" pycuda</div><div><br /></div><div>pip3 install opencv-python</div><div>pip3 install albumentations==0.5.2</div></div><div><br /></div><div><br /></div><div><br /></div><div><span style="color: #2b00fe;">4.Using the tensorrt venv</span></div><div><br /></div><div>cd venv</div><div>source tensorrt/bin/activate</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-58994442934209541712021-12-22T02:13:00.001-08:002022-01-06T16:29:43.074-08:00Personal Project - Remote control firefighter robot <p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhMUsGuxJtjCHHFMbEMZ1n3omD9G5-lOYeP-x9F2Xjob8sWgldZkcz9B3uv0_msrBQQKQyh7qDBonSi-zFEnNasWfRNPi98yeY6tPguUBEZaJ-V2LluLcH5NaRPiqiUL54qbjn3vcG8LZY0p6qLM8fV_jMEi6UwtwSnilqzwIqCaag2LVt10mlI2WZN=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhMUsGuxJtjCHHFMbEMZ1n3omD9G5-lOYeP-x9F2Xjob8sWgldZkcz9B3uv0_msrBQQKQyh7qDBonSi-zFEnNasWfRNPi98yeY6tPguUBEZaJ-V2LluLcH5NaRPiqiUL54qbjn3vcG8LZY0p6qLM8fV_jMEi6UwtwSnilqzwIqCaag2LVt10mlI2WZN=w640-h480" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgq2sLtRocARCRkvU3PxFTgpaAo6eM7tMBhqS232gUAnLrjCyRcvmQoJ9cRy51AlOE05YW9D_dfrlJD2Ll3YhuE4hxHIbkpgw_dWX-6QWK8fwyNIwaUWmj6ftK2h8bTrVVYXUllNmqSG8iehZQ8M2xqBbXp0d_wmadzyMkHpOT0b6oyjldLs4o6jaVC=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgq2sLtRocARCRkvU3PxFTgpaAo6eM7tMBhqS232gUAnLrjCyRcvmQoJ9cRy51AlOE05YW9D_dfrlJD2Ll3YhuE4hxHIbkpgw_dWX-6QWK8fwyNIwaUWmj6ftK2h8bTrVVYXUllNmqSG8iehZQ8M2xqBbXp0d_wmadzyMkHpOT0b6oyjldLs4o6jaVC=w640-h480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiD8CFHOoxs-4gfPatJ7T_ugUyvSf2kl6KvTs29CeHxQJPT__KxME8EDt9rKIok_WV74x0zvqJS6V9UZWF6FwlRF7e_hcg_9ow_71Kn3TFuW5HMYSFes2ENzmZ58QkJ7jEtLcowQYYDB0UB6jSoMP46qpQGV8i68ai-wfrtwaq7TOZUOL66y6O04GCq=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiD8CFHOoxs-4gfPatJ7T_ugUyvSf2kl6KvTs29CeHxQJPT__KxME8EDt9rKIok_WV74x0zvqJS6V9UZWF6FwlRF7e_hcg_9ow_71Kn3TFuW5HMYSFes2ENzmZ58QkJ7jEtLcowQYYDB0UB6jSoMP46qpQGV8i68ai-wfrtwaq7TOZUOL66y6O04GCq=w640-h480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgv6VyYarGRHrk64ennfQPLSSjj7Y147qQnc6qmv5NsDlv2feutL6gtKQUW_1BZFr7zTfFScXN8wxLdj20mhqgAPCgaLqjJIPu8Cz5CMTvJY9jG4F-fu-Q8vSknEc5T6kCAGpquHSb3Y_VHEFRR4KbXGWUOfqxvs04I1g5nRx32TCrYwlPXa4G_o6tP=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgv6VyYarGRHrk64ennfQPLSSjj7Y147qQnc6qmv5NsDlv2feutL6gtKQUW_1BZFr7zTfFScXN8wxLdj20mhqgAPCgaLqjJIPu8Cz5CMTvJY9jG4F-fu-Q8vSknEc5T6kCAGpquHSb3Y_VHEFRR4KbXGWUOfqxvs04I1g5nRx32TCrYwlPXa4G_o6tP=w640-h480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFAHuvMrHxDkS6ogKZPgMflNdB7k67XR3O88ybzRzznjk6LTkBzonvd9GG9IB4b0d_Aj5e6Ro7uwbewoNeSBxMJBnDcny8BMJ6O85W_mzMBn-QRzvqABtNBsOkCo5M3IYmHDXsNgA-jOOC0wD27jMTxI23X_nUlLyQQkyZgCMrqFeyfQmzYWaPYl_M=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFAHuvMrHxDkS6ogKZPgMflNdB7k67XR3O88ybzRzznjk6LTkBzonvd9GG9IB4b0d_Aj5e6Ro7uwbewoNeSBxMJBnDcny8BMJ6O85W_mzMBn-QRzvqABtNBsOkCo5M3IYmHDXsNgA-jOOC0wD27jMTxI23X_nUlLyQQkyZgCMrqFeyfQmzYWaPYl_M=w640-h480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZQnYb0Cn5pjJphId4J8R6YUOa23daKVjKk3MC8gwMb-1C9yJhNuafqlRBsDNfSNFZZJ0EOs73X2xL-SlgiTMUda7sPaeflu5IBJFQ6GvJlnYFhSb7hr37WQg-sKJAZDnlhfD3SfsGQpoMPJ8sQwFlRaDrovvCMSu9nkYy2z2We9sLI9bTh_OqT2Oa=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4000" data-original-width="3000" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZQnYb0Cn5pjJphId4J8R6YUOa23daKVjKk3MC8gwMb-1C9yJhNuafqlRBsDNfSNFZZJ0EOs73X2xL-SlgiTMUda7sPaeflu5IBJFQ6GvJlnYFhSb7hr37WQg-sKJAZDnlhfD3SfsGQpoMPJ8sQwFlRaDrovvCMSu9nkYy2z2We9sLI9bTh_OqT2Oa=w480-h640" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh0sdaUQ0tONzdQ_4u4OH1cEig4MXbHSlmk2RTm2tDjfTGmAq60zLbLlCJNml9rce59e4zZcEWAiMKubXjgm7pjMdPHFmYs1FXfTNBuWtc62r1ICxBjDkJxaUQLm66XO2JlruGkTMu8A1GLsDumLbCHaxmgEAsY8hrRKTis0dJ3oyMLVPqhWN6dc2LM=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEh0sdaUQ0tONzdQ_4u4OH1cEig4MXbHSlmk2RTm2tDjfTGmAq60zLbLlCJNml9rce59e4zZcEWAiMKubXjgm7pjMdPHFmYs1FXfTNBuWtc62r1ICxBjDkJxaUQLm66XO2JlruGkTMu8A1GLsDumLbCHaxmgEAsY8hrRKTis0dJ3oyMLVPqhWN6dc2LM=w640-h480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhTfqw9JblIv-u08-m8YD8g1CRJYgYxSK_Ob8OjIPeIJCMttYdb15Szp9mFr1X4avLCTB4kddjUOZpiHCIqvzRFPkGFM-zYAF7ZV1IOqZ8SBf-Y6EkVoBuTEkdMLokPzY6IBV8xMRnCXFtZVZ2BPaHjKYAzNEifgp2LV6cxtqOUGatjEpytg5GzFArK=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhTfqw9JblIv-u08-m8YD8g1CRJYgYxSK_Ob8OjIPeIJCMttYdb15Szp9mFr1X4avLCTB4kddjUOZpiHCIqvzRFPkGFM-zYAF7ZV1IOqZ8SBf-Y6EkVoBuTEkdMLokPzY6IBV8xMRnCXFtZVZ2BPaHjKYAzNEifgp2LV6cxtqOUGatjEpytg5GzFArK=w640-h480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgztpWTeP-iuwbNNp3MifwPRf6Mt0dBMSfcrX-dM2WYBNzaA-jN_t8JUBaepwla_VZMPPCGXC0q-LwAuwQc-BXzWFCsJtjcZhPRCnX0brE5_N9NC0aRK20UpuSJigjpmP24Q9M8ipvqqJhDDYs1w3Dvy2Clk4JGnNC2ePzj66o5TeCcjfb5UdmBYGWN=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4000" data-original-width="3000" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgztpWTeP-iuwbNNp3MifwPRf6Mt0dBMSfcrX-dM2WYBNzaA-jN_t8JUBaepwla_VZMPPCGXC0q-LwAuwQc-BXzWFCsJtjcZhPRCnX0brE5_N9NC0aRK20UpuSJigjpmP24Q9M8ipvqqJhDDYs1w3Dvy2Clk4JGnNC2ePzj66o5TeCcjfb5UdmBYGWN=w480-h640" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhco2-J790EhcKky951HSk1xhLS38MQMw3B7ZtdjekfjApOEvak-jBpjw7yj8Ozi9c978HM6eFdL5Q1VHJC2ol0YNk5YtdLBbZSOaeFkFRI-npuAcEy8kF5gJqXKLIx1r9wtrwltsJyyy5HQxhKcADcfJsd2Oe1DX6rDYdYAHq3uis2KnkhFNZov6-F=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4000" data-original-width="3000" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEhco2-J790EhcKky951HSk1xhLS38MQMw3B7ZtdjekfjApOEvak-jBpjw7yj8Ozi9c978HM6eFdL5Q1VHJC2ol0YNk5YtdLBbZSOaeFkFRI-npuAcEy8kF5gJqXKLIx1r9wtrwltsJyyy5HQxhKcADcfJsd2Oe1DX6rDYdYAHq3uis2KnkhFNZov6-F=w480-h640" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEigARWsro2BXgGrL4ntB7TmCvRisP8hnfjQNzblrAv-2RZfYswNJ9MSeLzs3jUyoi61AhukT18g3R4_s6TqhxiKd82kdTcDh-DDE5p7xiwa9SXGcH9l56l0MHOo8qlzS8hMICvEivQX_Wy3kcalZubm0TTT3KDttT2Av97kfHNFHuyxkjbLeB8lZYVz=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4000" data-original-width="3000" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEigARWsro2BXgGrL4ntB7TmCvRisP8hnfjQNzblrAv-2RZfYswNJ9MSeLzs3jUyoi61AhukT18g3R4_s6TqhxiKd82kdTcDh-DDE5p7xiwa9SXGcH9l56l0MHOo8qlzS8hMICvEivQX_Wy3kcalZubm0TTT3KDttT2Av97kfHNFHuyxkjbLeB8lZYVz=w480-h640" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQgKmWQV9qXkloQuVDOP9Ns4KcN4_y2pZC5RWuxkTBf5luka0zRvw9PEIQePH6HxSo6rLaU3uQ0Dq4gn5JYPW6POPsHkXWFbWyJUpARzfMdcGpjvLBVJyqr-5IXT-bGcqMefxwwqIAl-R08Sg3JzL_c1r61opm1sqBK20No0MHLC3z4pT-ERUi3mgH=s4000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3000" data-original-width="4000" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQgKmWQV9qXkloQuVDOP9Ns4KcN4_y2pZC5RWuxkTBf5luka0zRvw9PEIQePH6HxSo6rLaU3uQ0Dq4gn5JYPW6POPsHkXWFbWyJUpARzfMdcGpjvLBVJyqr-5IXT-bGcqMefxwwqIAl-R08Sg3JzL_c1r61opm1sqBK20No0MHLC3z4pT-ERUi3mgH=w640-h480" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgS3PmmQsDqjV4FY6974QGQ81ryL9YK0kk4HxrKCJiXKGcMptGLhopDKk4ftUiLMzA76zwMX7Dz6uvuZ46QfjTZw4Dw_NnsqjY_K2KDIkRPYlA4s-q_ZrUYfGBjrBVZkQhAS6zl7diXf28FVbJRy5HcUnU2dovHBO1HSZfRiqjhztycinAsknte6cnu=s1786" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1786" data-original-width="1179" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgS3PmmQsDqjV4FY6974QGQ81ryL9YK0kk4HxrKCJiXKGcMptGLhopDKk4ftUiLMzA76zwMX7Dz6uvuZ46QfjTZw4Dw_NnsqjY_K2KDIkRPYlA4s-q_ZrUYfGBjrBVZkQhAS6zl7diXf28FVbJRy5HcUnU2dovHBO1HSZfRiqjhztycinAsknte6cnu=w422-h640" width="422" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgOZ_95nH7cqeGTt_Stp9-WfonhlaX0jmQUklGB9B4ETTkDs5kjRz_kkBmdw6_wEiEjVe_1G5_AY0r33dPublxlT02L9ysJryJKwSLHi1p2MeWFAlKAXJPwreoy-CQAofD3KDtCQiVzPFlvYt9uV75OZos48C-MLGWwIEiB05bOtKfg2HGb59S8kpGN=s2314" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2314" data-original-width="2256" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgOZ_95nH7cqeGTt_Stp9-WfonhlaX0jmQUklGB9B4ETTkDs5kjRz_kkBmdw6_wEiEjVe_1G5_AY0r33dPublxlT02L9ysJryJKwSLHi1p2MeWFAlKAXJPwreoy-CQAofD3KDtCQiVzPFlvYt9uV75OZos48C-MLGWwIEiB05bOtKfg2HGb59S8kpGN=w624-h640" width="624" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjK-ojlYubYhYOihwymPJZSBVXR5mAg8PJLL2ct-kZF5WMUyaryQ7KdbqZdM4zNbvsSsy03hXWT-KXGFkT7UCYZYUkGDKQ1CKEqM3k52OYX54ZojO4xkpUzchZKHV680gf67oqe7KaqgIB0_9q1UR8p9Ay1PH2JcnXGy4S_XciWmIrMMIqR9OkDeXbG=s902" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="805" data-original-width="902" height="572" src="https://blogger.googleusercontent.com/img/a/AVvXsEjK-ojlYubYhYOihwymPJZSBVXR5mAg8PJLL2ct-kZF5WMUyaryQ7KdbqZdM4zNbvsSsy03hXWT-KXGFkT7UCYZYUkGDKQ1CKEqM3k52OYX54ZojO4xkpUzchZKHV680gf67oqe7KaqgIB0_9q1UR8p9Ay1PH2JcnXGy4S_XciWmIrMMIqR9OkDeXbG=w640-h572" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh7BkOaTjAXi14Tamy7Ggp-4MhLp7rP9HcVtep9CZnjG2ByH7VLvQMLPYd7Yh1iQaoVO1ft9rlecUDFCD6ZRx-CqRNWRtEpXp6icuDergo9pD5UdHzbuZ_8aoAMCdtMCGego1aaMZst7GUajn6LoBMa64_Bcau6WB1CvvVDjBooC_zEcOzq7zv_e4v2=s1462" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1085" data-original-width="1462" height="474" src="https://blogger.googleusercontent.com/img/a/AVvXsEh7BkOaTjAXi14Tamy7Ggp-4MhLp7rP9HcVtep9CZnjG2ByH7VLvQMLPYd7Yh1iQaoVO1ft9rlecUDFCD6ZRx-CqRNWRtEpXp6icuDergo9pD5UdHzbuZ_8aoAMCdtMCGego1aaMZst7GUajn6LoBMa64_Bcau6WB1CvvVDjBooC_zEcOzq7zv_e4v2=w640-h474" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhkhKEW2SdiDo0ySxA4PsgZ3dRQNPxgux8cLqUg8uqJ7Kw5D6zkLJO3eZ7mW5YWpsdaamXWVSCZUAwT08j0NkNvbtdxftYXyE59-U6Qy8RAazp0NBLpbFBkfYjdn2ecoSayIUBGG_Z6dCAsa6jvsFoqNirlO0AYk_mg4vwDxbdgwdn6qaxbSITnHA2i=s4876" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4876" data-original-width="4510" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEhkhKEW2SdiDo0ySxA4PsgZ3dRQNPxgux8cLqUg8uqJ7Kw5D6zkLJO3eZ7mW5YWpsdaamXWVSCZUAwT08j0NkNvbtdxftYXyE59-U6Qy8RAazp0NBLpbFBkfYjdn2ecoSayIUBGG_Z6dCAsa6jvsFoqNirlO0AYk_mg4vwDxbdgwdn6qaxbSITnHA2i=w592-h640" width="592" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiK_J-wSncZb2hwyGrHMtthTSjXEKqz51ejoIQ2Hw5F2Z9GvfdwA166xiAOkDHOQOeAVtnHbzT7vYELNXVM3CkZzCoV6qAI9-CDLLr6N27UPznTsZk2CiTQpWv-nuqZ6xDSQPowiNzuc0lxhG-QnmGT2dLLp2YWNHZxTFCSZXC1Tw1cwGh33bfYT7jZ=s480" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="480" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEiK_J-wSncZb2hwyGrHMtthTSjXEKqz51ejoIQ2Hw5F2Z9GvfdwA166xiAOkDHOQOeAVtnHbzT7vYELNXVM3CkZzCoV6qAI9-CDLLr6N27UPznTsZk2CiTQpWv-nuqZ6xDSQPowiNzuc0lxhG-QnmGT2dLLp2YWNHZxTFCSZXC1Tw1cwGh33bfYT7jZ=w640-h640" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhPdB8oWFchulWCYgXKFZNX8j8SjWQGGFP2OuaJ1NBade_KGPyCsSkc_xDyzkf5czkajPkQniIEXhWInHVd-2RAG4F1R4NMtGOcEt_5e1P4jFF0PeYowvQ4j34YCGAtI84tS3UnKpNfPbvExXhVNtE8OEg9cmwIbD9y09UbC-tD-QmeGJoT5J0mBKyK=s480" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="480" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEhPdB8oWFchulWCYgXKFZNX8j8SjWQGGFP2OuaJ1NBade_KGPyCsSkc_xDyzkf5czkajPkQniIEXhWInHVd-2RAG4F1R4NMtGOcEt_5e1P4jFF0PeYowvQ4j34YCGAtI84tS3UnKpNfPbvExXhVNtE8OEg9cmwIbD9y09UbC-tD-QmeGJoT5J0mBKyK=w640-h640" width="640" /></a></div><br /><p><br /></p>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-73695362725517598712021-09-27T02:19:00.005-07:002021-09-27T10:32:40.111-07:00TensorRT custom ONNX model c++This article is intent to describe how to run custom ONNX model with TensorRT. By modify TensorRT sample code sampleOnnxMnist to make it happen.<div><br />Hardware - nVidia Jetson NX Xavier<br />Software - Jetpack 4.6 / TensorRT 8<br />TensorRT sample - /usr/src/tensorrt/samples/sampleOnnxMNIST</div><div>ONNX model - <a href="https://github.com/PINTO0309/PINTO_model_zoo/tree/main/081_MiDaS_v2" target="_blank">https://github.com/PINTO0309/PINTO_model_zoo/tree/main/081_MiDaS_v2</a><br /><br />The sampleOnnxMNIST is to detect hand write numbers from 0 ~ 9. I will make some change on this sample to get it work with MiDasV2 depth inference.</div><div><br /></div><div><span style="color: #fcff01;">1.MiDasV2 Model</span></div><div><span style="color: #fcff01;"><br /></span></div><div>get PINTO_model_zoo and download MiDasV2 ONNX model</div><div><br /></div><div><span style="color: #6aa84f;">git clone https://github.com/PINTO0309/PINTO_model_zoo.git</span></div><div><span style="color: #6aa84f;">cd PINTO_model_zoo/081_MiDaS_v2</span></div><div><span style="color: #6aa84f;">./download_256x256.sh</span></div><div><span style="color: #6aa84f;">cd</span></div><div><br /></div><div>After successful downloading, file PINTO_model_zoo/081_MiDaS_v2/saved_model/model_float32.onnx is the custom ONNX model.</div><div><br /></div><div>Now we need to know the input and output dimensions of the model. A tool netron will help it.</div><div><br /></div><div><span style="color: #6aa84f;">pip install netron</span></div><div><span style="color: #6aa84f;">export PATH=$PATH:${HOME}/.local/bin</span></div><div><span style="color: #6aa84f;">netron PINTO_model_zoo/081_MiDaS_v2/saved_model/model_float32.onnx</span></div><div><br /></div><div>The netron will display all layers of the model on browser. Open url localhost:8080 from browser</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6OpA45eREWrT_UmWlWx0jKmFYPjAYRBBkxkj3c8r79z8ggSoHRhhKm1YC59QlU8wAH9ed9PtQHNJyvOCTRVKsmCzpa_CDfDESISD2aGxnfpYaDJTwnpkvuoOYUipMHxFw9Ta93CmHvWI/s1380/Screenshot+from+2021-09-27+16-35-43.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="992" data-original-width="1380" height="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6OpA45eREWrT_UmWlWx0jKmFYPjAYRBBkxkj3c8r79z8ggSoHRhhKm1YC59QlU8wAH9ed9PtQHNJyvOCTRVKsmCzpa_CDfDESISD2aGxnfpYaDJTwnpkvuoOYUipMHxFw9Ta93CmHvWI/w640-h460/Screenshot+from+2021-09-27+16-35-43.png" width="640" /></a></div><br /><div>Now we know the input layer name is inputs:0 and it's dimension is 1 x 256 x 256 x 3</div><div>Since the model requires an image input, so I guess the four dimension means batch x height x width x channel.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gG9YmfE9OWAKNjwON03cC8EVlfqe9ZeAhVoPiaTRmcE2JmB_3_qgx4qQp4KZ3xKNbpZxU9ISpFaF6DgO0fEYDXHipYa5qyVbj6Zn11ywnPI-czb5YW31IpvLELz2THAQj0fliRNrdxA/s1379/Screenshot+from+2021-09-27+16-42-13.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="993" data-original-width="1379" height="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gG9YmfE9OWAKNjwON03cC8EVlfqe9ZeAhVoPiaTRmcE2JmB_3_qgx4qQp4KZ3xKNbpZxU9ISpFaF6DgO0fEYDXHipYa5qyVbj6Zn11ywnPI-czb5YW31IpvLELz2THAQj0fliRNrdxA/w640-h460/Screenshot+from+2021-09-27+16-42-13.png" width="640" /></a></div><br /><div>Go to bottom of the page. the output name is Identity:0 and it's dimension is 1 x 256 x 256. Since the model output depth map, so I guess the three dimension means batch x height x width</div><div><br /></div><div>That's all we need to know about the model.</div><div><br /></div><div><span style="color: #fcff01;">2.sample code</span></div><div><br /></div><div><span style="color: #6aa84f;">sudo -s</span></div><div><br /></div><div>Copy ONNX model file to tensorrt sample folder</div><div><span style="color: #6aa84f;"><br /></span></div><div><div><span style="color: #6aa84f;">mkdir /usr/src/tensorrt/data/midas</span></div><div><span style="color: #6aa84f;">cp PINTO_model_zoo/081_MiDaS_v2/saved_model/model_float32.onnx /usr/src/tensorrt/data/midas/</span></div><div><span style="color: #6aa84f;"><br /></span></div><div>Copy source image </div><div><br /></div><div><span style="color: #6aa84f;">cp PINTO_model_zoo/081_MiDaS_v2/openvino/midasv2_small_256x256/FP16/dog.jpg /usr/src/tensorrt/bin</span></div><div><br /></div></div><div>Create new sample from sampleOnnxMNIST</div><div><br /></div><div><span style="color: #6aa84f;">cd /usr/src/tensorrt/samples</span></div><div><span style="color: #6aa84f;">cp -a sampleOnnxMNIST sampleOnnxMiDasV2</span></div><div><span style="color: #6aa84f;">cd sampleOnnxMiDasV2</span></div><div><span style="color: #6aa84f;">mv sampleOnnxMNIST.cpp sampleOnnxMiDasV2.cpp</span></div><div><br /></div><div>Modify Makefile</div><div><br /></div><div><div><span style="color: #2b00fe;">--- ../sampleOnnxMNIST/Makefile<span style="white-space: pre;"> </span>2021-06-26 08:17:31.000000000 +0800</span></div><div><span style="color: #2b00fe;">+++ Makefile<span style="white-space: pre;"> </span>2021-09-27 17:10:13.212404761 +0800</span></div><div><span style="color: #2b00fe;">@@ -1,6 +1,8 @@</span></div><div><span style="color: #2b00fe;">-OUTNAME_RELEASE = sample_onnx_mnist</span></div><div><span style="color: #2b00fe;">-OUTNAME_DEBUG = sample_onnx_mnist_debug</span></div><div><span style="color: #2b00fe;">+OUTNAME_RELEASE = sample_onnx_midasv2</span></div><div><span style="color: #2b00fe;">+OUTNAME_DEBUG = sample_onnx_midasv2_debug</span></div><div><span style="color: #2b00fe;"> EXTRA_DIRECTORIES = ../common</span></div><div><span style="color: #2b00fe;"> SAMPLE_DIR_NAME = $(shell basename $(dir $(abspath $(firstword $(MAKEFILE_LIST)))))</span></div><div><span style="color: #2b00fe;">+COMMON_FLAGS = -I/usr/include/opencv4/opencv -I/usr/include/opencv4</span></div><div><span style="color: #2b00fe;">+EXTRA_LIBS = -L/usr/lib/aarch64-linux-gnu/ -lopencv_dnn -lopencv_gapi -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core</span></div><div><span style="color: #2b00fe;"> MAKEFILE ?= ../Makefile.config</span></div><div><span style="color: #2b00fe;"> include $(MAKEFILE)</span></div></div><div><br /></div><div>Modify ../Makefile.config to get opencv correctly linked</div><div><br /></div><div><div><span style="color: #2b00fe;">$(OUTDIR)/$(OUTNAME_RELEASE) : $(OBJS) $(CUOBJS)</span></div><div><span style="color: #2b00fe;"> $(ECHO) Linking: $@</span></div><div><span style="color: #2b00fe;">- $(AT)$(CC) -o $@ $(LFLAGS) -Wl,--start-group $(LIBS) $^ -Wl,--end-group</span></div><div><span style="color: #2b00fe;">+ $(AT)$(CC) -o $@ $(LFLAGS) -Wl,--start-group $(LIBS) $^ -Wl,--end-group $(EXTRA_LIBS)</span></div><div><span style="color: #2b00fe;"><br /></span></div><div><span style="color: #2b00fe;">$(OUTDIR)/$(OUTNAME_DEBUG) : $(DOBJS) $(CUDOBJS)</span></div><div><span style="color: #2b00fe;"> $(ECHO) Linking: $@</span></div><div><span style="color: #2b00fe;">- $(AT)$(CC) -o $@ $(LFLAGSD) -Wl,--start-group $(DLIBS) $^ -Wl,--end-group</span></div><div><span style="color: #2b00fe;">+ $(AT)$(CC) -o $@ $(LFLAGSD) -Wl,--start-group $(DLIBS) $^ -Wl,--end-group $(EXTRA_LIBS)</span></div></div><div><br /></div><div>The whole story is to read dog.jpg as input of depth inference and display image of dog.jpg and depth map of result on screen</div><div><br /></div><div>Source code of sampleOnnxMiDadV2.cpp </div><div><a href="https://gist.github.com/gigijoe/a292832eeb6df6423e4b8184e17eb20c" target="_blank">https://gist.github.com/gigijoe/a292832eeb6df6423e4b8184e17eb20c</a><br /></div><div><br /></div><div><span style="color: #fcff01;">3.Build & run</span></div><div><span style="color: #fcff01;"><br /></span></div><div><span style="color: #6aa84f;">make</span></div><div><span style="color: #6aa84f;">cd ../../bin</span></div><div><span style="color: #6aa84f;">./sample_onnx_midasv2</span></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDH-ifjPNIozuHQXbs0ngn3FhjzPWEC5Ege2OV3DdS5GT66yWo4NU9EZ2tAcD5yFzExlPMYrgtsdLXHJicuKrm-Z_ApfWKmWnmvs8BwXkGK-A5QSgxP2hEeWi8ksq8-xhIaX9YoRJYnQ/s1206/Screenshot+from+2021-09-27+20-23-43.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1053" data-original-width="1206" height="558" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDH-ifjPNIozuHQXbs0ngn3FhjzPWEC5Ege2OV3DdS5GT66yWo4NU9EZ2tAcD5yFzExlPMYrgtsdLXHJicuKrm-Z_ApfWKmWnmvs8BwXkGK-A5QSgxP2hEeWi8ksq8-xhIaX9YoRJYnQ/w640-h558/Screenshot+from+2021-09-27+20-23-43.png" width="640" /></a></div><br /><div><br /></div><div><br /></div><div><span style="color: #fcff01;">4.Diff from sampleOnnxMNIST.cpp</span></div><div><br /></div><div><div><span style="color: #2b00fe;">--- ../sampleOnnxMNIST/sampleOnnxMNIST.cpp<span style="white-space: pre;"> </span>2021-06-26 08:17:31.000000000 +0800</span></div><div><span style="color: #2b00fe;">+++ sampleOnnxMiDasV2.cpp<span style="white-space: pre;"> </span>2021-09-27 16:49:44.045143887 +0800</span></div><div><span style="color: #2b00fe;">@@ -15,11 +15,11 @@</span></div><div><span style="color: #2b00fe;"> */</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-//! sampleOnnxMNIST.cpp</span></div><div><span style="color: #2b00fe;">-//! This file contains the implementation of the ONNX MNIST sample. It creates the network using</span></div><div><span style="color: #2b00fe;">-//! the MNIST onnx model.</span></div><div><span style="color: #2b00fe;">+//! sampleOnnxMiDasV2.cpp</span></div><div><span style="color: #2b00fe;">+//! This file contains the implementation of the ONNX MiDasV2 sample. It creates the network using</span></div><div><span style="color: #2b00fe;">+//! the MiDasV2 onnx model.</span></div><div><span style="color: #2b00fe;"> //! It can be run with the following command line:</span></div><div><span style="color: #2b00fe;">-//! Command: ./sample_onnx_mnist [-h or --help] [-d=/path/to/data/dir or --datadir=/path/to/data/dir]</span></div><div><span style="color: #2b00fe;">+//! Command: ./sample_onnx_MiDasV2 [-h or --help] [-d=/path/to/data/dir or --datadir=/path/to/data/dir]</span></div><div><span style="color: #2b00fe;"> //! [--useDLACore=<int>]</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">@@ -37,18 +37,21 @@</span></div><div><span style="color: #2b00fe;"> #include <iostream></span></div><div><span style="color: #2b00fe;"> #include <sstream></span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">+#include <opencv2/opencv.hpp></span></div><div><span style="color: #2b00fe;">+</span></div><div><span style="color: #2b00fe;">+</span></div><div><span style="color: #2b00fe;"> using samplesCommon::SampleUniquePtr;</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">-const std::string gSampleName = "TensorRT.sample_onnx_mnist";</span></div><div><span style="color: #2b00fe;">+const std::string gSampleName = "TensorRT.sample_onnx_midas";</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">-//! \brief The SampleOnnxMNIST class implements the ONNX MNIST sample</span></div><div><span style="color: #2b00fe;">+//! \brief The SampleOnnxMiDasV2 class implements the ONNX MiDasV2 sample</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \details It creates the network using an ONNX model</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-class SampleOnnxMNIST</span></div><div><span style="color: #2b00fe;">+class SampleOnnxMiDasV2</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> public:</span></div><div><span style="color: #2b00fe;">- SampleOnnxMNIST(const samplesCommon::OnnxSampleParams& params)</span></div><div><span style="color: #2b00fe;">+ SampleOnnxMiDasV2(const samplesCommon::OnnxSampleParams& params)</span></div><div><span style="color: #2b00fe;"> : mParams(params)</span></div><div><span style="color: #2b00fe;"> , mEngine(nullptr)</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;">@@ -74,7 +77,7 @@</span></div><div><span style="color: #2b00fe;"> std::shared_ptr<nvinfer1::ICudaEngine> mEngine; //!< The TensorRT engine used to run the network</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">- //! \brief Parses an ONNX model for MNIST and creates a TensorRT network</span></div><div><span style="color: #2b00fe;">+ //! \brief Parses an ONNX model for MiDasV2 and creates a TensorRT network</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> bool constructNetwork(SampleUniquePtr<nvinfer1::IBuilder>& builder,</span></div><div><span style="color: #2b00fe;"> SampleUniquePtr<nvinfer1::INetworkDefinition>& network, SampleUniquePtr<nvinfer1::IBuilderConfig>& config,</span></div><div><span style="color: #2b00fe;">@@ -83,23 +86,23 @@</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \brief Reads the input and stores the result in a managed buffer</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">- bool processInput(const samplesCommon::BufferManager& buffers);</span></div><div><span style="color: #2b00fe;">+ bool processInput(const samplesCommon::BufferManager& buffers, cv::Mat & image);</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \brief Classifies digits and verify result</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">- bool verifyOutput(const samplesCommon::BufferManager& buffers);</span></div><div><span style="color: #2b00fe;">+ bool verifyOutput(const samplesCommon::BufferManager& buffers, cv::Mat & originImage);</span></div><div><span style="color: #2b00fe;"> };</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \brief Creates the network, configures the builder and creates the network engine</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-//! \details This function creates the Onnx MNIST network by parsing the Onnx model and builds</span></div><div><span style="color: #2b00fe;">-//! the engine that will be used to run MNIST (mEngine)</span></div><div><span style="color: #2b00fe;">+//! \details This function creates the Onnx MiDasV2 network by parsing the Onnx model and builds</span></div><div><span style="color: #2b00fe;">+//! the engine that will be used to run MiDasV2 (mEngine)</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \return Returns true if the engine was created successfully and false otherwise</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-bool SampleOnnxMNIST::build()</span></div><div><span style="color: #2b00fe;">+bool SampleOnnxMiDasV2::build()</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> auto builder = SampleUniquePtr<nvinfer1::IBuilder>(nvinfer1::createInferBuilder(sample::gLogger.getTRTLogger()));</span></div><div><span style="color: #2b00fe;"> if (!builder)</span></div><div><span style="color: #2b00fe;">@@ -162,24 +165,24 @@</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> ASSERT(network->getNbInputs() == 1);</span></div><div><span style="color: #2b00fe;"> mInputDims = network->getInput(0)->getDimensions();</span></div><div><span style="color: #2b00fe;">- ASSERT(mInputDims.nbDims == 4);</span></div><div><span style="color: #2b00fe;">+ ASSERT(mInputDims.nbDims == 4); // Input is 1 x 256 x 256 x 3 </span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> ASSERT(network->getNbOutputs() == 1);</span></div><div><span style="color: #2b00fe;"> mOutputDims = network->getOutput(0)->getDimensions();</span></div><div><span style="color: #2b00fe;">- ASSERT(mOutputDims.nbDims == 2);</span></div><div><span style="color: #2b00fe;">+ ASSERT(mOutputDims.nbDims == 3); // Output is 1 x 256 x 256</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> return true;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-//! \brief Uses a ONNX parser to create the Onnx MNIST Network and marks the</span></div><div><span style="color: #2b00fe;">+//! \brief Uses a ONNX parser to create the Onnx MiDasV2 Network and marks the</span></div><div><span style="color: #2b00fe;"> //! output layers</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-//! \param network Pointer to the network that will be populated with the Onnx MNIST network</span></div><div><span style="color: #2b00fe;">+//! \param network Pointer to the network that will be populated with the Onnx MiDasV2 network</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \param builder Pointer to the engine builder</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-bool SampleOnnxMNIST::constructNetwork(SampleUniquePtr<nvinfer1::IBuilder>& builder,</span></div><div><span style="color: #2b00fe;">+bool SampleOnnxMiDasV2::constructNetwork(SampleUniquePtr<nvinfer1::IBuilder>& builder,</span></div><div><span style="color: #2b00fe;"> SampleUniquePtr<nvinfer1::INetworkDefinition>& network, SampleUniquePtr<nvinfer1::IBuilderConfig>& config,</span></div><div><span style="color: #2b00fe;"> SampleUniquePtr<nvonnxparser::IParser>& parser)</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;">@@ -212,9 +215,9 @@</span></div><div><span style="color: #2b00fe;"> //! \details This function is the main execution function of the sample. It allocates the buffer,</span></div><div><span style="color: #2b00fe;"> //! sets inputs and executes the engine.</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-bool SampleOnnxMNIST::infer()</span></div><div><span style="color: #2b00fe;">+bool SampleOnnxMiDasV2::infer()</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;">- // Create RAII buffer manager object</span></div><div><span style="color: #2b00fe;">+ <span style="white-space: pre;"> </span>// Create RAII buffer manager object</span></div><div><span style="color: #2b00fe;"> samplesCommon::BufferManager buffers(mEngine);</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> auto context = SampleUniquePtr<nvinfer1::IExecutionContext>(mEngine->createExecutionContext());</span></div><div><span style="color: #2b00fe;">@@ -222,28 +225,29 @@</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> return false;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;">+ cv::Mat image = cv::imread("dog.jpg");</span></div><div><span style="color: #2b00fe;">+ if (image.cols == 0 || image.rows == 0)</span></div><div><span style="color: #2b00fe;">+ {</span></div><div><span style="color: #2b00fe;">+ printf("image is empty\n");</span></div><div><span style="color: #2b00fe;">+ return false;</span></div><div><span style="color: #2b00fe;">+ }</span></div><div><span style="color: #2b00fe;"> // Read the input data into the managed buffers</span></div><div><span style="color: #2b00fe;"> ASSERT(mParams.inputTensorNames.size() == 1);</span></div><div><span style="color: #2b00fe;">- if (!processInput(buffers))</span></div><div><span style="color: #2b00fe;">+ if (!processInput(buffers, image))</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> return false;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;"> // Memcpy from host input buffers to device input buffers</span></div><div><span style="color: #2b00fe;"> buffers.copyInputToDevice();</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;"> bool status = context->executeV2(buffers.getDeviceBindings().data());</span></div><div><span style="color: #2b00fe;"> if (!status)</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> return false;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;"> // Memcpy from device output buffers to host output buffers</span></div><div><span style="color: #2b00fe;"> buffers.copyOutputToHost();</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;"> // Verify results</span></div><div><span style="color: #2b00fe;">- if (!verifyOutput(buffers))</span></div><div><span style="color: #2b00fe;">+ if (!verifyOutput(buffers, image))</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> return false;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;">@@ -254,31 +258,30 @@</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \brief Reads the input and stores the result in a managed buffer</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-bool SampleOnnxMNIST::processInput(const samplesCommon::BufferManager& buffers)</span></div><div><span style="color: #2b00fe;">+bool SampleOnnxMiDasV2::processInput(const samplesCommon::BufferManager& buffers, cv::Mat & image)</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;">- const int inputH = mInputDims.d[2];</span></div><div><span style="color: #2b00fe;">- const int inputW = mInputDims.d[3];</span></div><div><span style="color: #2b00fe;">+ const int inputChannels = mInputDims.d[3];</span></div><div><span style="color: #2b00fe;">+ const int inputH = mInputDims.d[1];</span></div><div><span style="color: #2b00fe;">+ const int inputW = mInputDims.d[2];</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">- // Read a random digit file</span></div><div><span style="color: #2b00fe;">- srand(unsigned(time(nullptr)));</span></div><div><span style="color: #2b00fe;">- std::vector<uint8_t> fileData(inputH * inputW);</span></div><div><span style="color: #2b00fe;">- mNumber = rand() % 10;</span></div><div><span style="color: #2b00fe;">- readPGMFile(locateFile(std::to_string(mNumber) + ".pgm", mParams.dataDirs), fileData.data(), inputH, inputW);</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;">- // Print an ascii representation</span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << "Input:" << std::endl;</span></div><div><span style="color: #2b00fe;">- for (int i = 0; i < inputH * inputW; i++)</span></div><div><span style="color: #2b00fe;">- {</span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << (" .:-=+*#%@"[fileData[i] / 26]) << (((i + 1) % inputW) ? "" : "\n");</span></div><div><span style="color: #2b00fe;">- }</span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << std::endl;</span></div><div><span style="color: #2b00fe;">+ printf("inputs:0 - %d x %d x %d x %d\n", mInputDims.d[0], mInputDims.d[1], mInputDims.d[2], mInputDims.d[3]);</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">- float* hostDataBuffer = static_cast<float*>(buffers.getHostBuffer(mParams.inputTensorNames[0]));</span></div><div><span style="color: #2b00fe;">- for (int i = 0; i < inputH * inputW; i++)</span></div><div><span style="color: #2b00fe;">- {</span></div><div><span style="color: #2b00fe;">- hostDataBuffer[i] = 1.0 - float(fileData[i] / 255.0);</span></div><div><span style="color: #2b00fe;">- }</span></div><div><span style="color: #2b00fe;">+ cv::Mat resized_image;</span></div><div><span style="color: #2b00fe;">+ cv::resize(image, resized_image, cv::Size(inputW, inputH));</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">+ int batchIndex = 0;</span></div><div><span style="color: #2b00fe;">+ int batchOffset = batchIndex * inputW * inputH * inputChannels;</span></div><div><span style="color: #2b00fe;">+ float* hostDataBuffer = static_cast<float*>(buffers.getHostBuffer(mParams.inputTensorNames[0]));</span></div><div><span style="color: #2b00fe;">+ // input shape [B,H,W,C]</span></div><div><span style="color: #2b00fe;">+ // inputs:0 - 1 x 256 x 256 x 3</span></div><div><span style="color: #2b00fe;">+ for (size_t h = 0; h < inputH; h++) {</span></div><div><span style="color: #2b00fe;">+ for (size_t w = 0; w < inputW; w++) {</span></div><div><span style="color: #2b00fe;">+<span style="white-space: pre;"> </span>for (size_t c = 0; c < inputChannels; c++) {</span></div><div><span style="color: #2b00fe;">+ hostDataBuffer[batchOffset + (h * inputW + w) * inputChannels + c] =</span></div><div><span style="color: #2b00fe;">+ float(float(resized_image.at<cv::Vec3b>(h, w)[c]) / 255.0); // Division 255.0 is to convert uint8_t color to float_t</span></div><div><span style="color: #2b00fe;">+<span style="white-space: pre;"> </span>}</span></div><div><span style="color: #2b00fe;">+ }</span></div><div><span style="color: #2b00fe;">+ }</span></div><div><span style="color: #2b00fe;"> return true;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">@@ -287,39 +290,27 @@</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;"> //! \return whether the classification output matches expectations</span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">-bool SampleOnnxMNIST::verifyOutput(const samplesCommon::BufferManager& buffers)</span></div><div><span style="color: #2b00fe;">+bool SampleOnnxMiDasV2::verifyOutput(const samplesCommon::BufferManager& buffers, cv::Mat & originImage )</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;">- const int outputSize = mOutputDims.d[1];</span></div><div><span style="color: #2b00fe;"> float* output = static_cast<float*>(buffers.getHostBuffer(mParams.outputTensorNames[0]));</span></div><div><span style="color: #2b00fe;">- float val{0.0f};</span></div><div><span style="color: #2b00fe;">- int idx{0};</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;">- // Calculate Softmax</span></div><div><span style="color: #2b00fe;">- float sum{0.0f};</span></div><div><span style="color: #2b00fe;">- for (int i = 0; i < outputSize; i++)</span></div><div><span style="color: #2b00fe;">- {</span></div><div><span style="color: #2b00fe;">- output[i] = exp(output[i]);</span></div><div><span style="color: #2b00fe;">- sum += output[i];</span></div><div><span style="color: #2b00fe;">- }</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << "Output:" << std::endl;</span></div><div><span style="color: #2b00fe;">- for (int i = 0; i < outputSize; i++)</span></div><div><span style="color: #2b00fe;">- {</span></div><div><span style="color: #2b00fe;">- output[i] /= sum;</span></div><div><span style="color: #2b00fe;">- val = std::max(val, output[i]);</span></div><div><span style="color: #2b00fe;">- if (val == output[i])</span></div><div><span style="color: #2b00fe;">- {</span></div><div><span style="color: #2b00fe;">- idx = i;</span></div><div><span style="color: #2b00fe;">- }</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << " Prob " << i << " " << std::fixed << std::setw(5) << std::setprecision(4) << output[i]</span></div><div><span style="color: #2b00fe;">- << " "</span></div><div><span style="color: #2b00fe;">- << "Class " << i << ": " << std::string(int(std::floor(output[i] * 10 + 0.5f)), '*')</span></div><div><span style="color: #2b00fe;">- << std::endl;</span></div><div><span style="color: #2b00fe;">- }</span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << std::endl;</span></div><div><span style="color: #2b00fe;">-</span></div><div><span style="color: #2b00fe;">- return idx == mNumber && val > 0.9f;</span></div><div><span style="color: #2b00fe;">+ const int output0_row = mOutputDims.d[1];</span></div><div><span style="color: #2b00fe;">+ const int output0_col = mOutputDims.d[2];</span></div><div><span style="color: #2b00fe;">+ </span></div><div><span style="color: #2b00fe;">+ printf("Identity:0 - %d x %d x %d\n", mOutputDims.d[0], mOutputDims.d[1], mOutputDims.d[2]);</span></div><div><span style="color: #2b00fe;">+ </span></div><div><span style="color: #2b00fe;">+ cv::Mat image = cv::Mat::zeros(cv::Size(output0_row, output0_col), CV_8U);</span></div><div><span style="color: #2b00fe;">+ for (int row = 0; row < output0_row; row++) {</span></div><div><span style="color: #2b00fe;">+<span style="white-space: pre;"> </span> for (int col = 0;col < output0_col; col++) {</span></div><div><span style="color: #2b00fe;">+<span style="white-space: pre;"> </span> image.at<uint8_t>(row, col) = (uint8_t)(*(output + (row * output0_col) + col) / 8);</span></div><div><span style="color: #2b00fe;">+<span style="white-space: pre;"> </span> }</span></div><div><span style="color: #2b00fe;">+ }</span></div><div><span style="color: #2b00fe;">+ </span></div><div><span style="color: #2b00fe;">+ cv::imshow("img", image);</span></div><div><span style="color: #2b00fe;">+ cv::imshow("orgimg", originImage);</span></div><div><span style="color: #2b00fe;">+ int key = cv::waitKey(0);</span></div><div><span style="color: #2b00fe;">+ cv::destroyAllWindows();</span></div><div><span style="color: #2b00fe;">+ </span></div><div><span style="color: #2b00fe;">+<span style="white-space: pre;"> </span>return true;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> //!</span></div><div><span style="color: #2b00fe;">@@ -330,16 +321,15 @@</span></div><div><span style="color: #2b00fe;"> samplesCommon::OnnxSampleParams params;</span></div><div><span style="color: #2b00fe;"> if (args.dataDirs.empty()) //!< Use default directories if user hasn't provided directory paths</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;">- params.dataDirs.push_back("data/mnist/");</span></div><div><span style="color: #2b00fe;">- params.dataDirs.push_back("data/samples/mnist/");</span></div><div><span style="color: #2b00fe;">+ params.dataDirs.push_back("data/midas/");</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;"> else //!< Use the data directory provided by the user</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> params.dataDirs = args.dataDirs;</span></div><div><span style="color: #2b00fe;"> }</span></div><div><span style="color: #2b00fe;">- params.onnxFileName = "mnist.onnx";</span></div><div><span style="color: #2b00fe;">- params.inputTensorNames.push_back("Input3");</span></div><div><span style="color: #2b00fe;">- params.outputTensorNames.push_back("Plus214_Output_0");</span></div><div><span style="color: #2b00fe;">+ params.onnxFileName = "model_float32.onnx";</span></div><div><span style="color: #2b00fe;">+ params.inputTensorNames.push_back("inputs:0");</span></div><div><span style="color: #2b00fe;">+ params.outputTensorNames.push_back("Identity:0");</span></div><div><span style="color: #2b00fe;"> params.dlaCore = args.useDLACore;</span></div><div><span style="color: #2b00fe;"> params.int8 = args.runInInt8;</span></div><div><span style="color: #2b00fe;"> params.fp16 = args.runInFp16;</span></div><div><span style="color: #2b00fe;">@@ -353,12 +343,12 @@</span></div><div><span style="color: #2b00fe;"> void printHelpInfo()</span></div><div><span style="color: #2b00fe;"> {</span></div><div><span style="color: #2b00fe;"> std::cout</span></div><div><span style="color: #2b00fe;">- << "Usage: ./sample_onnx_mnist [-h or --help] [-d or --datadir=<path to data directory>] [--useDLACore=<int>]"</span></div><div><span style="color: #2b00fe;">+ << "Usage: ./sample_onnx_MiDasV2 [-h or --help] [-d or --datadir=<path to data directory>] [--useDLACore=<int>]"</span></div><div><span style="color: #2b00fe;"> << std::endl;</span></div><div><span style="color: #2b00fe;"> std::cout << "--help Display help information" << std::endl;</span></div><div><span style="color: #2b00fe;"> std::cout << "--datadir Specify path to a data directory, overriding the default. This option can be used "</span></div><div><span style="color: #2b00fe;"> "multiple times to add multiple directories. If no data directories are given, the default is to use "</span></div><div><span style="color: #2b00fe;">- "(data/samples/mnist/, data/mnist/)"</span></div><div><span style="color: #2b00fe;">+ "(data/samples/MiDasV2/, data/MiDasV2/)"</span></div><div><span style="color: #2b00fe;"> << std::endl;</span></div><div><span style="color: #2b00fe;"> std::cout << "--useDLACore=N Specify a DLA engine for layers that support DLA. Value can range from 0 to n-1, "</span></div><div><span style="color: #2b00fe;"> "where n is the number of DLA engines on the platform."</span></div><div><span style="color: #2b00fe;">@@ -387,9 +377,9 @@</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> sample::gLogger.reportTestStart(sampleTest);</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">- SampleOnnxMNIST sample(initializeSampleParams(args));</span></div><div><span style="color: #2b00fe;">+ SampleOnnxMiDasV2 sample(initializeSampleParams(args));</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;">- sample::gLogInfo << "Building and running a GPU inference engine for Onnx MNIST" << std::endl;</span></div><div><span style="color: #2b00fe;">+ sample::gLogInfo << "Building and running a GPU inference engine for Onnx MiDasV2" << std::endl;</span></div><div><span style="color: #2b00fe;"> </span></div><div><span style="color: #2b00fe;"> if (!sample.build())</span></div><div><span style="color: #2b00fe;"> {</span></div></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-35387785372376588062021-09-10T08:15:00.001-07:002021-12-21T17:33:05.527-08:00Personal project - aircraft refueling data acquisition system<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2OPG1O5n875gB3GuRtqrFq6oyWWutC8KoreS-SW4Xs_6i1ZAawVtUJNXB03K5Zi3Pk1s1jINk8f5l3bBdGdtP9YJFh17dpTjE79Fl_Kf7ZoktFf3IBgq6K-yAMeuw4av9cTIJgn3WeBc/s2048/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1448" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2OPG1O5n875gB3GuRtqrFq6oyWWutC8KoreS-SW4Xs_6i1ZAawVtUJNXB03K5Zi3Pk1s1jINk8f5l3bBdGdtP9YJFh17dpTjE79Fl_Kf7ZoktFf3IBgq6K-yAMeuw4av9cTIJgn3WeBc/w453-h640/Untitled.png" width="453" /></a></div><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUsLpVhakzJ_mKmBViidRJkvAwDNZe4GzoVIcWyD4wfoyj0YHkCd45JNL6YzW7oSSEVSx6Z2D_xZPNnp_J80fJS1JVX1XbITLLbSao2CHuC4B0hIAC1qqHxAJQkcQrqt2_OXsCrpuX0Gc/s2048/IMG_20190122_135146.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUsLpVhakzJ_mKmBViidRJkvAwDNZe4GzoVIcWyD4wfoyj0YHkCd45JNL6YzW7oSSEVSx6Z2D_xZPNnp_J80fJS1JVX1XbITLLbSao2CHuC4B0hIAC1qqHxAJQkcQrqt2_OXsCrpuX0Gc/w480-h640/IMG_20190122_135146.jpg" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5NfONwGzMy-7boCZViyRTBlxhlQYpg1CVwarpJdRZN6emetJIavlOuL9pj08RSeW9ImhajRwrXehmMyoIFV0FgfUQ_4QSRg4mR6hDQrzFvj7OwNoA7p4a9HkMeHeznnG97d3nJwJ2Izo/s2048/IMG_20190122_103742.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5NfONwGzMy-7boCZViyRTBlxhlQYpg1CVwarpJdRZN6emetJIavlOuL9pj08RSeW9ImhajRwrXehmMyoIFV0FgfUQ_4QSRg4mR6hDQrzFvj7OwNoA7p4a9HkMeHeznnG97d3nJwJ2Izo/w640-h480/IMG_20190122_103742.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNvl4AqKXVM1yyNzblicdTkgtim1laA64norb4WZLFADmEZ2nFZxW1AkWUH4eJXBdqyl3QU4_gO8kTKjajdCYW3uvDEy3Dshg3eY_WBEgLFzx3Ep2005uIqKVj6LTB7_MO_cpFxviBd7I/s2048/IMG_20190529_103551.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNvl4AqKXVM1yyNzblicdTkgtim1laA64norb4WZLFADmEZ2nFZxW1AkWUH4eJXBdqyl3QU4_gO8kTKjajdCYW3uvDEy3Dshg3eY_WBEgLFzx3Ep2005uIqKVj6LTB7_MO_cpFxviBd7I/w640-h480/IMG_20190529_103551.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQktA4GfR_zpXiEckuxCupqiNO1KWw0CnoAfYQICfGivUGw5qfK6JPqNIMA80I8SruvrDBL47_OVvWGLj_grb006AhaSzodRFqQ5qTQjL7vD21PaY68xD12ah8cBHdbONj3z7smIgzaUY/s2048/IMG_20190126_020748.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQktA4GfR_zpXiEckuxCupqiNO1KWw0CnoAfYQICfGivUGw5qfK6JPqNIMA80I8SruvrDBL47_OVvWGLj_grb006AhaSzodRFqQ5qTQjL7vD21PaY68xD12ah8cBHdbONj3z7smIgzaUY/w640-h480/IMG_20190126_020748.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhpiJUbYJrkjVHwlwSK_yKlaoj2RxUsC1o12LMddtfCxkeZyTjmE4htsNUFarkYRKmcugy70zdRAbS5S45XjAXZQCQf8yMj6x2iE3j8f8q-YPkxD0StTOz500SxnXnCRVE2M6kqrSFNOo/s2048/IMG_20190126_024948.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhpiJUbYJrkjVHwlwSK_yKlaoj2RxUsC1o12LMddtfCxkeZyTjmE4htsNUFarkYRKmcugy70zdRAbS5S45XjAXZQCQf8yMj6x2iE3j8f8q-YPkxD0StTOz500SxnXnCRVE2M6kqrSFNOo/w640-h480/IMG_20190126_024948.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMlQm7IO0JrQGhU9V1DC_Q3EnugA_8ewTB8eLmK3B3TTs08iXZJ-0iN9na8CBOABIRns5aHW9yFbLQpHRgnZKAU9pcNhn2ImVJdzS989hbIi0svF8Zz9X6sp2Lq51Vpws8Ge1OmyE7rko/s2048/IMG_20190122_135008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMlQm7IO0JrQGhU9V1DC_Q3EnugA_8ewTB8eLmK3B3TTs08iXZJ-0iN9na8CBOABIRns5aHW9yFbLQpHRgnZKAU9pcNhn2ImVJdzS989hbIi0svF8Zz9X6sp2Lq51Vpws8Ge1OmyE7rko/w480-h640/IMG_20190122_135008.jpg" width="480" /></a></div><br /><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSI13L4mgh6IJTxYMp3V_lOmZO4QKjobVmDfRAzBmCQ9Z3dKVqwmW-pRZIpeCpoCy8Mc-BoaOlQEzQfDAeCKdK6gBMykdPhmu8ajE4-dIlX0JAxOiwDHFExsyujoaMHfTNXRbYZYPJKn8/s2048/IMG_20190529_093606.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSI13L4mgh6IJTxYMp3V_lOmZO4QKjobVmDfRAzBmCQ9Z3dKVqwmW-pRZIpeCpoCy8Mc-BoaOlQEzQfDAeCKdK6gBMykdPhmu8ajE4-dIlX0JAxOiwDHFExsyujoaMHfTNXRbYZYPJKn8/w640-h480/IMG_20190529_093606.jpg" width="640" /></a></div><br />史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-28949187520662051072021-07-20T10:31:00.003-07:002021-11-09T19:28:46.483-08:00dragon-eye-simulator - F3F electronic judging system simulator<p>The intention of this project is to testing algorithm of F3F electronic judging system on PC. It saves me a lot of time on slope<br /></p><p><a href="https://github.com/gigijoe/dragon-eye-simulator" target="_blank">https://github.com/gigijoe/dragon-eye-simulator</a><br /></p><p><a href="https://developer.nvidia.com/embedded/community/jetson-projects#dragon_eye" target="_blank">https://developer.nvidia.com/embedded/community/jetson-projects#dragon_eye</a><br /></p><p><a href="https://developer.nvidia.com/blog/jetson-project-of-the-month-dragon-eye-an-electronic-glider-race-judging-assistant/" target="_blank">https://developer.nvidia.com/blog/jetson-project-of-the-month-dragon-eye-an-electronic-glider-race-judging-assistant/</a><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAyKy8veN6v9NlygM7EfsoxjIvZbazDube58qZuYSELgwAAfSNHRzzKEcnu286Whqs8RndV4fF-BauXNwf-9r-t4nxTHZWVBdz41REpSNRWnjJxvi6AfA3kMG7P21C-uk1FH3GR6fxf1g/s999/Screenshot+from+2021-06-28+18-11-25.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAyKy8veN6v9NlygM7EfsoxjIvZbazDube58qZuYSELgwAAfSNHRzzKEcnu286Whqs8RndV4fF-BauXNwf-9r-t4nxTHZWVBdz41REpSNRWnjJxvi6AfA3kMG7P21C-uk1FH3GR6fxf1g/w348-h640/Screenshot+from+2021-06-28+18-11-25.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ8HU9T40NK_2J_QQrzZvJm9s5TjzDCYBXQW-14sEKoytW4zfp5CY6epIrXs1mj11es3jmOVkCgBYAhIFL-l7S4KWvk1_DNa5Ug8dMd_ULi-MV1VDlwkYnKbfECMwcullv8IKoUPwFV3k/s999/Screenshot+from+2021-06-28+03-13-20.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ8HU9T40NK_2J_QQrzZvJm9s5TjzDCYBXQW-14sEKoytW4zfp5CY6epIrXs1mj11es3jmOVkCgBYAhIFL-l7S4KWvk1_DNa5Ug8dMd_ULi-MV1VDlwkYnKbfECMwcullv8IKoUPwFV3k/w348-h640/Screenshot+from+2021-06-28+03-13-20.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqf2GaUrMmklK5Q6nvSnvuNHPKTEOr_83bGsV2OuQ042pPsEFs9JEv6UcRnruJZvPRd3T0x7tYKJJTL92PLC2QHWbYZCGMJ6oIlUXm8KDK5a_ddahAVzd99I_WoPEoySBgYhwwKirFp8/s999/Screenshot+from+2021-06-28+14-01-54.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqf2GaUrMmklK5Q6nvSnvuNHPKTEOr_83bGsV2OuQ042pPsEFs9JEv6UcRnruJZvPRd3T0x7tYKJJTL92PLC2QHWbYZCGMJ6oIlUXm8KDK5a_ddahAVzd99I_WoPEoySBgYhwwKirFp8/w348-h640/Screenshot+from+2021-06-28+14-01-54.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6U8xUjouppkPfE9u0TdGkmpZKhdgQ1FGJyIPq7DY7t0LScYm-GMiOZSVhvz25eJgtJgXOO09DQDS9BjOYisTfBqoL0clOHyFQvuBT3vgZ9RNWX6y7yASnpv4cmOWqhderIHtQueW2WyQ/s999/Screenshot+from+2021-06-28+15-47-43.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6U8xUjouppkPfE9u0TdGkmpZKhdgQ1FGJyIPq7DY7t0LScYm-GMiOZSVhvz25eJgtJgXOO09DQDS9BjOYisTfBqoL0clOHyFQvuBT3vgZ9RNWX6y7yASnpv4cmOWqhderIHtQueW2WyQ/w348-h640/Screenshot+from+2021-06-28+15-47-43.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlG_V-2Pmui26Ig5HIFSs-bT_alaoCFr8nKkZcq5IYLVRUGO1jC5tDkyrQoVDfeTz3HpO3I5JzKipVOBEES0lqA4McOU9YeWx0hATxCBS0Mosno04kjp9v99QW6F1eecGrX1V3-tSIRTc/s999/Screenshot+from+2021-06-28+16-20-01.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlG_V-2Pmui26Ig5HIFSs-bT_alaoCFr8nKkZcq5IYLVRUGO1jC5tDkyrQoVDfeTz3HpO3I5JzKipVOBEES0lqA4McOU9YeWx0hATxCBS0Mosno04kjp9v99QW6F1eecGrX1V3-tSIRTc/w348-h640/Screenshot+from+2021-06-28+16-20-01.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQr6ufhTkG-k0exqnOKzqAQ2AzykmMos1v5l5IRE8PnZIv7BEVKhL0wO10ty21k5vwk-qEFrrF6yb0bqMtx_Ffn_sasAD9Ef6Tf0jXKcI0XCbgae39eSzU5vPb8SD3hyphenhyphenkweTQfx9O9HBI/s999/Screenshot+from+2021-06-28+17-29-19.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQr6ufhTkG-k0exqnOKzqAQ2AzykmMos1v5l5IRE8PnZIv7BEVKhL0wO10ty21k5vwk-qEFrrF6yb0bqMtx_Ffn_sasAD9Ef6Tf0jXKcI0XCbgae39eSzU5vPb8SD3hyphenhyphenkweTQfx9O9HBI/w348-h640/Screenshot+from+2021-06-28+17-29-19.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv4XMnA04SvGuOck5ITClc6C0kZBqZVBwDrV8QtgbZiP4pcFxeNKm3Rs0hc9_jc3c6GH2JIyaN_odqWUbILmeZBR9P5yisfw1HG2jD0jEcItNc_uXUP9d0O7aEusueGGDZuHThWG9tdPA/s999/Screenshot+from+2021-06-28+17-30-19.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv4XMnA04SvGuOck5ITClc6C0kZBqZVBwDrV8QtgbZiP4pcFxeNKm3Rs0hc9_jc3c6GH2JIyaN_odqWUbILmeZBR9P5yisfw1HG2jD0jEcItNc_uXUP9d0O7aEusueGGDZuHThWG9tdPA/w348-h640/Screenshot+from+2021-06-28+17-30-19.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMBt9BlDvrbR1PwoQs_vCObTSCVjTntbi-NKVmYCjFz0Fu1v8Mpxz29DTR_4fkA0HQ0x2NvaMzkCKw7ztUTMrVStfJBiwqwDNboR50aforCV9JT7izSA0k1Bcc0iTzw6v8LGBn3DtUa-Q/s999/Screenshot+from+2021-06-28+17-32-13.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMBt9BlDvrbR1PwoQs_vCObTSCVjTntbi-NKVmYCjFz0Fu1v8Mpxz29DTR_4fkA0HQ0x2NvaMzkCKw7ztUTMrVStfJBiwqwDNboR50aforCV9JT7izSA0k1Bcc0iTzw6v8LGBn3DtUa-Q/w348-h640/Screenshot+from+2021-06-28+17-32-13.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm_-gO2nnk5iGr0Xb3Ixho3-q0FwOgaHxUTLO1dkluIIjzvg0OCe_u-GZclmSDLu-q8I-UdHIAQxHSLiqB1FI9F1n8nlDYVbNNefGEOVdXgZeBczq0MX8oI6Mw1dU_XnQokS-7U5cYQSY/s999/Screenshot+from+2021-06-28+17-37-16.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm_-gO2nnk5iGr0Xb3Ixho3-q0FwOgaHxUTLO1dkluIIjzvg0OCe_u-GZclmSDLu-q8I-UdHIAQxHSLiqB1FI9F1n8nlDYVbNNefGEOVdXgZeBczq0MX8oI6Mw1dU_XnQokS-7U5cYQSY/w348-h640/Screenshot+from+2021-06-28+17-37-16.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf8TVQmR-fnsE8B-CAKWDryaFT5acY8FTEKIlTl8AvQBcSwtKdkADsj6f6ZP2Y2bH4-N6NwbYDs10AyHt1K7x1s3_Cqt-Gfchhyphenhyphenv3IL-57osyzXwF1WrtSvZMEuyfPH1kJA5khPcQkxkU/s999/Screenshot+from+2021-06-28+17-41-36.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf8TVQmR-fnsE8B-CAKWDryaFT5acY8FTEKIlTl8AvQBcSwtKdkADsj6f6ZP2Y2bH4-N6NwbYDs10AyHt1K7x1s3_Cqt-Gfchhyphenhyphenv3IL-57osyzXwF1WrtSvZMEuyfPH1kJA5khPcQkxkU/w348-h640/Screenshot+from+2021-06-28+17-41-36.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtl07TeA1lSt7w-Cx5D-a5NoQIxV7sn-t1bo72RSjGzPC-rF6tk2SfyV0dDcQbx1ZYwDe0vxaTDhEGnCmzMJ4U4qVvhisybmwMh5NtTakwmj4nhNFZCZ1g4YwvJItdfofu50wv3cEurjY/s999/Screenshot+from+2021-06-28+17-45-00.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtl07TeA1lSt7w-Cx5D-a5NoQIxV7sn-t1bo72RSjGzPC-rF6tk2SfyV0dDcQbx1ZYwDe0vxaTDhEGnCmzMJ4U4qVvhisybmwMh5NtTakwmj4nhNFZCZ1g4YwvJItdfofu50wv3cEurjY/w348-h640/Screenshot+from+2021-06-28+17-45-00.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KADxVb9SPmhSHDECYyWUBaummDcXdBw_Xtjys3QDiTq2kxL4DFYX78-Iul9OdZH7NWzVu4SV3ZCfGwyK8kNQKKMnG2BdHXphLC1HfHitZ1XQjI3fNRFRiD2YrYB2OOMBFdQtFCAhSDM/s999/Screenshot+from+2021-06-28+17-53-05.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KADxVb9SPmhSHDECYyWUBaummDcXdBw_Xtjys3QDiTq2kxL4DFYX78-Iul9OdZH7NWzVu4SV3ZCfGwyK8kNQKKMnG2BdHXphLC1HfHitZ1XQjI3fNRFRiD2YrYB2OOMBFdQtFCAhSDM/w348-h640/Screenshot+from+2021-06-28+17-53-05.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjLWEFaSeOF3jlNrpADv6BAA5J-F8X2nA7EG4LxwTZm6s426k-eIN_-6WvTwUAJNVMx6NhzqKKi1spSjlUhG6eW1T2kyxP5kGTwLhPQetmoFwbwMs6ITpuao3M9cpYDZ8dLsOjuQ6yuys/s999/Screenshot+from+2021-06-28+19-26-27.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjLWEFaSeOF3jlNrpADv6BAA5J-F8X2nA7EG4LxwTZm6s426k-eIN_-6WvTwUAJNVMx6NhzqKKi1spSjlUhG6eW1T2kyxP5kGTwLhPQetmoFwbwMs6ITpuao3M9cpYDZ8dLsOjuQ6yuys/w348-h640/Screenshot+from+2021-06-28+19-26-27.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinJOrVUujqMAuWeO2gIESlPGZ220tkuXe4_yJj-dxdnmPg3z7PfR5ZzwUXdLIw7DjpI_CQat0p2kkVjEqGkZZZ06XamlpZaylH3ZATAzAtV-ZnkKM5aV6ykAnVf-iJSStsyj8RESj2gk4/s999/Screenshot+from+2021-06-28+19-29-42.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinJOrVUujqMAuWeO2gIESlPGZ220tkuXe4_yJj-dxdnmPg3z7PfR5ZzwUXdLIw7DjpI_CQat0p2kkVjEqGkZZZ06XamlpZaylH3ZATAzAtV-ZnkKM5aV6ykAnVf-iJSStsyj8RESj2gk4/w348-h640/Screenshot+from+2021-06-28+19-29-42.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswmH-gz2yasO8wUl0miLS1z9btUL97-f5u0Xog9HjJwPptoLwpf1p-d6WBRi3pu2U5X5UtZgX1zv_YPvimdtVy5mUTpHZcU95AY1v4JWaldZEK9UAO9PirYm7xlHm-YJkjbhyphenhyphenVstULic/s999/Screenshot+from+2021-06-28+19-34-56.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswmH-gz2yasO8wUl0miLS1z9btUL97-f5u0Xog9HjJwPptoLwpf1p-d6WBRi3pu2U5X5UtZgX1zv_YPvimdtVy5mUTpHZcU95AY1v4JWaldZEK9UAO9PirYm7xlHm-YJkjbhyphenhyphenVstULic/w348-h640/Screenshot+from+2021-06-28+19-34-56.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivmtgZhJnLqRPklYtjNVkLq6TFeuuc18GftttbRfM02i4xBEi6-YYowbw8SKJkep19fzEzvSNJqormH-raVE38nXAd6LqgYCJ_pTxudk26NBv-HW5CtcaymxUeqR2tn91wVR9R1O6umRM/s999/Screenshot+from+2021-06-28+19-40-22.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivmtgZhJnLqRPklYtjNVkLq6TFeuuc18GftttbRfM02i4xBEi6-YYowbw8SKJkep19fzEzvSNJqormH-raVE38nXAd6LqgYCJ_pTxudk26NBv-HW5CtcaymxUeqR2tn91wVR9R1O6umRM/w348-h640/Screenshot+from+2021-06-28+19-40-22.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6pid76FK2HSUcWo90U8mc7DoNIGep-LpNfSnNtNEPZwpL6Ccl7cX6pD8vGPVtn5myb4PGs72skUdS2_Kx_5KWkxyGYHAK_q-9GOciWT9o1IpNl85vYRLZmLx4W4BlZEInLGcWkGP8WhM/s999/Screenshot+from+2021-06-28+23-38-44.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6pid76FK2HSUcWo90U8mc7DoNIGep-LpNfSnNtNEPZwpL6Ccl7cX6pD8vGPVtn5myb4PGs72skUdS2_Kx_5KWkxyGYHAK_q-9GOciWT9o1IpNl85vYRLZmLx4W4BlZEInLGcWkGP8WhM/w348-h640/Screenshot+from+2021-06-28+23-38-44.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjakSEHHFihs2EpBjq4x28QWkED2e30XlhWX8QK__5aEeTWdbW_v-igpYhd2uxAanWvn1xnoiWNN6VY_VG6jRchc5SR0y8M95vbARz4t5sjibMmFx59qJn6qLFliJppeNGnR5kxPmrd_oE/s999/Screenshot+from+2021-06-29+14-19-59.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjakSEHHFihs2EpBjq4x28QWkED2e30XlhWX8QK__5aEeTWdbW_v-igpYhd2uxAanWvn1xnoiWNN6VY_VG6jRchc5SR0y8M95vbARz4t5sjibMmFx59qJn6qLFliJppeNGnR5kxPmrd_oE/w348-h640/Screenshot+from+2021-06-29+14-19-59.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLFPAO9HXVqe1ptSg4JHFKJhP5HlL-bbGuAdcyt-auWuwvP1yRTY4SLOFdFVtUiMCPBmFpv3GEoZJvJTWwxZK-63GPoBs00Jin0KBzYE8p9B4e9kq34EBCrQEXsN8vfXKcfoKUs1mLJn4/s999/Screenshot+from+2021-06-29+14-27-03.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLFPAO9HXVqe1ptSg4JHFKJhP5HlL-bbGuAdcyt-auWuwvP1yRTY4SLOFdFVtUiMCPBmFpv3GEoZJvJTWwxZK-63GPoBs00Jin0KBzYE8p9B4e9kq34EBCrQEXsN8vfXKcfoKUs1mLJn4/w348-h640/Screenshot+from+2021-06-29+14-27-03.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7mRzf-S_39pQK1hfMm22VVOcRv6FNhk_UPQpndOYZFsIK3S8PqPaLfmxYQAyiTPVHYgdZT1IzDLiffJpIqeN5hnXZgl6WRU8xAS1gbSVAdNJ3pe40cTpsuUzprD29LlyVCsPD3uHHZBQ/s999/Screenshot+from+2021-06-29+20-09-20.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7mRzf-S_39pQK1hfMm22VVOcRv6FNhk_UPQpndOYZFsIK3S8PqPaLfmxYQAyiTPVHYgdZT1IzDLiffJpIqeN5hnXZgl6WRU8xAS1gbSVAdNJ3pe40cTpsuUzprD29LlyVCsPD3uHHZBQ/w348-h640/Screenshot+from+2021-06-29+20-09-20.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimcKLbuvPx6SZrHdyAG7SEqribdRhVzRaen_-Ph2-Iu2ysD1L9Bv8mttokT7Ey6AZCG02mNYKCbWwPA1Cr1inf97B7Wy69GUewRLxRD7sM4l45xB0Fmsy8Cmt4MHDk6plZfq14xFRdoTo/s999/Screenshot+from+2021-06-29+20-15-37.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimcKLbuvPx6SZrHdyAG7SEqribdRhVzRaen_-Ph2-Iu2ysD1L9Bv8mttokT7Ey6AZCG02mNYKCbWwPA1Cr1inf97B7Wy69GUewRLxRD7sM4l45xB0Fmsy8Cmt4MHDk6plZfq14xFRdoTo/w348-h640/Screenshot+from+2021-06-29+20-15-37.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRFw6xRseP2N6ronY30TjCKDyhduVa3TIG381h19ElcM_vRwhwDf9Kqh-hlX6quPmyRGu_Hl7Cqsx-tYzdtk6BKBHd43sY4xWKcaOAQ7qkzPf9PG6E7hemS3wv04ComOYnn_ND7TayOTM/s999/Screenshot+from+2021-06-29+20-53-09.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRFw6xRseP2N6ronY30TjCKDyhduVa3TIG381h19ElcM_vRwhwDf9Kqh-hlX6quPmyRGu_Hl7Cqsx-tYzdtk6BKBHd43sY4xWKcaOAQ7qkzPf9PG6E7hemS3wv04ComOYnn_ND7TayOTM/w348-h640/Screenshot+from+2021-06-29+20-53-09.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhutDOpqK23WQddcJMnRStLM3Lfc3dRzdRws4u9P9exTt2SWXrPT694Hryeo7MBnTSvl2uLEC3N59IhtqFRjkVfsbOyhXCoKHga8HYVevcyK62n1i3UTA_yxPsTco2XLOTPQIDFoGMuJ2g/s999/Screenshot+from+2021-06-29+21-00-38.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhutDOpqK23WQddcJMnRStLM3Lfc3dRzdRws4u9P9exTt2SWXrPT694Hryeo7MBnTSvl2uLEC3N59IhtqFRjkVfsbOyhXCoKHga8HYVevcyK62n1i3UTA_yxPsTco2XLOTPQIDFoGMuJ2g/w348-h640/Screenshot+from+2021-06-29+21-00-38.png" width="348" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk524kyi-mnquKftr6TZs88r6-Aa594JXYexzob-4hlP8_cEyNpQHJvnCdgCtR1JPI7Gg83lTCINOltsVzxAnafqnllQS36EV_PDv2gI1NQu7Ul1BEa1gSKVd31Sox2Q1aI0zVL5PQ-Iw/s999/Screenshot+from+2021-07-04+19-44-37.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="999" data-original-width="542" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk524kyi-mnquKftr6TZs88r6-Aa594JXYexzob-4hlP8_cEyNpQHJvnCdgCtR1JPI7Gg83lTCINOltsVzxAnafqnllQS36EV_PDv2gI1NQu7Ul1BEa1gSKVd31Sox2Q1aI0zVL5PQ-Iw/w348-h640/Screenshot+from+2021-07-04+19-44-37.png" width="348" /></a></div><br /><p><br /></p>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-57633479595385628682021-06-08T23:10:00.004-07:002021-06-11T03:06:58.934-07:00Jetson nano DeepStream-5.1 YOLOv4<h1 id="h1-jetson-nano-deepstream-yolov4" style="border-bottom: 1px solid rgb(238, 238, 238); box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 2.25em; line-height: 1.2; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px 0px 16px; padding: 0px 0px 0.3em; position: relative;">Jetson nano DeepStream-5.1 YOLOv4</h1><h3 id="h3-download-pytorch-yolov4" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Download pytorch-YOLOv4" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Download pytorch-YOLOv4</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">git clone https</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">//github.com/Tianxiaomo/pytorch-YOLOv4.git</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cd pytorch</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">YOLOv4</span></code></li></ol></pre><h3 id="h3-download-yolov4-cfg-amp-yolov4-weight" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Download yolov4.cfg & yolov4.weight" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Download yolov4.cfg & yolov4.weight</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">wget https</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">//raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov4.cfg</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">wget https</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">//github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights</span></code></li></ol></pre><h3 id="h3-edit-yolov4-cfg" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Edit yolov4.cfg" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Edit yolov4.cfg</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">net</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">#batch=64</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">#subdivisions=8</span></code></li><li class="L3" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">batch</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span></code></li><li class="L4" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">subdivisions</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span></code></li><li class="L5" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;"># Training</span></code></li><li class="L6" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">#width=512</span></code></li><li class="L7" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">#height=512</span></code></li><li class="L8" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">#width=608</span></code></li><li class="L9" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">#height=608</span></code></li><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">width</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">416</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">height</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">416</span></code></li></ol></pre><h3 id="h3-install-torch" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Install torch" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Install torch</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">pip3 install torch</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">pip3 install torchvision</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">pip3 install onnxruntime</span></code></li></ol></pre><h3 id="h3-install-onnx" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Install onnx" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Install onnx</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sudo apt</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">get</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> install protobuf</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">compiler libprotoc</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">dev</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">pip3 install onnx </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">i https</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">//pypi.doubanio.com/simple/</span></code></li></ol></pre><h3 id="h3-enable-swap" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Enable swap" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Enable swap</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sudo fallocate </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">l </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.0G</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">swapfile</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sudo chmod </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">600</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">swapfile</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sudo mkswap </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">swapfile</span></code></li><li class="L3" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sudo swapon </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">swapfile</span></code></li></ol></pre><h3 id="h3-transform-darknet-to-onnx" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Transform darknet to onnx" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Transform darknet to onnx</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">export</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> OMP_NUM_THREADS</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">python3 demo_darknet2onnx</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">py yolov4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cfg yolov4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">weights </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">./</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">data</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">giraffe</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">jpg </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span></code></li></ol></pre><h3 id="h3-transform-onnx-to-tensorrt-engine" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Transform onnx to TensorRT engine" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Transform onnx to TensorRT engine</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="str" style="box-sizing: border-box; color: #008800; margin: 0px; padding: 0px;">/usr/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">src</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">tensorrt</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">bin</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">trtexec </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">--</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">onnx</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_static</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">onnx \</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">--</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">explicitBatch </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">--</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">saveEngine</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_fp16</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine \</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">--</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">workspace</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">2048</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">--</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">fp16</span></code></li></ol></pre><h3 id="h3-download-yolov4_deepstream" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Download yolov4_deepstream" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Download yolov4_deepstream</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cd </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">opt</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">nvidia</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sources</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">git clone https</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="com" style="box-sizing: border-box; color: #880000; margin: 0px; padding: 0px;">//github.com/NVIDIA-AI-IOT/yolov4_deepstream.git</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cd yolov4_deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/deepstream_yolov4</span></code></li></ol></pre><h3 id="h3-copy-tensorrt-engine" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Copy TensorRT engine" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Copy TensorRT engine</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cp $HOME</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">pytorch</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">YOLOv4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_fp16</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span></code></li></ol></pre><h3 id="h3-edit-deepstream_app_config_yolov4-txt" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Edit deepstream_app_config_yoloV4.txt" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Edit deepstream_app_config_yoloV4.txt</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">model</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">file</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_fp16</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine</span></code></li></ol></pre><h3 id="h3-edit-config_infer_primary_yolov4-txt" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Edit config_infer_primary_yoloV4.txt" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Edit config_infer_primary_yoloV4.txt</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">model</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">file</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_fp16</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">network</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">mode</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">2</span></code></li></ol></pre><h3 id="h3-build" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Build" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Build</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">export</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> CUDA_VER</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">10.0</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">make </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">C nvdsinfer_custom_impl_Yolo</span></code></li></ol></pre><h3 id="h3-run" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Run" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Run</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">unset DISPLAY</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">rm </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">rf $HOME</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cache</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">gstreamer</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1.0</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">registry</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">aarch64</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">bin</span></code></li></ol></pre><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sudo route add </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">net </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">224.0</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0.0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> netmask </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">255.0</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0.0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> wlan9</span></code></li></ol></pre><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 16px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">app </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">c deepstream_app_config_yoloV4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">txt</span></code></li></ol></pre><h3 id="h3-console-output" style="box-sizing: border-box; color: #333333; font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 1.5em; line-height: 1.43; margin: 1em 0px 16px; padding: 0px; position: relative;"><a class="reference-link" name="Console output" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; margin: 0px; padding: 0px;"></a>Console output</h3><pre class="prettyprint linenums prettyprinted" style="background: rgb(246, 246, 246); border-radius: 3px; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #333333; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 11.9px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.6; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; white-space: pre-wrap;"><ol class="linenums" style="box-sizing: border-box; color: #999999; margin: 0px; padding: 0px 0px 0px 2.5em;"><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Unknown</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">or</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> legacy key specified </span><span class="str" style="box-sizing: border-box; color: #008800; margin: 0px; padding: 0px;">'is-classifier'</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">for</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">group</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">property</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">00</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">09.526815556</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">25328</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0x21dc8d0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> INFO nvinfer gstnvinfer</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cpp</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">619</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">gst_nvinfer_logger</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:<</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">primary_gie</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">></span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">NvDsInferContext</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">UID </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Info</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">from</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">NvDsInferContextImpl</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">::</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deserializeEngineAndBackend</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">()</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;"><</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">nvdsinfer_context_impl</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cpp</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1702</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">></span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">UID </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> deserialized trt engine </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">from</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="str" style="box-sizing: border-box; color: #008800; margin: 0px; padding: 0px;">/opt/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">nvidia</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">5.1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sources</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream_yolov4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_fp16</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">INFO</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Implicit</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Engine</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Info</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> layers num</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">3</span></code></li><li class="L3" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> INPUT kFLOAT input </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">3x416x416</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L4" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> OUTPUT kFLOAT boxes </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">10647x1x4</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L5" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">2</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> OUTPUT kFLOAT confs </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">10647x80</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L6" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L7" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">00</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">09.527013842</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">25328</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0x21dc8d0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> INFO nvinfer gstnvinfer</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cpp</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">619</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">gst_nvinfer_logger</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:<</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">primary_gie</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">></span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">NvDsInferContext</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">UID </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Info</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">from</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">NvDsInferContextImpl</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">::</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">generateBackendContext</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">()</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;"><</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">nvdsinfer_context_impl</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cpp</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1806</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">></span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">UID </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Use</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> deserialized engine model</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="str" style="box-sizing: border-box; color: #008800; margin: 0px; padding: 0px;">/opt/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">nvidia</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">5.1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sources</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream_yolov4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">yolov4_1_3_416_416_fp16</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">engine</span></code></li><li class="L8" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">00</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">09.649444159</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">25328</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0x21dc8d0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> INFO nvinfer gstnvinfer_impl</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">cpp</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">313</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">notifyLoadModelStatus</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:<</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">primary_gie</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">></span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">[</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">UID </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">]:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Load</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">new</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> model</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="str" style="box-sizing: border-box; color: #008800; margin: 0px; padding: 0px;">/opt/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">nvidia</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">5.1</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">sources</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">deepstream_yolov4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">/</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">config_infer_primary_yoloV4</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">txt sucessfully</span></code></li><li class="L9" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Runtime</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> commands</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> h</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Print</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">this</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> help</span></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> q</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Quit</span></code></li><li class="L3" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L4" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> p</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Pause</span></code></li><li class="L5" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> r</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Resume</span></code></li><li class="L6" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L7" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L8" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">PERF</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> FPS </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">(</span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Avg</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">)</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L9" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">PERF</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0.00</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">(</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">0.00</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">)</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> INFO</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;"><</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">bus_callback</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">181</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">>:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Pipeline</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> ready</span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L2" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Opening</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">in</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> BLOCKING MODE</span></code></li><li class="L3" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Opening</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="box-sizing: border-box; color: #000088; margin: 0px; padding: 0px;">in</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> BLOCKING MODE </span></code></li><li class="L4" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">NvMMLiteOpen</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Block</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">BlockType</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">261</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L5" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">NVMEDIA</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Reading</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> vendor</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">tegra</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">.</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">display</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">-</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">size </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> status</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">6</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L6" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">NvMMLiteBlockCreate</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Block</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">BlockType</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">=</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">261</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L7" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> INFO</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;"><</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">bus_callback</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">167</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">>:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="box-sizing: border-box; color: #660066; margin: 0px; padding: 0px;">Pipeline</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> running</span></code></li><li class="L8" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"></code></li><li class="L9" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">PERF</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.92</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">(</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.82</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">)</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L0" style="box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">PERF</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.92</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">(</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.92</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">)</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span></code></li><li class="L1" style="background: rgb(238, 238, 238); box-sizing: border-box; list-style-type: decimal; margin: 0px; padding: 0px;"><code style="background: 0px 0px; border-radius: 3px; border: none; box-sizing: border-box; display: inline; font-family: "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; font-size: 14px; line-height: inherit; margin: 0px; max-width: initial; overflow-wrap: normal; overflow: initial; padding: 0px;"><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">**</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;">PERF</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">:</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.92</span><span class="pln" style="box-sizing: border-box; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">(</span><span class="lit" style="box-sizing: border-box; color: #006666; margin: 0px; padding: 0px;">4.88</span><span class="pun" style="box-sizing: border-box; color: #666600; margin: 0px; padding: 0px;">)</span></code></li></ol></pre><p> </p>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-76112571957175051092021-06-03T23:30:00.002-07:002021-06-03T23:30:51.314-07:00Jetson nano build custom SD image (L4T 32.5.1)<span style="color: #38761d;">cd $HOME/JetsonNano</span><br /><br /><div>#</div><div># Download L4T Jetson Driver Package<br />#</div><div><br /></div><div><span style="color: #38761d;">wget https://developer.nvidia.com/embedded/l4t/r32_release_v5.1/r32_release_v5.1/t210/jetson-210_linux_r32.5.1_aarch64.tbz2</span></div><div><br /></div><div><div>#</div><div># Download L4T Sample Root File System:</div><div>#</div><div><br /></div><div><span style="color: #38761d;">wget https://developer.nvidia.com/embedded/l4t/r32_release_v5.1/r32_release_v5.1/t210/tegra_linux_sample-root-filesystem_r32.5.1_aarch64.tbz2</span></div></div><div><br /></div><div>#</div><div># Install QEMU for host</div><div>#</div><div><br /></div><div><span style="color: #38761d;">sudo apt-get install qemu-user-static</span></div><div><br /></div><div>#</div><div># Unpack L4T R32.5.1</div><div>#</div><div><br /></div><div><span style="color: #38761d;">bzip2 -dc Jetson-210_Linux_R32.5.1_aarch64.tbz2 | tar xvf -</span></div><div><br /></div><div>#</div><div># Unpack simple root filesystem</div><div>#</div><div><br /></div><div><span style="color: #38761d;">cd Linux_for_Tegra/rootfs/</span></div><div><div><span style="color: #38761d;">sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R32.5.1_aarch64.tbz2</span></div></div><div><br /></div><div>#</div><div># Apply binary</div><div>#</div><div><br /></div><div><div><span style="color: #38761d;">cd ../</span></div><div><span style="color: #38761d;">sudo ./apply_binaries.sh</span></div></div><div><br /></div><div>#</div><div># Correct apt source (t210 for jetson nano)</div><div>#</div><div><br /></div><div><div><span style="color: #38761d;">cd rootfs/</span></div><div><span style="color: #38761d;">sudo vi etc/apt/sources.list.d/nvidia-l4t-apt-source.list</span></div></div><div><br /></div><div><div><span style="color: #134f5c;">-deb https://repo.download.nvidia.com/jetson/<SOC> r32.5 main</span></div><div><span style="color: #134f5c;">+deb https://repo.download.nvidia.com/jetson/t210 r32.5 main</span></div></div><div><br /></div><div>#</div><div># Chang root to install custom package / software</div><div>#</div><div><br /></div><div><div><span style="color: #38761d;">cd ../../</span></div><div><span style="color: #38761d;">git clone https://github.com/mdegans/enter_chroot.git</span></div><div><span style="color: #38761d;">sudo cp enter_chroot/enter_chroot.sh /usr/bin/</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">sudo enter_chroot.sh Linux_for_Tegra/rootfs/</span></div></div><div><span style="color: #38761d;"><br /></span></div><div><div><span style="color: #38761d;">cd /</span></div><div><span style="color: #38761d;">rm -rf README.txt</span></div></div><div><span style="color: #38761d;"><br /></span></div><div><div><span style="color: #38761d;">apt update</span></div></div><div><br /></div><div>@@@ Install every thing else @@@</div><div><br /></div><div><span style="color: #38761d;">apt install cuda-core-10.2</span></div><div><span style="color: #38761d;">...</span></div><div><span style="color: #38761d;">...</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">exit</span></div><div><br /></div><div>#</div><div># Build custom SD image (-r 300 for jetson nano H/W B01)</div><div>#</div><div><br /></div><div><div><span style="color: #38761d;">cd Linux_for_Tegra/</span></div><div><span style="color: #38761d;">sudo tools/jetson-disk-image-creator.sh -o sd-blob-b01.img -b jetson-nano -r 300</span></div></div><div><br /></div><div>#</div><div># Reference</div><div>#</div><div><br /></div><div><a href="https://forums.developer.nvidia.com/t/applying-a-preempt-rt-patch-to-jetpack-4-5-on-jetson-nano/168428/4" target="_blank">https://forums.developer.nvidia.com/t/applying-a-preempt-rt-patch-to-jetpack-4-5-on-jetson-nano/168428/4</a><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-90843507368894143772021-05-28T22:02:00.003-07:002021-05-28T22:02:31.931-07:00Jetson nano clone SD card (For Jetpack 4.5.1)<p> The actual size of SD card is different from each other. It will be problem when SD card image file size is large than target SD card.</p><span style="color: #6aa84f;">sudo gunzip -c ~/dragon-eye.img.gz | sudo dd of=/dev/mmcblk0 bs=64k status=progress</span><br /><span style="color: #6aa84f;">62261100544 bytes (62 GB, 58 GiB) copied, 3227 s, 19.3 MB/s</span><br /><span style="color: red;">dd: error writing '/dev/mmcblk0': No space left on device</span><br /><span style="color: #6aa84f;">146314+1607917 records in</span><br /><span style="color: #6aa84f;">146314+1607916 records out</span><br /><span style="color: #6aa84f;">62277025792 bytes (62 GB, 58 GiB) copied, 3266.33 s, 19.1 MB/s</span><div><br /></div><div>Jetson nano will refuse to boot with this SD card. </div><div>I found a procedure to fix the probelm</div><div><br /></div><div>1.Shrink APP partition (ext4) before clone SD card to image file. Reserve 512MB space on tail.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq9AvOAJOESQFBYO3VIOVkUQUGkl0ll6v1BvjEJRw3CkxXoM_l_P5Xahwy9miuYmtHWbjgDZ2wM-wOexVRgGhwotdDdVtlJ4oBZNmrrCpyFVvLvhFS65KpSfRP42CWh75lQAQeqJ2qKkA/s795/Screenshot+from+2021-05-29+12-23-52.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="555" data-original-width="795" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq9AvOAJOESQFBYO3VIOVkUQUGkl0ll6v1BvjEJRw3CkxXoM_l_P5Xahwy9miuYmtHWbjgDZ2wM-wOexVRgGhwotdDdVtlJ4oBZNmrrCpyFVvLvhFS65KpSfRP42CWh75lQAQeqJ2qKkA/w640-h446/Screenshot+from+2021-05-29+12-23-52.png" width="640" /></a></div><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmKjgYxFVAWSVmQzLP2YPyrhEMEE4dKHq2kAEL1S-5-7OOEOoINJelqm1Io_jbJ7z_b5rAtW9hoBJlhXzZ1UQ-e7-_rJGZ56sqJ1_LuvrzeazCtF1cAInhLUGvOkWZ7J9V6aJnn07evrQ/s554/Screenshot+from+2021-05-29+12-24-03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="327" data-original-width="554" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmKjgYxFVAWSVmQzLP2YPyrhEMEE4dKHq2kAEL1S-5-7OOEOoINJelqm1Io_jbJ7z_b5rAtW9hoBJlhXzZ1UQ-e7-_rJGZ56sqJ1_LuvrzeazCtF1cAInhLUGvOkWZ7J9V6aJnn07evrQ/w640-h378/Screenshot+from+2021-05-29+12-24-03.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilKrkHfb1uVt_6WkQHPVsK3nXSzoKSxRoMRG90FmmOtHgyjtfYHVEbDImUc54Mq0yIExzIhe04skbxI6JE7OdJcy0qqNHqaWGlj8nx8ZhdYVHL44bEgTKjUM7LW_cTlAFCc2pTfMB8u6g/s554/Screenshot+from+2021-05-29+12-25-19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="327" data-original-width="554" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilKrkHfb1uVt_6WkQHPVsK3nXSzoKSxRoMRG90FmmOtHgyjtfYHVEbDImUc54Mq0yIExzIhe04skbxI6JE7OdJcy0qqNHqaWGlj8nx8ZhdYVHL44bEgTKjUM7LW_cTlAFCc2pTfMB8u6g/w640-h378/Screenshot+from+2021-05-29+12-25-19.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjWj1LbX4B-HYXqYJ4IGsx6hKNh1RU8DmzKIZeumSs2DNj83RMqNFAEzS5iIFjTu4EGgYaM6fxjtOskv8Y6MfdwUbeDqMpjtzYBt3RpdlPLqtIGsE4FDYvB6W6ki-qJ1LRMoxeFwWGi90/s795/Screenshot+from+2021-05-29+12-25-29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="555" data-original-width="795" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjWj1LbX4B-HYXqYJ4IGsx6hKNh1RU8DmzKIZeumSs2DNj83RMqNFAEzS5iIFjTu4EGgYaM6fxjtOskv8Y6MfdwUbeDqMpjtzYBt3RpdlPLqtIGsE4FDYvB6W6ki-qJ1LRMoxeFwWGi90/w640-h446/Screenshot+from+2021-05-29+12-25-29.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbw2qsomZDylppqTC6zRrL4JKpMEa0bUhGjd7_oBkWtLc7fuprj87zu5b75K2wAta28BzSpamK79CV4skMA6lwO5Es0Zz4L88Jk7axPz_agVKjuyaUk5i91Itx0D79UDtmQtOFb89kUpY/s778/Screenshot+from+2021-05-29+12-26-00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="541" data-original-width="778" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbw2qsomZDylppqTC6zRrL4JKpMEa0bUhGjd7_oBkWtLc7fuprj87zu5b75K2wAta28BzSpamK79CV4skMA6lwO5Es0Zz4L88Jk7axPz_agVKjuyaUk5i91Itx0D79UDtmQtOFb89kUpY/w640-h446/Screenshot+from+2021-05-29+12-26-00.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhryK5RaPdCNkqHMkPVk6fBjQQsbVSk3Pe4kHnH9yZcYjDfmoLCWX6_FwJ0zKyBsBldHSJhXbyiUFyKkZFYAPfCUQM2YPz8Iq_Lywuxwg2ORZyWD08cTR04m07XEAK4BbDtez3k2I08Sus/s720/Screenshot+from+2021-05-29+12-26-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="305" data-original-width="720" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhryK5RaPdCNkqHMkPVk6fBjQQsbVSk3Pe4kHnH9yZcYjDfmoLCWX6_FwJ0zKyBsBldHSJhXbyiUFyKkZFYAPfCUQM2YPz8Iq_Lywuxwg2ORZyWD08cTR04m07XEAK4BbDtez3k2I08Sus/w640-h272/Screenshot+from+2021-05-29+12-26-10.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiprAn4Gr4B1iKJfqvYoR1sArzrYHfEGsW4KDLrc8Aa3xgVptn9CLXAkQXhekaCUBCx4NOiHXiUEE_q0QHMpcJadjLVuT794sVUqiKbhQDGQq7hNWT-A2XmOFXx1aG-nnsB35VLiu9ECoI/s744/Screenshot+from+2021-05-29+12-26-20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="744" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiprAn4Gr4B1iKJfqvYoR1sArzrYHfEGsW4KDLrc8Aa3xgVptn9CLXAkQXhekaCUBCx4NOiHXiUEE_q0QHMpcJadjLVuT794sVUqiKbhQDGQq7hNWT-A2XmOFXx1aG-nnsB35VLiu9ECoI/w640-h400/Screenshot+from+2021-05-29+12-26-20.png" width="640" /></a></div><br /><div>2.Clone SD card to image file</div><div><br /></div><div><div><span style="color: #38761d;">sudo dd if=/dev/mmcblk0 conv=sync,noerror bs=64K status=progress | gzip -c > ~/dragon-eye.img.gz</span></div><div><span style="color: #38761d;">[sudo] password for gigijoe: </span></div><div><span style="color: #38761d;">62306058240 bytes (62 GB, 58 GiB) copied, 1309 s, 47.6 MB/s</span></div><div><span style="color: #38761d;">951808+0 records in</span></div><div><span style="color: #38761d;">951808+0 records out</span></div><div><span style="color: #38761d;">62377689088 bytes (62 GB, 58 GiB) copied, 1310.95 s, 47.6 MB/s</span></div></div><div><br /></div><div>3.Copy image file to target SD card</div><div><br /></div><div><div><span style="color: #38761d;">sudo gunzip -c ~/dragon-eye.img.gz | sudo dd of=/dev/mmcblk0 bs=64k status=progress</span></div><div><span style="color: #38761d;">[sudo] password for gigijoe: </span></div><div><span style="color: #38761d;">62261100544 bytes (62 GB, 58 GiB) copied, 3227 s, 19.3 MB/s</span></div><div><span style="color: #cc0000;">dd: error writing '/dev/mmcblk0': No space left on device</span></div><div><span style="color: #38761d;">146314+1607917 records in</span></div><div><span style="color: #38761d;">146314+1607916 records out</span></div><div><span style="color: #38761d;">62277025792 bytes (62 GB, 58 GiB) copied, 3266.33 s, 19.1 MB/s</span></div></div><div><br /></div><div>There's error of no space. It's ok, just ignore it.</div><div><br /></div><div>4.Fix partition</div><div><br /></div><div>This SD card is NOT ready to boot because the partition table is corrupt. Run gdisk and write back partition table to fix.</div><div><br /></div><div><span style="color: #38761d;">sudo gdisk /dev/mmcblk0 </span></div><div><span style="color: #38761d;"><br /></span></div><div><div><span style="color: #38761d;">GPT fdisk (gdisk) version 1.0.5</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">Warning! Disk size is smaller than the main header indicates! Loading</span></div><div><span style="color: #38761d;">secondary header from the last sector of the disk! You should use 'v' to</span></div><div><span style="color: #38761d;">verify disk integrity, and perhaps options on the experts' menu to repair</span></div><div><span style="color: #38761d;">the disk.</span></div><div><span style="color: #38761d;">Caution: invalid backup GPT header, but valid main header; regenerating</span></div><div><span style="color: #38761d;">backup header from main header.</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">Warning! One or more CRCs don't match. You should repair the disk!</span></div><div><span style="color: #38761d;">Main header: OK</span></div><div><span style="color: #38761d;">Backup header: ERROR</span></div><div><span style="color: #38761d;">Main partition table: OK</span></div><div><span style="color: #38761d;">Backup partition table: ERROR</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">Partition table scan:</span></div><div><span style="color: #38761d;"> MBR: protective</span></div><div><span style="color: #38761d;"> BSD: not present</span></div><div><span style="color: #38761d;"> APM: not present</span></div><div><span style="color: #38761d;"> GPT: damaged</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">****************************************************************************</span></div><div><span style="color: #38761d;">Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk</span></div><div><span style="color: #38761d;">verification and recovery are STRONGLY recommended.</span></div><div><span style="color: #38761d;">****************************************************************************</span></div><div><br /></div><div><span style="color: #38761d;">Command (? for help): p</span></div></div><div><div><span style="color: #38761d;">Disk /dev/mmcblk0: 121634816 sectors, 58.0 GiB</span></div><div><span style="color: #38761d;">Sector size (logical/physical): 512/512 bytes</span></div><div><span style="color: #38761d;">Disk identifier (GUID): CEF61F19-EF34-40C6-B658-4039F0AB5630</span></div><div><span style="color: #38761d;">Partition table holds up to 128 entries</span></div><div><span style="color: #38761d;">Main partition table begins at sector 2 and ends at sector 33</span></div><div><span style="color: #38761d;">First usable sector is 34, last usable sector is 121634782</span></div><div><span style="color: #38761d;">Partitions will be aligned on 2048-sector boundaries</span></div><div><span style="color: #38761d;">Total free space is 1079229 sectors (527.0 MiB)</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">Number Start (sector) End (sector) Size Code Name</span></div><div><span style="color: #38761d;"> 1 28672 120584191 57.5 GiB 8300 APP</span></div></div><div><span style="color: #38761d;"><br /></span></div><div><div><span style="color: #04ff00;">Recovery/transformation command (? for help): w</span></div><div><span style="color: #38761d;">Caution! Secondary header was placed beyond the disk's limits! Moving the</span></div><div><span style="color: #38761d;">header, but other problems may occur!</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING</span></div><div><span style="color: #38761d;">PARTITIONS!!</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;">Do you want to proceed? (Y/N): y</span></div><div><span style="color: #38761d;">OK; writing new GUID partition table (GPT) to /dev/mmcblk0.</span></div><div><span style="color: #38761d;">The operation has completed successfully.</span></div></div><div><br /></div><div>Now the SD card works ...</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-20674582520042577812021-05-19T11:52:00.006-07:002021-05-20T21:35:41.133-07:00dragon-eye - F3F real-time electronic judging system with Jetson Nano (Update May 20)<b>This is update of dragon-eye</b><div><br /><div><a href="https://stevegigijoe.blogspot.com/2021/02/dragon-eye-f3f-real-time-electronic.html" target="_blank">https://stevegigijoe.blogspot.com/2021/02/dragon-eye-f3f-real-time-electronic.html</a> </div><div><br /></div><div>There are so many bug fix and update of dragon-eye these month. Now, I think dragon-eye is ready for practice F3F competition. Two dragon-eye bases, an outdoor wifi AP, an Android phone with APP (<a href="https://github.com/gigijoe/dragon-eye-rc" target="_blank">dragon-eye-rc</a>) and speaker are all we need.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDLo8SGg_YH1p7biW2opEwKj1vIjKBdmRAgrRTVnvjWPk9SfmjD1uoDrnZQlLssp6ivRdJHOwEf7VeULg2UCemlY9TPdV1dMquccGDKDCMFkQsddPYbseqJEb9Ck6y3Sx5kziM8_AcYsY/s1133/Screenshot+from+2021-04-16+12-09-54.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="649" data-original-width="1133" height="366" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDLo8SGg_YH1p7biW2opEwKj1vIjKBdmRAgrRTVnvjWPk9SfmjD1uoDrnZQlLssp6ivRdJHOwEf7VeULg2UCemlY9TPdV1dMquccGDKDCMFkQsddPYbseqJEb9Ck6y3Sx5kziM8_AcYsY/w640-h366/Screenshot+from+2021-04-16+12-09-54.png" width="640" /></a></div><div><br /></div><div><b>New feature of dragon-eye</b></div><div><b><br /></b></div><div>1.Improve object tracking performance especially for the object under horizon line.</div><div><br /></div><div>2.Two cameras are available, each with a different field of view. The conditions and base placement on individual slopes will determine which camera is appropriate for the local slope.</div><div><br /></div><div>3.Fake Target Detection records all new targets in the previous 3 seconds, if there are targets that overlap too many times these targets will be treated as a fake target and will not trigger the system.</div><div><br /></div><div>4.Bug trigger is to prevent false triggers caused by bugs flying through the field of view. Bugs are usually small and fast, so targets that are small in size and at high speed will not cause a trigger when they cross the central line.</div><div><br /></div><div>5.Save real-time video to the SD card. The maximum number of video files is 400, each video is about 90 seconds. Access to the video file is available through Windows network sharing (Samba).</div><div><br /></div><div>6.Show Result, Show detection, trigger and various information on video output is selectable for display on the video output.</div><div><br /></div><div>7.Across central line trigger through multicast & UDP socket</div><div><br /></div><div>8.A setup note document <a href="https://github.com/gigijoe/dragon-eye/blob/master/dragon-eye%20setup%20notes.odt" target="_blank">dragon-eye setup note</a></div><div><br /></div><div>9.Supports 9 axis IMU (Experimental)</div><div><br /></div><div>For more detail please refer to <a href="https://github.com/gigijoe/dragon-eye" target="_blank">dragon-eye</a></div><div><br /></div><div><b>New feature of dragon-eye-rc Android APP</b></div><div><b><br /></b></div><div>1.Android APP F3F timer with voice & audio sound.</div><div>2.Android APP supports more than two dragon-eye bases</div><div>3.Show temperature and GPU usage of dragon-eye on main page of Android APP</div><div>4.Detection of wifi connection. Once wifi reconnect, reflash base list</div><div><br /></div><div>Setup of dragon-eye base A</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiplurBbCSOP_PCG-P0eOmsAPmMJAEUHBgrKkFYHxNMAkV8X_0ZxsLfH9SkNc_b5Cjpd9nRGsBXQSmt-pjw41PISqzTj2InE2QlwSmeZrtSJZtgzzGQDPwGExL9UogUCopyls9sGnDPnzk/s2048/IMG_20210512_125900.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiplurBbCSOP_PCG-P0eOmsAPmMJAEUHBgrKkFYHxNMAkV8X_0ZxsLfH9SkNc_b5Cjpd9nRGsBXQSmt-pjw41PISqzTj2InE2QlwSmeZrtSJZtgzzGQDPwGExL9UogUCopyls9sGnDPnzk/w480-h640/IMG_20210512_125900.jpg" width="480" /></a></div><br /><div>Setup of dragon-eye base B</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilZbEK1epRl5fQQ23H1yD4OZdm2oqMaJmq753kk_WjmDJ33f9uP7b68EbAXcEz6lUeJfWk_ynpvsx0V87QMPOkBwTEuH8ARznWnEiB2erqLCIxIEZc4QTctQRBHNA0_3U1yHFamEvYqI0/s2048/IMG_20210512_130344.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilZbEK1epRl5fQQ23H1yD4OZdm2oqMaJmq753kk_WjmDJ33f9uP7b68EbAXcEz6lUeJfWk_ynpvsx0V87QMPOkBwTEuH8ARznWnEiB2erqLCIxIEZc4QTctQRBHNA0_3U1yHFamEvYqI0/w480-h640/IMG_20210512_130344.jpg" width="480" /></a></div><br /><div>Outdoot wifi AP & Android phone</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX8KoKGSMwA56K4YGazwgPWXxpmyAQxQQy4vCIY9_V_T1aT88BcRuFBcclMvWXQH_pTNynEXUqJSrcGb4PArReHbgbZyxM9cMN5bGFYZU4r973WSfzS3fvtF64KHMdUjp7ORY2IjqDtqA/s2048/IMG_20210512_112718.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX8KoKGSMwA56K4YGazwgPWXxpmyAQxQQy4vCIY9_V_T1aT88BcRuFBcclMvWXQH_pTNynEXUqJSrcGb4PArReHbgbZyxM9cMN5bGFYZU4r973WSfzS3fvtF64KHMdUjp7ORY2IjqDtqA/w480-h640/IMG_20210512_112718.jpg" width="480" /></a></div><br /><div>F3F timer and speaker on the ground</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBV10EXstyws18wqtNtHZ25_tCgPai3ZUPIXWc93FaAY6MlsZtITuofiAYQUr0a6GktnMsbRRGf2DYUL2LdWxIUPE_78A-boDF9tP4W21MeHlabymaZyunEXyjvUXAE2HBCcDsGwGEC88/s2048/IMG_20210512_180322.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBV10EXstyws18wqtNtHZ25_tCgPai3ZUPIXWc93FaAY6MlsZtITuofiAYQUr0a6GktnMsbRRGf2DYUL2LdWxIUPE_78A-boDF9tP4W21MeHlabymaZyunEXyjvUXAE2HBCcDsGwGEC88/w480-h640/IMG_20210512_180322.jpg" width="480" /></a></div><br /><div>Running video on slope</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="406" src="https://www.youtube.com/embed/_YH6i1c2meU" width="489" youtube-src-id="_YH6i1c2meU"></iframe></div><br /><div>Running video during sunset</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="407" src="https://www.youtube.com/embed/mhZodgOfwcA" width="489" youtube-src-id="mhZodgOfwcA"></iframe></div><br /><div>Screenshot of RTSP video on Android APP with detection and tracking result</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6roieFYOVG8K08f-A6wP_bPvzdwm4RxtiEPLtIfqrlRdcI1Co5OFOsEa51yhW-GvCePrN5H0dvEgmcKq6-HBydFyaziaPjWjYxSWjyZgRCW2m-I6mHBkUssuAb4XznG35FRbxRfxEZ-0/s2160/Screenshot_20210520-173227.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6roieFYOVG8K08f-A6wP_bPvzdwm4RxtiEPLtIfqrlRdcI1Co5OFOsEa51yhW-GvCePrN5H0dvEgmcKq6-HBydFyaziaPjWjYxSWjyZgRCW2m-I6mHBkUssuAb4XznG35FRbxRfxEZ-0/w320-h640/Screenshot_20210520-173227.png" width="320" /></a></div><div><br /></div><div>Screenshot of main page of Android APP showing status of dragon-eye base</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz4eNZRmqT-fI9OKnEmb5JkfedBiIrAOR3brR2n8NvIw7msM1gOOGKYIkOegE1ZY9caMrStKfSUskL14VY8_tDXgjU4jkr-3tg6vDun-sjKkJ4AmraPntG23tMOufv2evAydAciHocSUU/s2160/Screenshot_20210512-131136.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz4eNZRmqT-fI9OKnEmb5JkfedBiIrAOR3brR2n8NvIw7msM1gOOGKYIkOegE1ZY9caMrStKfSUskL14VY8_tDXgjU4jkr-3tg6vDun-sjKkJ4AmraPntG23tMOufv2evAydAciHocSUU/w320-h640/Screenshot_20210512-131136.png" width="320" /></a></div><br /><div>Screenshot of system settings of Android APP</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGy1XFUt6FHGvdhKsL5zEdxlIn3BMO7kDnlRdWSubRhY-ElMFTklw2A3R_en7kZHIrkTVOLAWdYGo3Cgg1_I2wJOcsJpfdMfOEsGEQLjx092NhbvZeuV-gp5OLkAKGpjDgQS3QfZQoObo/s2160/Screenshot_20210427-115821.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGy1XFUt6FHGvdhKsL5zEdxlIn3BMO7kDnlRdWSubRhY-ElMFTklw2A3R_en7kZHIrkTVOLAWdYGo3Cgg1_I2wJOcsJpfdMfOEsGEQLjx092NhbvZeuV-gp5OLkAKGpjDgQS3QfZQoObo/w320-h640/Screenshot_20210427-115821.png" width="320" /></a></div><br /><div><div>Screenshot of camera settings of Android APP</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS6AVyyA-kuMJqJNmKGoA2acTAJ5vsliE5xbDoJEUvZwdF9g1GUKZ6FwSFFwgTRAb7CyxxPFvQ44FrKYn1w3aCBgYVhiBNf6Z7QaMejEeiVzobrP7GHZRfc8KxRWiUmaaoU0A5SEVoZXE/s2160/Screenshot_20210427-115909.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS6AVyyA-kuMJqJNmKGoA2acTAJ5vsliE5xbDoJEUvZwdF9g1GUKZ6FwSFFwgTRAb7CyxxPFvQ44FrKYn1w3aCBgYVhiBNf6Z7QaMejEeiVzobrP7GHZRfc8KxRWiUmaaoU0A5SEVoZXE/w320-h640/Screenshot_20210427-115909.png" width="320" /></a></div><br /><div>Screenshot of F3F timer of Android APP</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitmdDuTlo2lo0pXA8rR84GnuGH3s5QovI9TgERXTg4HF8oYwIFqsEyk718z90yeoWpA1PX7cuydd6awgEVFF1RAdrgOsbd_ttza3mwQERXCIQ7X_JTVFeXyWXRknw7GjQAHlhFVEERF4w/s2160/Screenshot_20210520-005813.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitmdDuTlo2lo0pXA8rR84GnuGH3s5QovI9TgERXTg4HF8oYwIFqsEyk718z90yeoWpA1PX7cuydd6awgEVFF1RAdrgOsbd_ttza3mwQERXCIQ7X_JTVFeXyWXRknw7GjQAHlhFVEERF4w/w320-h640/Screenshot_20210520-005813.png" width="320" /></a></div><br /><div>About information</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj40JJCihKFFkta7fsKAzXeiQanTTvjfSl1PJP7CJGeZFUROJWCdieW83TC6off95-9_YmRU6uuoeV8HSteT6hDBkThxoG0Rlt9LFAbQHNiqsx-Qz4h4ZQefTU6S52qJ3HJGLRIIVmQtX4/s2160/Screenshot_20210427-120243.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj40JJCihKFFkta7fsKAzXeiQanTTvjfSl1PJP7CJGeZFUROJWCdieW83TC6off95-9_YmRU6uuoeV8HSteT6hDBkThxoG0Rlt9LFAbQHNiqsx-Qz4h4ZQefTU6S52qJ3HJGLRIIVmQtX4/w320-h640/Screenshot_20210427-120243.png" width="320" /></a></div><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="483" src="https://www.youtube.com/embed/k4Nkatxri74" width="581" youtube-src-id="k4Nkatxri74"></iframe></div><br /><div><br /></div></div></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-44327673397251304122021-04-13T04:43:00.006-07:002021-04-13T23:36:43.096-07:00Jetson nano clone SD card<p> Kingston Canvas Select Plus microSDXC UHS-I U1 V10 A1 64GB</p><p> sudo parted -l</p><p><span style="color: #38761d;">Model: SD SD64G (sd/mmc)</span></p><p><span style="color: #38761d;">Disk /dev/mmcblk0: 64.1GB</span></p><p><span style="color: #38761d;">Sector size (logical/physical): 512B/512B</span></p><p><span style="color: #38761d;">Partition Table: gpt</span></p><p><span style="color: #38761d;">Disk Flags: </span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">Number Start End Size File system Name Flags</span></p><p><span style="color: #38761d;"> 2 1049kB 1180kB 131kB TBC</span></p><p><span style="color: #38761d;"> 3 2097kB 2556kB 459kB RP1</span></p><p><span style="color: #38761d;"> 4 3146kB 3736kB 590kB EBT</span></p><p><span style="color: #38761d;"> 5 4194kB 4260kB 65.5kB WB0</span></p><p><span style="color: #38761d;"> 6 5243kB 5439kB 197kB BPF</span></p><p><span style="color: #38761d;"> 7 6291kB 6685kB 393kB BPF-DTB</span></p><p><span style="color: #38761d;"> 8 7340kB 7406kB 65.5kB FX</span></p><p><span style="color: #38761d;"> 9 8389kB 8847kB 459kB TOS</span></p><p><span style="color: #38761d;">10 9437kB 9896kB 459kB DTB</span></p><p><span style="color: #38761d;">11 10.5MB 11.3MB 786kB LNX</span></p><p><span style="color: #38761d;">12 11.5MB 11.6MB 65.5kB EKS</span></p><p><span style="color: #38761d;">13 12.6MB 12.7MB 81.9kB BMP</span></p><p><span style="color: #38761d;">14 13.6MB 13.8MB 131kB RP4</span></p><p><span style="color: #38761d;"> 1 14.7MB 64.1GB 64.1GB ext4 APP</span></p><div><br /></div><div><br /></div><div>sudo dd if=/dev/mmcblk0 conv=sync,noerror bs=64K status=progress | gzip -c > ~/dragon-eye.img.gz</div><div><br /></div><div><div><span style="color: #38761d;">977728+0 records in</span></div><div><span style="color: #38761d;">977728+0 records out</span></div><div><span style="color: #38761d;">64076382208 bytes (64 GB, 60 GiB) copied, 1316.25 s, 48.7 MB/s</span></div></div><div><br /></div><div><br /></div><div>sudo gunzip -c ~/dragon-eye.img.gz | sudo dd of=/dev/mmcblk0 bs=64k status=progress</div><div><br /></div><div><div><span style="color: #38761d;">117838+1719780 records in</span></div><div><span style="color: #38761d;">117838+1719780 records out</span></div><div><span style="color: #38761d;">64076382208 bytes (64 GB, 60 GiB) copied, 2329.99 s, 27.5 MB/s</span></div></div><div><br /></div><div><br /></div><div><a href="https://www.jetsonhacks.com/2020/08/08/clone-sd-card-jetson-nano-and-xavier-nx/" target="_blank">Reference</a><br /></div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-74983357732944121052021-03-25T20:20:00.006-07:002021-05-30T19:33:52.719-07:00Jetson Nano Samba Server<p>1.Install samba</p><p><span style="color: #38761d;">$ sudo apt-get install samba -y</span></p><div>2.Edit /etc/samba/smb.conf</div><div><br /></div><div><span style="color: #38761d;">...</span></div><div><div><span style="color: #38761d;">[Videos]</span></div><div><span style="color: #38761d;"> comment = Samba on JetsonNano</span></div><div><span style="color: #38761d;"> path = /home/gigijoe/Videos</span></div><div><span style="color: #38761d;"> read only = no</span></div><div><span style="color: #38761d;"> public = yes</span></div><div><span style="color: #38761d;"> browsable = yes</span></div></div><div> <span style="color: #38761d;">directory mask = 775</span></div><div><br /></div><div>3.Restart Samba Server</div><div><br /></div><div><span style="color: #38761d;">$ sudo service smbd restart</span></div><div><br /></div><div>4.Setup Samba username / password</div><div><br /></div><div><span style="color: #38761d;">$ sudo smbpasswd -a gigijoe</span></div><div><br /></div><div>5.Open File Viewer and enter URI</div><div><br /></div><div><span style="color: #38761d;">smb://192.168.168.67</span></div><div><span style="color: #38761d;"><br /></span></div><div><span style="color: #38761d;"><br /></span></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-71803879617927833222021-03-08T21:16:00.001-08:002021-03-08T21:16:13.918-08:00Jetson Nano EDIMAX EW-7811Un V2 N150 predictible interface names<p>1. Create new file</p><p>/etc/udev/rules.d/10-network-device.rules</p><p>with following line</p><p><span style="color: #04ff00;">SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="wlanX"</span></p><p>Replacing <span style="color: #04ff00;">xx:xx:xx:xx:xx:xx </span>with your device's lowercase mac address (found with ip link) and <span style="color: #04ff00;">wlanX</span> with whatever name you choose. </p><p>2.Test</p><p><span style="color: #38761d;">iwconfig</span></p><p><span style="color: #38761d;">wlan0 IEEE 802.11 Mode:Master Tx-Power=22 dBm </span></p><p><span style="color: #38761d;"> Retry short limit:7 RTS thr:off Fragment thr:off</span></p><p><span style="color: #38761d;"> Power Management:on</span></p><p><span style="color: #38761d;"> </span></p><p><span style="color: #38761d;">rndis0 no wireless extensions.</span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">lo no wireless extensions.</span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">l4tbr0 no wireless extensions.</span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">wlan9 unassociated ESSID:"" Nickname:"<WIFI@REALTEK>"</span></p><p><span style="color: #38761d;"> Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated </span></p><p><span style="color: #38761d;"> Sensitivity:0/0 </span></p><p><span style="color: #38761d;"> Retry:off RTS thr:off Fragment thr:off</span></p><p><span style="color: #38761d;"> Power Management:off</span></p><p><span style="color: #38761d;"> Link Quality=0/100 Signal level=0 dBm Noise level=0 dBm</span></p><p><span style="color: #38761d;"> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0</span></p><p><span style="color: #38761d;"> Tx excessive retries:0 Invalid misc:0 Missed beacon:0</span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">dummy0 no wireless extensions.</span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">usb0 no wireless extensions.</span></p><p><span style="color: #38761d;"><br /></span></p><p><span style="color: #38761d;">eth0 no wireless extensions.</span></p><div>Reference</div><div><br /></div><div><a href="https://raspberrypi.stackexchange.com/questions/85646/predictable-network-interface-names-inconsistently-applied-in-stretch" target="_blank">https://raspberrypi.stackexchange.com/questions/85646/predictable-network-interface-names-inconsistently-applied-in-stretch</a><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-65190778311215593262021-03-08T10:30:00.002-08:002021-03-09T05:27:32.816-08:00Jetson Nano EDIMAX EW-7811Un V2 N150 as Access Point<p>1.Build hostapd from source </p><p><span style="color: #38761d;">cd rtl8188eu/hostapd-0.8/hostapd/</span></p><p><span style="color: #38761d;">cp defconfig .config</span></p><p><span style="color: #38761d;">make</span></p><p>2.Edit script control_ap for start / stop AP</p><p><span style="color: #38761d;">cd ../..</span></p><p><span style="color: #2b00fe;">diff --git a/control_ap b/control_ap</span></p><p><span style="color: #2b00fe;">index c7dbb95..b055c10 100755</span></p><p><span style="color: #2b00fe;">--- a/control_ap</span></p><p><span style="color: #2b00fe;">+++ b/control_ap</span></p><p><span style="color: #2b00fe;">@@ -34,7 +34,7 @@ esac</span></p><p><span style="color: #2b00fe;"> IPTABLES=/sbin/iptables</span></p><p><span style="color: #2b00fe;"> IFCONFIG=/sbin/ifconfig</span></p><p><span style="color: #2b00fe;"> DHCPD=/usr/sbin/dhcpd</span></p><p><span style="color: #2b00fe;">-HOSTAPD=/home/finger/rtl8188eu/hostapd-0.8/hostapd/hostapd</span></p><p><span style="color: #2b00fe;">+HOSTAPD=/home/gigijoe/rtl8188eu/hostapd-0.8/hostapd/hostapd</span></p><p><span style="color: #2b00fe;"> </span></p><p><span style="color: #2b00fe;"> # Symbols for AP and external interfaces</span></p><p><span style="color: #2b00fe;"> </span></p><p><span style="color: #2b00fe;">@@ -75,9 +75,9 @@ start)</span></p><p><span style="color: #2b00fe;"> $IFCONFIG $NET_AP up</span></p><p><span style="color: #2b00fe;"> $IFCONFIG $NET_AP $AP_ADDR.1</span></p><p><span style="color: #2b00fe;"> # dhcpd needs to have a leases file available - create it if needed</span></p><p><span style="color: #2b00fe;">- if [ ! -f /var/lib/dhcp/db/dhcpd.leases ]; then</span></p><p><span style="color: #2b00fe;">- mkdir -p /var/lib/dhcp/db</span></p><p><span style="color: #2b00fe;">- touch /var/lib/dhcp/db/dhcpd.leases</span></p><p><span style="color: #2b00fe;">+ if [ ! -f /var/lib/dhcp/dhcpd.leases ]; then</span></p><p><span style="color: #2b00fe;">+ mkdir -p /var/lib/dhcp/</span></p><p><span style="color: #2b00fe;">+ touch /var/lib/dhcp/dhcpd.leases</span></p><p><span style="color: #2b00fe;"> fi</span></p><p><span style="color: #2b00fe;"> # Write the DHCP server configuration file</span></p><p><span style="color: #2b00fe;"> echo "option domain-name-servers $NAME_SERVER;" > ~/dhcpd.conf</span></p><div>3.Edit /etc/NetworkManager/NetworkManager.conf to unmanager the device</div><div><br /></div><div><div><span style="color: #04ff00;">[keyfile]</span></div><div><span style="color: #04ff00;">unmanaged-devices=mac:<hwaddr></span></div></div><p>4.Start AP (Default AP SSID is rtwap password 87654321)</p><p><span style="color: #38761d;">sudo ./control_ap start wlan1 eth0</span></p><p>Starting AP mode for wlan1 at address 192.168.0.1</p><p>Internet Systems Consortium DHCP Server 4.3.5</p><p>Copyright 2004-2016 Internet Systems Consortium.</p><p>All rights reserved.</p><p>For info, please visit https://www.isc.org/software/dhcp/</p><p>Config file: /home/gigijoe/dhcpd.conf</p><p>Database file: /var/lib/dhcp/dhcpd.leases</p><p>PID file: /var/run/dhcpd.pid</p><p>Wrote 0 leases to leases file.</p><p>Listening on LPF/wlan1/08:be:ac:15:13:34/192.168.0.0/24</p><p>Sending on LPF/wlan1/08:be:ac:15:13:34/192.168.0.0/24</p><p>Sending on Socket/fallback/fallback-net</p><p>random: Trying to read entropy from /dev/random</p><p>Configuration file: /home/gigijoe/hostapd.conf</p><p>ctrl_interface_group=0</p><p>drv->ifindex=8</p><p>l2_sock_recv==l2_sock_xmit=0x0x55959e14d0</p><p>BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)</p><p>Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=12 freq=2467 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=1 chan=13 freq=2472 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=36 freq=5180 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=40 freq=5200 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=44 freq=5220 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=48 freq=5240 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=149 freq=5745 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=153 freq=5765 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=157 freq=5785 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=161 freq=5805 MHz max_tx_power=0 dBm</p><p>Allowed channel: mode=2 chan=165 freq=5825 MHz max_tx_power=0 dBm</p><p>Completing interface initialization</p><p>Mode: IEEE 802.11g Channel: 11 Frequency: 2462 MHz</p><p>RATE[0] rate=10 flags=0x1</p><p>RATE[1] rate=20 flags=0x1</p><p>RATE[2] rate=55 flags=0x1</p><p>RATE[3] rate=110 flags=0x1</p><p>RATE[4] rate=60 flags=0x0</p><p>RATE[5] rate=90 flags=0x0</p><p>RATE[6] rate=120 flags=0x0</p><p>RATE[7] rate=180 flags=0x0</p><p>RATE[8] rate=240 flags=0x0</p><p>RATE[9] rate=360 flags=0x0</p><p>RATE[10] rate=480 flags=0x0</p><p>RATE[11] rate=540 flags=0x0</p><p>Flushing old station entries</p><p>Deauthenticate all stations</p><p>+rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2</p><p>rtl871x_set_key_ops</p><p>rtl871x_set_key_ops</p><p>rtl871x_set_key_ops</p><p>rtl871x_set_key_ops</p><p>Using interface wlan1 with hwaddr 08:be:ac:15:13:34 and ssid 'rtwap'</p><p>Deriving WPA PSK based on passphrase</p><p>SSID - hexdump_ascii(len=5):</p><p> 72 74 77 61 70 rtwap </p><p>PSK (ASCII passphrase) - hexdump_ascii(len=8): [REMOVED]</p><p>PSK (from passphrase) - hexdump(len=32): [REMOVED]</p><p>rtl871x_set_wps_assoc_resp_ie</p><p>rtl871x_set_wps_beacon_ie</p><p>rtl871x_set_wps_probe_resp_ie</p><p>random: Got 20/20 bytes from /dev/random</p><p>Get randomness: len=32 entropy=0</p><p>GMK - hexdump(len=32): [REMOVED]</p><p>Get randomness: len=32 entropy=0</p><p>Key Counter - hexdump(len=32): [REMOVED]</p><p>WPA: group state machine entering state GTK_INIT (VLAN-ID 0)</p><p>Get randomness: len=16 entropy=0</p><p>GTK - hexdump(len=16): [REMOVED]</p><p>WPA: group state machine entering state SETKEYSDONE (VLAN-ID 0)</p><p>rtl871x_set_key_ops</p><p>rtl871x_set_beacon_ops</p><p>wlan1: Setup of interface done.</p><div><br /></div><div><span style="color: #38761d;">iwconfig</span></div><div><br /></div><div><div>wlan1 IEEE 802.11bgn ESSID:"rtwap" Nickname:"<WIFI@REALTEK>"</div><div> Mode:Master Frequency:2.462 GHz Access Point: 08:BE:AC:15:13:34 </div><div> Sensitivity:0/0 </div><div> Retry:off RTS thr:off Fragment thr:off</div><div> Power Management:off</div><div> Link Quality=100/100 Signal level=-36 dBm Noise level=0 dBm</div><div> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0</div><div> Tx excessive retries:0 Invalid misc:0 Missed beacon:0</div></div><div><br /></div><div><br /></div><div>5.Stop AP</div><p><span style="color: #38761d;">sudo ./control_ap stop</span></p><p>Reference</p><p><a href="https://wiki.archlinux.org/index.php/Software_access_point_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)" target="_blank">https://wiki.archlinux.org/index.php/Software_access_point_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)</a><br /></p><p><br /></p>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-20331738735438225472021-02-23T06:54:00.003-08:002021-02-23T06:55:53.357-08:00Jetson Nano EDIMAX EW-7811Un V2 N150 wifi dongle<p>git clone https://github.com/lwfinger/rtl8188eu.git</p><p>cd rtl8188eu</p><p>make</p><p>sudo make install</p><p><br /></p><p><span style="color: #04ff00;">gigijoe@gigijoe-desktop:~/rtl8188eu$ make</span></p><p><span style="color: #04ff00;">make: Warning: File 'Makefile' has modification time 5690693 s in the future</span></p><p><span style="color: #04ff00;">make ARCH=arm64 CROSS_COMPILE= -C /lib/modules/4.9.140-tegra/build M=/home/gigijoe/rtl8188eu modules</span></p><p><span style="color: #04ff00;">make[1]: Entering directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_ap.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_br_ext.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_cmd.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_debug.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_efuse.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_ieee80211.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_io.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_ioctl_set.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_iol.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_led.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_mlme.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_mlme_ext.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_mp.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_mp_ioctl.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_pwrctrl.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_p2p.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_recv.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_rf.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_security.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_sreset.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_sta_mgt.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_wlan_util.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/core/rtw_xmit.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/HalHWImg8188E_MAC.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/HalHWImg8188E_BB.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/HalHWImg8188E_RF.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/HalPhyRf.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/HalPhyRf_8188e.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/HalPwrSeqCmd.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/Hal8188EPwrSeq.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/Hal8188ERateAdaptive.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/hal_intf.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/hal_com.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/odm.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/odm_debug.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/odm_interface.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/odm_HWConfig.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/odm_RegConfig8188E.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/odm_RTL8188E.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_cmd.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_dm.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_hal_init.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_mp.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_phycfg.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_rf6052.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_rxdesc.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_sreset.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188e_xmit.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188eu_led.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188eu_recv.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/rtl8188eu_xmit.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/usb_halinit.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/hal/usb_ops_linux.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/ioctl_linux.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/mlme_linux.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/os_intfs.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/osdep_service.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/recv_linux.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/rtw_android.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/usb_intf.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/usb_ops_linux.o</span></p><p><span style="color: #04ff00;"> CC [M] /home/gigijoe/rtl8188eu/os_dep/xmit_linux.o</span></p><p><span style="color: #04ff00;"> LD [M] /home/gigijoe/rtl8188eu/8188eu.o</span></p><p><span style="color: #04ff00;">make[2]: warning: Clock skew detected. Your build may be incomplete.</span></p><p><span style="color: #04ff00;"> Building modules, stage 2.</span></p><p><span style="color: #04ff00;"> MODPOST 1 modules</span></p><p><span style="color: #04ff00;"> CC /home/gigijoe/rtl8188eu/8188eu.mod.o</span></p><p><span style="color: #04ff00;"> LD [M] /home/gigijoe/rtl8188eu/8188eu.ko</span></p><p><span style="color: #04ff00;">make[2]: warning: Clock skew detected. Your build may be incomplete.</span></p><p><span style="color: #04ff00;">make[1]: Leaving directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'</span></p><p><span style="color: #04ff00;">make: warning: Clock skew detected. Your build may be incomplete.</span></p><p><span style="color: #04ff00;">gigijoe@gigijoe-desktop:~/rtl8188eu$ sudo make install</span></p><p><span style="color: #04ff00;">[sudo] password for gigijoe: </span></p><p><span style="color: #04ff00;">install -p -m 644 8188eu.ko /lib/modules/4.9.140-tegra/kernel/drivers/net/wireless</span></p><p><span style="color: #04ff00;">cp rtl8188eufw.bin /lib/firmware/.</span></p><p><span style="color: #04ff00;">/sbin/depmod -a 4.9.140-tegra</span></p><p><span style="color: #04ff00;">mkdir -p /lib/firmware/rtlwifi</span></p><p><span style="color: #04ff00;">cp rtl8188eufw.bin /lib/firmware/rtlwifi/.</span></p><p>sudo reboot</p><p><span style="color: #ffa400;">gigijoe@gigijoe-desktop:~$ iwconfig</span></p><p><span style="color: #ffa400;">wlan0 IEEE 802.11 Mode:Master Tx-Power=22 dBm </span></p><p><span style="color: #ffa400;"> Retry short limit:7 RTS thr:off Fragment thr:off</span></p><p><span style="color: #ffa400;"> Power Management:on</span></p><p><span style="color: #ffa400;"> </span></p><p><span style="color: #ffa400;">rndis0 no wireless extensions.</span></p><p><span style="color: #ffa400;"><br /></span></p><p><span style="color: #ffa400;">lo no wireless extensions.</span></p><p><span style="color: #ffa400;"><br /></span></p><p><span style="color: #ffa400;">l4tbr0 no wireless extensions.</span></p><p><span style="color: #ffa400;"><br /></span></p><p><span style="color: #ffa400;">dummy0 no wireless extensions.</span></p><p><span style="color: #ffa400;"><br /></span></p><p><span style="color: #ffa400;">usb0 no wireless extensions.</span></p><p><span style="color: #ffa400;"><br /></span></p><p><span style="color: #ffa400;">eth0 no wireless extensions.</span></p><p><span style="color: #ffa400;"><br /></span></p><p><span style="color: #ffa400;">wlan1 unassociated ESSID:"" Nickname:"<WIFI@REALTEK>"</span></p><p><span style="color: #ffa400;"> Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated </span></p><p><span style="color: #ffa400;"> Sensitivity:0/0 </span></p><p><span style="color: #ffa400;"> Retry:off RTS thr:off Fragment thr:off</span></p><p><span style="color: #ffa400;"> Power Management:off</span></p><p><span style="color: #ffa400;"> Link Quality=0/100 Signal level=0 dBm Noise level=0 dBm</span></p><p><span style="color: #ffa400;"> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0</span></p><p><span style="color: #ffa400;"> Tx excessive retries:0 Invalid misc:0 Missed beacon:0</span></p><div><span style="color: #ffa400;"><br /></span></div><p><span style="color: #ffa400;"><br /></span></p><p><br /></p>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-28902594254546120442021-02-09T09:07:00.063-08:002021-06-01T11:45:54.264-07:00dragon-eye - F3F real-time electronic judging system with Jetson Nano<p> F3F is an radio control aeromodelling sport, slope soaring gliders.</p><p><a href="https://www.fai.org/page/f3-radio-control-soaring" target="_blank">F3F - SLOPE SOARING GLIDERS</a><br /></p><p>As the name depicts, this event is flown in front of a slope, taking advantage of the updrafts created by the wind. In the single Speed task the pilot tries to fly its model over a 1000m course (composed of 10 X 100 meter legs) in the shortest possible time.</p><p>At least four rounds should be completed in order to determine the winner.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGa5rmYPRcjiWF0ozmvgDG5yEUci0ZimJFp1YwHXzqbHgirV2X3AJdKU2ocCH9tqav6Gd_iQYH7AErfwIQ3Wlw2xAbWPowLN84iThYonGkM-VOIi0qBtOZ7d7o4g2XsnJgSdiZqAPILSY/s2048/dsc_0936.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1363" data-original-width="2048" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGa5rmYPRcjiWF0ozmvgDG5yEUci0ZimJFp1YwHXzqbHgirV2X3AJdKU2ocCH9tqav6Gd_iQYH7AErfwIQ3Wlw2xAbWPowLN84iThYonGkM-VOIi0qBtOZ7d7o4g2XsnJgSdiZqAPILSY/w640-h426/dsc_0936.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;">F3F glider</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi54k7bw-UGIlU3Ss6fJxpERTraoVcu8MrijH0TqdzxhizYG0WGcuvpUh42X59BGn74h0M7gbqkuT6_-9r4C4_9KCXCiDpknIKnzyXsPAXOO__jjwBd07atuKIJY5XfsLtBiCLHrJNyQMs/s2048/IMG_20161109_124911.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi54k7bw-UGIlU3Ss6fJxpERTraoVcu8MrijH0TqdzxhizYG0WGcuvpUh42X59BGn74h0M7gbqkuT6_-9r4C4_9KCXCiDpknIKnzyXsPAXOO__jjwBd07atuKIJY5XfsLtBiCLHrJNyQMs/w640-h480/IMG_20161109_124911.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><div style="text-align: left;">F3F human judging</div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjHlQM1_YqV-CVuuNTO74bJEQX51J3sxMDIqu8Uol5nUMMxhfU197AlYacw8OQEbtrE6E9REuTab0He8OJcIXp21Gg6hARXCQJ8v4gqaGMXA7M462CBb2ZLqnMIq4vy4LN4RGmpsYZ5XQ/s2048/IMG_20161104_142456.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjHlQM1_YqV-CVuuNTO74bJEQX51J3sxMDIqu8Uol5nUMMxhfU197AlYacw8OQEbtrE6E9REuTab0He8OJcIXp21Gg6hARXCQJ8v4gqaGMXA7M462CBb2ZLqnMIq4vy4LN4RGmpsYZ5XQ/w480-h640/IMG_20161104_142456.jpg" width="480" /></a></div><div class="separator" style="clear: both; text-align: left;"><b><br /></b></div><div class="separator" style="clear: both; text-align: left;"><b>dragon-eye</b> is an F3F real-time electronic judging system with <b>Jetson Nano</b>. It's base on technology of computer vision, capture video stream from camera then detect moving objects and keeps tracking them, once one of the tracking target across central vertical line, trigger out a signal. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzlWYQMhj_wV5LaWupi_Du7RvIJeO-FkCm4A_OiikNksFm7kFnwtSHh4AShCxoxQivNsHVfT4ye2UUhTmUtOpuJDZbIh5mr1na7-DOE3f0K60ban99T-TaHSYiiMQOc59_qTDc8YICXs8/s2048/IMG_20201225_122903.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzlWYQMhj_wV5LaWupi_Du7RvIJeO-FkCm4A_OiikNksFm7kFnwtSHh4AShCxoxQivNsHVfT4ye2UUhTmUtOpuJDZbIh5mr1na7-DOE3f0K60ban99T-TaHSYiiMQOc59_qTDc8YICXs8/w640-h480/IMG_20201225_122903.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXHTrJBZ25pYSeiy7LbSEZjXLAYYewPuusKwxtlly7OAn3vGh0AYfGlUI50Wo6pUbIl3jNvrRAppoKBk42FNXZuPBJiZ_U2Yxf1KEjLqd7qeEotsJjo_4mWlMRxU03bx8FxlOr_Sn7Dek/s2048/IMG_20210130_134443.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXHTrJBZ25pYSeiy7LbSEZjXLAYYewPuusKwxtlly7OAn3vGh0AYfGlUI50Wo6pUbIl3jNvrRAppoKBk42FNXZuPBJiZ_U2Yxf1KEjLqd7qeEotsJjo_4mWlMRxU03bx8FxlOr_Sn7Dek/w640-h480/IMG_20210130_134443.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both;"><b>Feature</b></div><div class="separator" style="clear: both;">- Multi moving targets tracking base on technology of background subtraction (MOG2)</div><div class="separator" style="clear: both;">- Camera resolution is 720p and frame rate is limited to 30 fps</div><div class="separator" style="clear: both;">- Supports selection 1 of 2 cameras with different angle of view</div><div class="separator" style="clear: both;">- Trigger out GPIO / UART / UDP when target across central line</div><div class="separator" style="clear: both;">- Record video files to SD card with or without tracking result</div><div class="separator" style="clear: both;">- Built-in wifi AP for connectivity</div><div class="separator" style="clear: both;">- Built-in RTSP video server (H.265 codec)</div><div class="separator" style="clear: both;">- Video output can be one of the following option HDMI / RTP / HLS / RTSP (Prefer RTSP)</div><div class="separator" style="clear: both;">- Android APP to start / stop / config / play RTSP video stream</div><div class="separator" style="clear: both;">- Written in c/c++ for running performance</div><div class="separator" style="clear: both;">- Background subtraction runnung by GPU to improve real-time performance</div><div class="separator" style="clear: both;"><div class="separator" style="clear: both;"><div class="separator" style="clear: both;">- Camera settings for different scenes such as dim light or over exposure</div><div class="separator" style="clear: both;">- Adjustable MOG2 threshold to reduce nosie or improve object detection </div><div><br /></div><div>Source code and more detail please refer to <a href="https://github.com/gigijoe/dragon-eye" target="_blank">dragon-eye</a></div><div><br /></div></div></div><div class="separator" style="clear: both;"><b>Android APP </b><a href="https://github.com/gigijoe/dragon-eye-rc" target="_blank">dragon-eye-rc</a></div><div><div>- Remote control dragon-eye from Android phone</div><div>- Connect dragon-eye through wifi</div><div>- Start / Stop dragon-eye</div><div>- System config / Camera config</div><div>- Play video from RTSP server of dragon-eye</div></div><div>- Play sound with trigger</div><div><br /></div><div>System Steeings screenshot</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGwj_Bs4-vU3H10jW0HVCKI5iHsAC8GgE6s1IaVso_dWZLtb5E9r4_zPe9UCm1ZTa31mV6F0j81E1bcg1pk6OZiIUMh6jnuJKlF50qfNOqvYdDwf5vfy4ge1o5983-upz4HHTXjhd3ymQ/s2160/Screenshot_20210130-165703.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGwj_Bs4-vU3H10jW0HVCKI5iHsAC8GgE6s1IaVso_dWZLtb5E9r4_zPe9UCm1ZTa31mV6F0j81E1bcg1pk6OZiIUMh6jnuJKlF50qfNOqvYdDwf5vfy4ge1o5983-upz4HHTXjhd3ymQ/w320-h640/Screenshot_20210130-165703.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div>Camera Settings screenshot<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJncYjugZ-BUr3ANqdA_xII0DD16gErS9xSLQOQp8K5nRmhRT4t3zZTjjcjWaH13-oQWrv0NeWQd9Vu2C0Q5BH_upocNefBCeZwlPHz4ylfphpWAvdDSr9PZkiaSjjiaExW5I6ud7JMqU/s2160/Screenshot_20210130-165712.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJncYjugZ-BUr3ANqdA_xII0DD16gErS9xSLQOQp8K5nRmhRT4t3zZTjjcjWaH13-oQWrv0NeWQd9Vu2C0Q5BH_upocNefBCeZwlPHz4ylfphpWAvdDSr9PZkiaSjjiaExW5I6ud7JMqU/w320-h640/Screenshot_20210130-165712.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div>Main screenshot<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDzwjIFCENKkC0Xlh1zcOTxxxTivkElww3rUuzCRrSj94l_iBk8UTI5llnfnyqWRWB2kAwGw8bF9rgfCHzJDU1DqQcGD0X5DauJWJm45Z6T2ZKKOapooXylpblVcXHOPwAadOxeDlOyN0/s1280/main_activity.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1280" data-original-width="640" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDzwjIFCENKkC0Xlh1zcOTxxxTivkElww3rUuzCRrSj94l_iBk8UTI5llnfnyqWRWB2kAwGw8bF9rgfCHzJDU1DqQcGD0X5DauJWJm45Z6T2ZKKOapooXylpblVcXHOPwAadOxeDlOyN0/w320-h640/main_activity.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div>RTSP video stream screenshot<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnP5d7Zsg1QRK9eQ0yS5HEERya_I2OxKf1kWlp2E5RQbuG68Cp9T2f21PjVgOg0NxLmVlFygODHn1PPG7Dzws-4yP5lL1wLtg-0wXkckDAKge3cvss5EWTScBeSMVUDkDOh6QHmDEYbCQ/s1080/rtsp_video_1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="540" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnP5d7Zsg1QRK9eQ0yS5HEERya_I2OxKf1kWlp2E5RQbuG68Cp9T2f21PjVgOg0NxLmVlFygODHn1PPG7Dzws-4yP5lL1wLtg-0wXkckDAKge3cvss5EWTScBeSMVUDkDOh6QHmDEYbCQ/w320-h640/rtsp_video_1.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div><br /></div><div><div><b>Simulator</b> <a href="https://github.com/gigijoe/dragon-eye-simulator" target="_blank">dragon-eye-simulator</a></div><div>- An program running on PC Ubuntu desktop for development of dragon-eye</div><div>- It process video file from dragon-eye and output result on screen or to file</div></div><div><br /></div><div>Demo video : Good result of glider go through complex background under horizon </div></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/XU2usfSNTS0" width="320" youtube-src-id="XU2usfSNTS0"></iframe></div><div><br /></div>Demo video : Glider flying in far distance. There's a bug make false trigger<br /><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/SlJSVE-MaTY" width="320" youtube-src-id="SlJSVE-MaTY"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Demo video : High speed pass by</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/eIy3668xOtQ" width="320" youtube-src-id="eIy3668xOtQ"></iframe></div><br /><div class="separator" style="clear: both; text-align: left;">Demo video : Birds across screen and varios bugs fool around</div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/93K3q_C5D9k" width="320" youtube-src-id="93K3q_C5D9k"></iframe></div><div><br /></div>Demo video : Record video with result<br /><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/k4Nkatxri74" width="320" youtube-src-id="k4Nkatxri74"></iframe></div><br /><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><b>Full scale test</b></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://www.facebook.com/steve.chang.7796/posts/10158493773441773?notif_id=1614221442258277&notif_t=feedback_reaction_generic&ref=notif" target="_blank">https://www.facebook.com/steve.chang.7796/posts/10158493773441773?notif_id=1614221442258277&notif_t=feedback_reaction_generic&ref=notif</a><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Update (May 20)</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://stevegigijoe.blogspot.com/2021/05/dragon-eye-f3f-real-time-electronic.html" target="_blank">https://stevegigijoe.blogspot.com/2021/05/dragon-eye-f3f-real-time-electronic.html</a><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-60736066267529232752021-02-05T08:39:00.004-08:002021-02-05T08:39:39.993-08:00Jetson nano build darknet<p> Log of build darknet on Jetson nano</p><p><br /></p><p><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;">git clone </span><a class="dn jj" href="https://github.com/AlexeyAB/darknet.git" rel="noopener nofollow" style="-webkit-tap-highlight-color: transparent; background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;">https://github.com/AlexeyAB/darknet.git</a></p><p>cd darknet</p><p>vi Makefile</p><pre class="jm jn jo jp jq jr js jt" style="background: rgb(242, 242, 242); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="gl ju jv fp jw b di ka kb kc kd ke jy s jz" data-selectable-paragraph="" id="3947" style="box-sizing: inherit; color: #292929; display: block; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: 1.91em; white-space: pre-wrap;">GPU=1<br style="box-sizing: inherit;" />CUDNN=1<br style="box-sizing: inherit;" />CUDNN_HALF=1<br style="box-sizing: inherit;" />OPENCV=1<br style="box-sizing: inherit;" />AVX=0<br style="box-sizing: inherit;" />OPENMP=1<br style="box-sizing: inherit;" />LIBSO=1<br style="box-sizing: inherit;" />ZED_CAMERA=0<br style="box-sizing: inherit;" />ZED_CAMERA_v2_8=0<br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" />......<br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" />USE_CPP=0<br style="box-sizing: inherit;" />DEBUG=0<br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" />ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]</span><div><br /></div></pre><p><br /></p><p>export PATH=$PATH:/usr/local/bin:/usr/local/cuda/bin</p><p>export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/cuda/lib</p><p>make</p><p><br /></p><p><br /></p>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-67025445676155371372020-09-23T10:56:00.007-07:002020-09-27T23:57:04.068-07:00Jetson Nano DeepStream YoloV3 tiny custom model<p>紀錄關於在Jetson Nano 使用YoloV3 tiny 自製的預訓練檔案</p><p>1.預訓練檔案來源</p><p><a href="https://github.com/amineHY/YOLOv3-for-custum-objects" target="_blank">https://github.com/amineHY/YOLOv3-for-custum-objects</a><br /></p><p><br /></p><p>2.將以下檔案放置到Jetson Nano上 /opt/nvidia/deepstream/deepstream-5.0//sources/objectDetector_Yolo目錄下</p><p><span style="color: #b45f06;">fire/model/yolov3-tiny-obj_final.weights</span></p><p><span style="color: #b45f06;">cfg/yolov3-tiny-obj.cfg</span></p><p><br /></p><p>3.切換至 /opt/nvidia/deepstream/deepstream-5.0//sources/objectDetector_Yolo目錄</p><p>4.新建檔案 lables-obj.txt</p><p><span style="color: #2b00fe;">fire</span></p><p><br /></p><p>5.編輯檔案 config_infer_primary_yoloV3_tiny.txt</p><p><span style="color: #2b00fe;">#custom-network-config=yolov3-tiny.cfg</span></p><p><span style="color: #2b00fe;">custom-network-config=yolov3-tiny-obj.cfg</span></p><p><span style="color: #2b00fe;">#model-file=yolov3-tiny.weights</span></p><p><span style="color: #2b00fe;">model-file=yolov3-tiny-obj_final.weights</span></p><p><span style="color: #2b00fe;">#labelfile-path=labels.txt</span></p><p><span style="color: #2b00fe;">labelfile-path=labels-obj.txt</span></p><p><span style="color: #2b00fe;"><br /></span></p><p><span style="color: #2b00fe;">#network-mode=1</span></p><p><span style="color: #2b00fe;">network-mode=2</span></p><p><span style="color: #2b00fe;">#num-detected-classes=80</span></p><p><span style="color: #2b00fe;">num-detected-classes=1</span></p><p><br /></p><p>6.編輯檔案 nvdsinfer_custom_impl_Yolo/nvdsparsebbox_Yolo.cpp</p><p><span style="color: #2b00fe;">-static const int NUM_CLASSES_YOLO = 80;</span></p><div><div><span style="color: #2b00fe;">+static const int NUM_CLASSES_YOLO = 1;</span></div></div><div><br /></div><div>7.Compile 檔案</div><div><br /></div><div><span style="color: #04ff00;">export CUDA_VER=10.2</span></div><div><span style="color: #04ff00;">make -C nvdsinfer_custom_impl_Yolo</span></div><div><br /></div><div>8.清除暫存檔 <span style="color: #04ff00;">rm -rf ~/.cache/gstreamer-1.0/registry.aarch64.bin</span></div><div><br /></div><div>9.執行 <span style="color: #04ff00;">deepstream-app -c deepstream_app_config_yoloV3_tiny.txt</span></div><div><br /></div><div><div><span style="color: #ff00fe;">(deepstream-app:18137): GLib-GObject-WARNING **: 01:42:51.150: g_object_set_is_valid_property: object class 'GstNvArgusCameraSrc' has no property named 'maxperf'</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">(deepstream-app:18137): GStreamer-CRITICAL **: 01:42:51.152: passed '0' as denominator for `GstFraction'</span></div><div><span style="color: #ff00fe;">Unknown or legacy key specified 'is-classifier' for group [property]</span></div><div><span style="color: #ff00fe;">Warn: 'threshold' parameter has been deprecated. Use 'pre-cluster-threshold' instead.</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">Using winsys: x11 </span></div><div><span style="color: #ff00fe;">gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_mot_klt.so</span></div><div><span style="color: #ff00fe;">gstnvtracker: Optional NvMOT_RemoveStreams not implemented</span></div><div><span style="color: #ff00fe;">gstnvtracker: Batch processing is OFF</span></div><div><span style="color: #ff00fe;">gstnvtracker: Past frame output is OFF</span></div><div><span style="color: #ff00fe;">0:00:00.258438073 18137 0x983e930 INFO nvinfer gstnvinfer.cpp:619:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::buildModel() <nvdsinfer_context_impl.cpp:1715> [UID = 1]: Trying to create engine from model files</span></div><div><span style="color: #ff00fe;">Loading pre-trained weights...</span></div><div><span style="color: #ff00fe;">Loading weights of yolov3-tiny complete!</span></div><div><span style="color: #ff00fe;">Total Number of weights read : 8676244</span></div><div><span style="color: #ff00fe;">Loading pre-trained weights...</span></div><div><span style="color: #ff00fe;">Loading weights of yolov3-tiny complete!</span></div><div><span style="color: #ff00fe;">Total Number of weights read : 8676244</span></div><div><span style="color: #ff00fe;">Building Yolo network...</span></div><div><span style="color: #ff00fe;"> layer inp_size out_size weightPtr</span></div><div><span style="color: #ff00fe;">(0) conv-bn-leaky 3 x 608 x 608 16 x 608 x 608 496 </span></div><div><span style="color: #ff00fe;">(1) maxpool 16 x 608 x 608 16 x 304 x 304 496 </span></div><div><span style="color: #ff00fe;">(2) conv-bn-leaky 16 x 304 x 304 32 x 304 x 304 5232 </span></div><div><span style="color: #ff00fe;">(3) maxpool 32 x 304 x 304 32 x 152 x 152 5232 </span></div><div><span style="color: #ff00fe;">(4) conv-bn-leaky 32 x 152 x 152 64 x 152 x 152 23920 </span></div><div><span style="color: #ff00fe;">(5) maxpool 64 x 152 x 152 64 x 76 x 76 23920 </span></div><div><span style="color: #ff00fe;">(6) conv-bn-leaky 64 x 76 x 76 128 x 76 x 76 98160 </span></div><div><span style="color: #ff00fe;">(7) maxpool 128 x 76 x 76 128 x 38 x 38 98160 </span></div><div><span style="color: #ff00fe;">(8) conv-bn-leaky 128 x 38 x 38 256 x 38 x 38 394096</span></div><div><span style="color: #ff00fe;">(9) maxpool 256 x 38 x 38 256 x 19 x 19 394096</span></div><div><span style="color: #ff00fe;">(10) conv-bn-leaky 256 x 19 x 19 512 x 19 x 19 1575792</span></div><div><span style="color: #ff00fe;">(11) maxpool 512 x 19 x 19 512 x 19 x 19 1575792</span></div><div><span style="color: #ff00fe;">(12) conv-bn-leaky 512 x 19 x 19 1024 x 19 x 19 6298480</span></div><div><span style="color: #ff00fe;">(13) conv-bn-leaky 1024 x 19 x 19 256 x 19 x 19 6561648</span></div><div><span style="color: #ff00fe;">(14) conv-bn-leaky 256 x 19 x 19 512 x 19 x 19 7743344</span></div><div><span style="color: #ff00fe;">(15) conv-linear 512 x 19 x 19 18 x 19 x 19 7752578</span></div><div><span style="color: #ff00fe;">(16) yolo 18 x 19 x 19 18 x 19 x 19 7752578</span></div><div><span style="color: #ff00fe;">(17) route - 256 x 19 x 19 7752578</span></div><div><span style="color: #ff00fe;">(18) conv-bn-leaky 256 x 19 x 19 128 x 19 x 19 7785858</span></div><div><span style="color: #ff00fe;">INFO: [TRT]: mm1_19: broadcasting input0 to make tensors conform, dims(input0)=[1,38,19][NONE] dims(input1)=[128,19,19][NONE].</span></div><div><span style="color: #ff00fe;">INFO: [TRT]: mm2_19: broadcasting input1 to make tensors conform, dims(input0)=[128,38,19][NONE] dims(input1)=[1,19,38][NONE].</span></div><div><span style="color: #ff00fe;">(19) upsample 128 x 19 x 19 128 x 38 x 38 - </span></div><div><span style="color: #ff00fe;">(20) route - 384 x 38 x 38 7785858</span></div><div><span style="color: #ff00fe;">(21) conv-bn-leaky 384 x 38 x 38 256 x 38 x 38 8671618</span></div><div><span style="color: #ff00fe;">(22) conv-linear 256 x 38 x 38 18 x 38 x 38 8676244</span></div><div><span style="color: #ff00fe;">(23) yolo 18 x 38 x 38 18 x 38 x 38 8676244</span></div><div><span style="color: #ff00fe;">Output yolo blob names :</span></div><div><span style="color: #ff00fe;">yolo_17</span></div><div><span style="color: #ff00fe;">yolo_24</span></div><div><span style="color: #ff00fe;">Total number of yolo layers: 49</span></div><div><span style="color: #ff00fe;">Building yolo network complete!</span></div><div><span style="color: #ff00fe;">Building the TensorRT Engine...</span></div><div><span style="color: #ff00fe;">INFO: [TRT]: mm1_19: broadcasting input0 to make tensors conform, dims(input0)=[1,38,19][NONE] dims(input1)=[128,19,19][NONE].</span></div><div><span style="color: #ff00fe;">INFO: [TRT]: mm2_19: broadcasting input1 to make tensors conform, dims(input0)=[128,38,19][NONE] dims(input1)=[1,19,38][NONE].</span></div><div><span style="color: #ff00fe;">INFO: [TRT]: Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output.</span></div><div><span style="color: #ff00fe;">INFO: [TRT]: Detected 1 inputs and 2 output network tensors.</span></div><div><span style="color: #ff00fe;">Building complete!</span></div><div><span style="color: #ff00fe;">0:02:35.752148292 18137 0x983e930 INFO nvinfer gstnvinfer.cpp:619:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::buildModel() <nvdsinfer_context_impl.cpp:1748> [UID = 1]: serialize cuda engine to file: /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo/model_b1_gpu0_fp16.engine successfully</span></div><div><span style="color: #ff00fe;">INFO: [Implicit Engine Info]: layers num: 3</span></div><div><span style="color: #ff00fe;">0 INPUT kFLOAT data 3x608x608 </span></div><div><span style="color: #ff00fe;">1 OUTPUT kFLOAT yolo_17 18x19x19 </span></div><div><span style="color: #ff00fe;">2 OUTPUT kFLOAT yolo_24 18x38x38 </span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">0:02:35.795951757 18137 0x983e930 INFO nvinfer gstnvinfer_impl.cpp:313:notifyLoadModelStatus:<primary_gie> [UID 1]: Load new model:/opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo/config_infer_primary_yoloV3_tiny.txt sucessfully</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">Runtime commands:</span></div><div><span style="color: #ff00fe;"><span style="white-space: pre;"> </span>h: Print this help</span></div><div><span style="color: #ff00fe;"><span style="white-space: pre;"> </span>q: Quit</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;"><span style="white-space: pre;"> </span>p: Pause</span></div><div><span style="color: #ff00fe;"><span style="white-space: pre;"> </span>r: Resume</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">NOTE: To expand a source in the 2D tiled display and view object details, left-click on the source.</span></div><div><span style="color: #ff00fe;"> To go back to the tiled display, right-click anywhere on the window.</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">**PERF: FPS 0 (Avg)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 0.00 (0.00)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">** INFO: <bus_callback:181>: Pipeline ready</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">** INFO: <bus_callback:167>: Pipeline running</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">GST_ARGUS: Creating output stream</span></div><div><span style="color: #ff00fe;">CONSUMER: Waiting until producer is connected...</span></div><div><span style="color: #ff00fe;">GST_ARGUS: Available Sensor modes :</span></div><div><span style="color: #ff00fe;">GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;</span></div><div><span style="color: #ff00fe;"><br /></span></div><div><span style="color: #ff00fe;">GST_ARGUS: Running with following settings:</span></div><div><span style="color: #ff00fe;"> Camera index = 0 </span></div><div><span style="color: #ff00fe;"> Camera mode = 4 </span></div><div><span style="color: #ff00fe;"> Output Stream W = 1280 H = 720 </span></div><div><span style="color: #ff00fe;"> seconds to Run = 0 </span></div><div><span style="color: #ff00fe;"> Frame Rate = 120.000005 </span></div><div><span style="color: #ff00fe;">GST_ARGUS: Setup Complete, Starting captures for 0 seconds</span></div><div><span style="color: #ff00fe;">GST_ARGUS: Starting repeat capture requests.</span></div><div><span style="color: #ff00fe;">CONSUMER: Producer has connected; continuing.</span></div><div><span style="color: #ff00fe;">KLT Tracker Init</span></div><div><span style="color: #ff00fe;">**PERF: 29.67 (29.46)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 29.04 (29.10)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 29.10 (29.20)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 29.04 (29.10)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 29.10 (29.16)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 29.04 (29.10)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 28.87 (29.11)<span style="white-space: pre;"> </span></span></div><div><span style="color: #ff00fe;">**PERF: 29.24 (29.10)<span style="white-space: pre;"> </span></span></div></div><div><br /></div><div>10.使用Overlay sink直接輸出結果至HDMI Screen. </div><div><br /></div><div>編輯檔案 deepstream_app_config_yoloV3_tiny.txt</div><div><br /></div><div><div><span style="color: #2b00fe;">[sink0]</span></div><div><span style="color: #2b00fe;">enable=1</span></div><div><span style="color: #2b00fe;">#Type - 1=FakeSink 2=EglSink 3=File 5=overlaysink</span></div><div><span style="color: #2b00fe;">type=5</span></div><div><span style="color: #2b00fe;">width=1280</span></div><div><span style="color: #2b00fe;">height=720</span></div></div><div><br /></div><div><div>編輯 /etc/ssh/sshd_config</div><div><div><span style="color: #2b00fe;">+ #X11Forwarding no</span></div><div><span style="color: #2b00fe;">- X11Forwarding yes</span></div><div><br /></div><div>設定環境參數</div></div></div><div><br /></div><div><span style="color: #04ff00;">unset DISPLAY</span></div><div><br /></div><div>11.使用 CSI camera作為輸入來源</div><div><br /></div><div>編輯檔案 deepstream_app_config_yoloV3_tiny.txt</div><div><br /></div><div><div><span style="color: #2b00fe;">[source0]</span></div><div><span style="color: #2b00fe;">enable=1</span></div><div><span style="color: #2b00fe;">#Type - 1=CameraV4L2 2=URI 3=MultiURI 5=CsiCamera</span></div><div><span style="color: #2b00fe;">type=5</span></div><div><span style="color: #2b00fe;">camera-width=1280</span></div><div><span style="color: #2b00fe;">camera-height=720</span></div></div><div><br /></div><div>12. Reference</div><div><br /></div><div><a href="https://github.com/marcoslucianops/DeepStream-Yolo">https://github.com/marcoslucianops/DeepStream-Yolo</a><br /></div><div><br /></div><div> </div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-50302573802073761332020-07-21T04:53:00.002-07:002020-07-21T07:26:11.607-07:00BMW E53/E38 Cluster mileage and VIN recodingBMW E53/E38 更換拆車的儀表板(IKE)需要更改<div>a.里程數(mileage)要調整數值與車上相同</div><div>b.車身碼(VIN)要更改與車上相同</div><div>c.可能還需要做coding更改一些參數設定,例如油箱容量及時速表微調等.</div><div><br /></div><div>以上需要更改的資料都儲存在儀表板上的一顆EEPROM IC裡面, 這顆IC有兩種比較早期的是M93S66 而後期的是M35080, 這兩顆IC硬體都是八根腳但腳位定義完全不同, 軟體讀寫的方式也不同, 因此不能互換.</div><div><br /></div><div>這裡只針對M35080來做研究.</div><div><br /></div><div>M35080 (注意後面有V3 V6是不同的IC喔) 是一顆SPI界面可讀寫的ROM, 儲存容量有1024 bytes.</div><div>因此讀寫的位址範圍是 0x0000 ~ 0x03ff, 位址最開頭的32 bytes是 incremental register, 每兩個bytes為一個單位,一共16個. 里程數就是放在這16個 Incremental register 中, Incremental register有個限制就是寫入的數值不能比原本儲存的小, 實務上的意義就是里程數只能增加不能減少.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-jZ04mULE6Ha43BeUnA-6i7zbilkTQc-M4HNrFl166kzlONxmfMF-y_kUMmHOTJX1EiXsJ4XveUKd5DG1Ra3rYbFcw1gH96gtiwoUtbofjsBjiVM3_uG5NPEBn36BeUkrcCak1TiPdMM/s2048/IMG_20200719_000704.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="781" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-jZ04mULE6Ha43BeUnA-6i7zbilkTQc-M4HNrFl166kzlONxmfMF-y_kUMmHOTJX1EiXsJ4XveUKd5DG1Ra3rYbFcw1gH96gtiwoUtbofjsBjiVM3_uG5NPEBn36BeUkrcCak1TiPdMM/w586-h781/IMG_20200719_000704.jpg" width="586" /></a></div><div><br /></div><div><br /></div><div>1.Mileage decode</div><div><br /></div><div>實際來看這32 bytes的資料(十六進位數值), 里程數是139148 km</div><div><br /></div><div><div><font color="#04ff00">0x0000</font><span style="white-space: pre;"> </span><font color="#2b00fe">10 fd 10 fd 10 fd 10 fd 10 fd 10 fd 10 fc 10 fc </font></div><div><font color="#04ff00">0x0010</font><span style="white-space: pre;"> </span><font color="#2b00fe">10 fc 10 fc 10 fc 10 fc 10 fc 10 fc 10 fc 10 fc </font></div></div><div><br /></div><div>由六個 10 FD 及 十個 10 FC 組成</div><div><br /></div><div>首先 10FC 左移一個bit 變成 21F8, 一共有6個10 FD, 6 左移一個bit 變成C</div><div>兩個數值組合起來變成 21F8C 轉換為十進位數值就是 139148</div><div><br /></div><div>演算過程 (((0x10 << 1) << 8 | (0xFC << 1)) << 4) | (6 << 1) = 0x21F8C = 139148</div><div><br /></div><div>2.VIN decode</div><div><br /></div><div>車身碼VIN code有固定的格式, 由兩個英文字母加上5個數字組成</div><div><br /></div><div>例如 LN73888</div><div><br /></div><div>VIN的儲存位址沒有固定,各車型可能位置都不同,甚至有可能有兩個以上的位址儲存VIN code</div><div><br /></div><div>以下VIN位址在0x022C</div><div><br /></div><div><div><font color="#04ff00">0x0220</font><span style="white-space: pre;"> </span><font color="#2b00fe">8f ff fe 5e ff 2c fe 3c f6 91 49 31 4c 4e 73 88 </font></div><div><font color="#04ff00">0x0230</font><span style="white-space: pre;"> </span><font color="#2b00fe">12 80 12 09 81 92 12 80 43 20 0a 29 00 09 0d ee </font></div></div><div><br /></div><div>資料是 4c 4e 73 88 12 80</div><div>4c : ASCII code 字元 L</div><div>4e: ASCII code 字元 N</div><div>73: 數字 73</div><div>88: 數字 88</div><div>12: 忽略這個byte</div><div>80: 取高位數字8</div><div><br /></div><div>這樣就能得到 VIN : LN73888</div><div><br /></div><div>3.回到更換拆車的儀表板的主題, VIN 及 mileage 儲存在儀表板 及 LCM燈光模組.</div><div>當車輛鎖匙轉至紅火,LCM及IKE會互相比對VIN及mileage,如果不同就會亮防偽燈.</div><div>所以更換儀表板要更改VIN及mileage. </div><div><br /></div><div>4.更改 VIN</div><div>可透過BMW Scanner / PA Soft軟體來更改,不用拆解儀表板</div><div><br /></div><div>5.更改 mileage</div><div>要拆儀表板分解並解焊M35080, 又分以下兩種作法</div><div>a. 用專用的M35080 programmer可以清除mileage</div><div>b.透過BMW Scanner / PA Soft軟體dump M35080的全部的資料到電腦檔案中, 手動修改檔案將前32 bytes清成 00, 找到VIN 所在位址修改為 FF FF FF FF 12 FF, 然後拆下M35080 換一顆全新資料空的上去, 再用BMW Scanner / PA Soft軟體寫回去.</div><div><br /></div><div>上車後儀表板會自動把LCM上儲存的VIN 及 mileage 寫入M35080</div><div><br /></div><div>這樣就完成了</div><div><br /></div><div><div>6.這次我採取的作法是購買新的M35080來更新, 萬一弄壞了還有舊的備份.</div><div>首先解焊M35080, 值得一提是電路板的IC上幾乎都有打樹脂, 一定要先用熱風槍加熱再仔細清除.</div><div>參閱M35080 Datasheet及網路上Arduino的實做範例程式, 我用STM32F103 SPI實做了一個簡易的programmer. 可以讀取及寫入M35080, 另外也有Encode / Decode VIN / Search VIN 及 Encode / Decode mileage. 有了這個工具我把整個M35080的內容讀出然後將該內容的前32 bytes清成 00 </div><div>, 然後改寫 VIN, 接著把這份修改過的內容寫到新的M35080, 最後把新的M35080焊回去儀表板.</div><div><br /></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq-7gtP7LA9VlKyzU6fsmwIOTF9t3GWH3IieisnNk6WfgFKWCzyLiOI6iwLbFEq6mElimS1tIO9uPEiv2GtYQqHwAtJvyCn8QwU-D0aO28bxoLxdQ59yDkEhBTvzf3_3ZcC61eWOteShw/s2048/IMG_20200721_173325.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="781" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq-7gtP7LA9VlKyzU6fsmwIOTF9t3GWH3IieisnNk6WfgFKWCzyLiOI6iwLbFEq6mElimS1tIO9uPEiv2GtYQqHwAtJvyCn8QwU-D0aO28bxoLxdQ59yDkEhBTvzf3_3ZcC61eWOteShw/w586-h781/IMG_20200721_173325.jpg" width="586" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbW0jfBmOb87pustFY_x3Za6eA_4XtSaPdQEkPSgu6CnNeioPVoWkKJxgpQn_33g4L5VBQEbjPBZvxng7lIQ-p3kq3p8JrnCzSBziRbQdS9W2WRuSEum-NFQpf7d-C3TRkJnnyj-cLLi0/s2048/IMG_20200720_144006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="469" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbW0jfBmOb87pustFY_x3Za6eA_4XtSaPdQEkPSgu6CnNeioPVoWkKJxgpQn_33g4L5VBQEbjPBZvxng7lIQ-p3kq3p8JrnCzSBziRbQdS9W2WRuSEum-NFQpf7d-C3TRkJnnyj-cLLi0/w625-h469/IMG_20200720_144006.jpg" width="625" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECtI-MMGo0JU8lmpbEwD296zvwqNxTVLCU__PKgqAAQOMSG7koWro4GtDcrLPdlVPEgfbNdkYayZQGOq4aBiOeBUzpeOcvn22Exa6qt01QXXqkHSeRFgPEMX82pQzjfga362jMJJefP4/s2048/IMG_20200721_192255.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="469" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECtI-MMGo0JU8lmpbEwD296zvwqNxTVLCU__PKgqAAQOMSG7koWro4GtDcrLPdlVPEgfbNdkYayZQGOq4aBiOeBUzpeOcvn22Exa6qt01QXXqkHSeRFgPEMX82pQzjfga362jMJJefP4/w625-h469/IMG_20200721_192255.jpg" width="625" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfTgkIeEcIAg6zDbKuDR-KRIHprul7BKoKtv4NQv2EgIW_pdhwlYpkYomC0JgbgBlSw6x29wezJpnx1uRtdmC_91qjPRuSm3BsiBYGYbtxsH3kKIlmV8UAdf-u_Rrq1XJBJv8R3v3aLJc/s2048/IMG_20200721_193129.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="469" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfTgkIeEcIAg6zDbKuDR-KRIHprul7BKoKtv4NQv2EgIW_pdhwlYpkYomC0JgbgBlSw6x29wezJpnx1uRtdmC_91qjPRuSm3BsiBYGYbtxsH3kKIlmV8UAdf-u_Rrq1XJBJv8R3v3aLJc/w625-h469/IMG_20200721_193129.jpg" width="625" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2y9RzOmEsVY9zJ8hqXyZkk4JwziOMppWD_64pyhsLBvPKHSIT9PTTXTxYI3TO9AzbIbYk2nM7uwFTv_IB6ZxBclxiOF_svzOHufNaO9v4m58Fr5Wqz-LiiV-6U1LZThEp1yZAFi4wH2w/s1366/LN73888-F3.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1366" height="335" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2y9RzOmEsVY9zJ8hqXyZkk4JwziOMppWD_64pyhsLBvPKHSIT9PTTXTxYI3TO9AzbIbYk2nM7uwFTv_IB6ZxBclxiOF_svzOHufNaO9v4m58Fr5Wqz-LiiV-6U1LZThEp1yZAFi4wH2w/w625-h335/LN73888-F3.PNG" width="625" /></a></div><div><br /></div><div><br /></div><div>Reference</div><div><br /></div><div><a href="https://github.com/gerchanovsky/m35080_odometer_fix" target="_blank">https://github.com/gerchanovsky/m35080_odometer_fix</a><br /></div><div><br /></div><div><a href="https://www.bimmerforums.com/forum/showthread.php?1892451-The-M5-cluster-retrofit" target="_blank">https://www.bimmerforums.com/forum/showthread.php?1892451-The-M5-cluster-retrofit</a><br /></div><div><br /></div><div><a href="https://www.bimmerforums.com/forum/showthread.php?2163451-DIY-How-to-reprogram-a-used-cluster-to-match-your-car-s-mileage-VIN-and-coding" target="_blank">https://www.bimmerforums.com/forum/showthread.php?2163451-DIY-How-to-reprogram-a-used-cluster-to-match-your-car-s-mileage-VIN-and-coding</a><br /></div><div><br /></div><div><a href="https://www.bimmerforums.com/forum/showthread.php?2391807-Bmw-e60-module-vin-change" target="_blank">https://www.bimmerforums.com/forum/showthread.php?2391807-Bmw-e60-module-vin-change</a><br /></div><div><br /></div><div><a href="https://www.bimmerfest.com/forums/showthread.php?t=970175" target="_blank">https://www.bimmerfest.com/forums/showthread.php?t=970175</a><br /></div><div><br /></div><div><a href="https://www.bimmerforums.com/forum/showthread.php?1990403-The-Truth-About-Coding-Cluster-Mileage" target="_blank">https://www.bimmerforums.com/forum/showthread.php?1990403-The-Truth-About-Coding-Cluster-Mileage</a><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-29625794006939372312020-07-12T00:04:00.003-07:002021-04-15T22:56:38.308-07:00Jetson Nano Wifi Hotspot一直以來都是透過ethetnet以ssh方式登入Jetson Nano, 這個方式有兩個很大的缺點,一是需要先取得Jetson Nano在區域網路分配到的IP address, 而且只要換個網路IP address也跟著改變, 二是Jetson Naon在移動的載台上拉著網路線極不方便.<div><br /></div><div>經過一番研究,最好的方式是Jetson Nano + AC 8265無線網卡做Wifi AP</div><div><br /></div><div>1.Jetson Nano在完成SD card初次開機時需要做Initial setup, 選擇語言, 建立user / password.</div><div>這時PC先透過USB OTG連線Jetson Nano.</div><div><br /></div><div><font color="#0b8043">$ sudo apt-get install screen</font></div><div><font color="#0b8043"><br /></font></div><div><font color="#0b8043">$ screen /dev/ttyACM0 115200</font></div><div><br /></div><div>2.在完成以上初始化設定後登入Jetson Nano, 建立Wifi Hotspot</div><div><br /></div><div>$ nmcli dev wifi hotspot ifname wlan0 ssid <SSID> password <PASSWORD></div><div><br /></div><div>編輯Wifi hotspot設定檔, 開機自動啟用Wifi Hotspot及設定Wifi hotspot的IP address & netmask</div><div><br /></div><div><font color="#0b8043">$ sudo vi /etc/NetworkManager/system-connections/Hotspot</font></div><div><br /></div><div><div><font color="#3367d6">-autoconnect=false</font></div><div><font color="#3367d6">+autoconnect=true</font></div><div><font color="#3367d6"><br /></font></div><div><font color="#3367d6">[ipv4]</font></div><div><font color="#3367d6">dns-search=</font></div><div><font color="#3367d6">method=shared</font></div><div><font color="#3367d6">+address1=10.0.0.1/24</font></div></div><div><br /></div><div>3.重啟Network Manager</div><div><br /></div><div><div><font color="#0b8043">$ sudo systemctl restart network-manager.service</font></div></div><div><br /></div><div>4.PC連線Jetson Nano wifi hotspot. 這個IP address永遠不變</div><div><br /></div><div><font color="#0b8043">$ ssh <USER>@10.0.0.1</font></div><div><br /></div><div>5.這個作法PC仍然可以透過Jetson Nano的有線ethernet連上internet</div><div><br /></div><div>[ PC ] <---Wifi ---> [ Hotspot / Jetson Nano / Ethernet ] <--- Local LAN ---> Internet</div><div><br /></div><div><br /></div><div>6.Disable wifi power save</div><div><br /></div><div><span style="color: #0b8043;">$ sudo vi /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf</span></div><div><br /></div><div><span style="color: #0b5394;">-wifi.powersave = 3</span></div><div><span style="color: #0b5394;">+wifi.powersave = 2</span></div><div><br /></div><div> </div><div><br /></div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-32072881241121925972020-03-09T23:59:00.007-07:002020-09-23T10:58:46.045-07:00Jetson Naon DeepStream SDK Getting StartedDeepStream SDK 基於 GStreamer library. 透過plug-in的方式使用GPU來處理串流資料. 例如Encode / Decode H.264串流, 物件辨識及目標追蹤, On Screen Display標示物件等.<br />
<br />
<b>1.Install DeepStream SDK - 4.0.2</b><br />
<br />
<a href="https://docs.nvidia.com/metropolis/deepstream/dev-guide/" target="_blank">https://docs.nvidia.com/metropolis/deepstream/dev-guide/</a><br />
<br />
最容易的方式是Method 3 以Debian package安裝, 相依的套件會全部自動安裝<br />
<br />
<span style="color: lime;">$ sudo apt-get install ./deepstream-4.0_4.0.2-1_arm64.deb</span><br />
<br />
安裝完成後 DeepStream SDK 在 /opt/nvidia/deepstream/deepstream-4.0<br /><div><div><br /></div>
<b>2.DeepStream SDK的測試範例</b><br />
<br />
<span style="color: lime;">$ cd /opt/nvidia/deepstream/deepstream-4.0/sources/apps/sample_apps/deepstream-test1</span><br />
<br />
編輯檔案 dstest1_pgie_config.txt, 修改network-mode (0 : FP32, 1 : Int8, 2 : FP16)<br />
<div>
因為 Jetson Naon 不支援 Int8 inference</div>
<div>
<br /></div>
<span style="color: blue;">#network-mode=1</span><br />
<span style="color: blue;">network-mode=2</span><br />
<div>
<br /></div>
<div>
<div>
<span style="color: lime;">$ deepstream-test1-app /opt/nvidia/deepstream/deepstream-4.0/samples/streams/sample_720p.h264</span></div>
</div>
<div>
<br /></div>
<div>
執行後要等一陣子產生model engine之後才以此處理並輸出影像串流</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK3J1TMt1X794FHp-gQZJ-Gyx3tKA8J6akZ824Ahc361z0D6TyALC8wK8O4bDOCRPeZsii5Lte-bPC2dU265oq9uZ4yHhyhdJR8KkDyNKhz1EyDFoff_TyhFuuy1LreK8c8CbpuEYXJRw/s1600/Screenshot+from+2020-03-10+15-03-26.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="650" data-original-width="1478" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK3J1TMt1X794FHp-gQZJ-Gyx3tKA8J6akZ824Ahc361z0D6TyALC8wK8O4bDOCRPeZsii5Lte-bPC2dU265oq9uZ4yHhyhdJR8KkDyNKhz1EyDFoff_TyhFuuy1LreK8c8CbpuEYXJRw/s640/Screenshot+from+2020-03-10+15-03-26.png" width="640" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
執行完成後model engine file會儲存起來,這時再度編輯dstest1_pgie_config.txt, 修改</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue;">model-engine-file=../../../../samples/models/Primary_Detector/resnet10.caffemodel_b1_fp16.engine</span></div>
</div>
<div>
<br /></div>
<div>
再次執行deepstream-test1-app就會直接使用之前產生的 .engine file</div>
<div>
<br /></div><div>若出現以下錯誤<br /><br /><div>No EGL Display </div><div>nvbufsurftransform: Could not get EGL display connection</div><div><br /></div>編輯 ~/.bashrc 在檔案最後加上<div><br /></div><div><span style="color: #2b00fe;">unset DISPLAY</span></div><div><span style="color: #2b00fe;">export DISPLAY=:0</span></div><div><br /></div><div>執行 source ~/.bashrc</div><div><br /></div><div>修改 /etc/ssh/sshd_config</div><div><div><span style="color: #2b00fe;">+ #X11Forwarding no</span></div><div><span style="color: #2b00fe;">- X11Forwarding yes</span></div><div><br /></div><div>執行 xrandr 確認 X11有跑起來</div><div><br /></div></div></div>
<div>
<b>3.DeepStream Application</b></div>
<div>
<br /></div>
<div>
由以上的測試範例可知DeepStream Application是以c code來寫程式組合GStreamer串流, Inference則以 .txt 作為設定檔, 設定串流的source / sink, inference的各項參數等等</div>
<div>
<br /></div>
<b>4.DeepStream Yolo</b><br />
<br />
Yolo物件辨識的範例<br />
<br />
<span style="color: lime;">$ cd /opt/nvidia/deepstream/deepstream-4.0/sources/objectDetector_Yolo</span><br />
<span style="color: lime;">$ ./prebuild.sh</span><br />
<span style="color: lime;">$ cd nvdsinfer_custom_impl_Yolo/</span><br />
<span style="color: lime;">$ export CUDA_VER=10.0</span><br />
<span style="color: lime;">$ make</span><br />
<span style="color: lime;">$ cd ../</span><br />
<div>
<br /></div>
<div>
採用YoloV3 tiny</div>
<div>
編輯 config_infer_primary_yoloV3_tiny.txt, 修改network-mode (0 : FP32, 1 : Int8, 2 : FP16)</div>
<div>
<br /></div>
<div>
<span style="color: blue;">#network-mode=1</span><br />
<span style="color: blue;">network-mode=2</span><br />
<div>
<div>
<span style="background-color: white;"><span style="color: blue;">model-engine-file=model_b1_fp16.engine</span></span></div>
</div>
</div>
<div>
<br /></div>
<div>
<div>
<span style="color: lime;">$ deepstream-app -c deepstream_app_config_yoloV3_tiny.txt</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">Using winsys: x11 </span></div>
<div>
<span style="color: lime;">Creating LL OSD context new</span></div>
<div>
<span style="color: lime;">Deserialize yoloLayerV3 plugin: yolo_17</span></div>
<div>
<span style="color: lime;">Deserialize yoloLayerV3 plugin: yolo_24</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">Runtime commands:</span></div>
<div>
<span style="color: lime;"><span style="white-space: pre;"> </span>h: Print this help</span></div>
<div>
<span style="color: lime;"><span style="white-space: pre;"> </span>q: Quit</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;"><span style="white-space: pre;"> </span>p: Pause</span></div>
<div>
<span style="color: lime;"><span style="white-space: pre;"> </span>r: Resume</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">NOTE: To expand a source in the 2D tiled display and view object details, left-click on the source.</span></div>
<div>
<span style="color: lime;"> To go back to the tiled display, right-click anywhere on the window.</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">**PERF: FPS 0 (Avg)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 0.00 (0.00)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">** INFO: <bus_callback:189>: Pipeline ready</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">Opening in BLOCKING MODE </span></div>
<div>
<span style="color: lime;">NvMMLiteOpen : Block : BlockType = 261 </span></div>
<div>
<span style="color: lime;">NVMEDIA: Reading vendor.tegra.display-size : status: 6 </span></div>
<div>
<span style="color: lime;">NvMMLiteBlockCreate : Block : BlockType = 261 </span></div>
<div>
<span style="color: lime;">** INFO: <bus_callback:175>: Pipeline running</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">Creating LL OSD context new</span></div>
<div>
<span style="color: lime;">**PERF: 29.62 (29.62)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.80 (29.71)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.94 (29.79)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.78 (29.79)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.92 (29.81)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.61 (29.78)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.69 (29.77)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.66 (29.75)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">**PERF: 29.80 (29.76)<span style="white-space: pre;"> </span></span></div>
<div>
<span style="color: lime;">** INFO: <bus_callback:212>: Received EOS. Exiting ...</span></div>
<div>
<span style="color: lime;"><br /></span></div>
<div>
<span style="color: lime;">Quitting</span></div>
<div>
<span style="color: lime;">App run successful</span><br />
<span style="color: lime;"><br /></span></div>
</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggh5OUsEAFnHxM147ImMpM3wMuzqmF5NaJcvbuh9Yd4-JIg_cW0ynjG6qp7WG6UzQeNfr3-a3NJaZNmmFKRxdTa-SsFoXL4ZblY8cLERNn-13Y7YAOlToS-Ue7ZkPa9OeTWeB1ChZNlZQ/s1600/Screenshot+from+2020-03-10+15-02-16.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="748" data-original-width="1280" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggh5OUsEAFnHxM147ImMpM3wMuzqmF5NaJcvbuh9Yd4-JIg_cW0ynjG6qp7WG6UzQeNfr3-a3NJaZNmmFKRxdTa-SsFoXL4ZblY8cLERNn-13Y7YAOlToS-Ue7ZkPa9OeTWeB1ChZNlZQ/s640/Screenshot+from+2020-03-10+15-02-16.png" width="640" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
</div>史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-78951997375835240962019-07-18T06:06:00.002-07:002019-07-18T06:06:36.267-07:00Jetson Nano Uart C code#include <errno.h><br />
#include <fcntl.h><br />
#include <string.h><br />
#include <termios.h><br />
#include <unistd.h><br />
<br />
#include <stdio.h><br />
#include <signal.h><br />
#include <unistd.h><br />
<div>
<br /></div>
static int set_interface_attribs (int fd, int speed, int parity)<br />
{<br />
struct termios tty;<br />
memset (&tty, 0, sizeof tty);<br />
if (tcgetattr (fd, &tty) != 0)<br />
{<br />
printf ("error %d from tcgetattr\n", errno);<br />
return -1;<br />
}<br />
<br />
cfsetospeed (&tty, speed);<br />
cfsetispeed (&tty, speed);<br />
cfmakeraw(&tty); /* RAW mode */<br />
<br />
tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; // 8-bit chars<br />
// disable IGNBRK for mismatched speed tests; otherwise receive break<br />
// as \000 chars<br />
tty.c_iflag &= ~IGNBRK; // disable break processing<br />
tty.c_lflag = 0; // no signaling chars, no echo,<br />
// no canonical processing<br />
tty.c_oflag = 0; // no remapping, no delays<br />
tty.c_cc[VMIN] = 0; // read doesn't block<br />
tty.c_cc[VTIME] = 5; // 0.5 seconds read timeout<br />
<br />
tty.c_iflag &= ~(IXON | IXOFF | IXANY); // shut off xon/xoff ctrl<br />
<br />
tty.c_cflag |= (CLOCAL | CREAD);// ignore modem controls,<br />
// enable reading<br />
tty.c_cflag &= ~(PARENB | PARODD); // shut off parity<br />
tty.c_cflag |= parity;<br />
tty.c_cflag &= ~CSTOPB;<br />
tty.c_cflag &= ~CRTSCTS;<br />
<br />
if (tcsetattr (fd, TCSANOW, &tty) != 0)<br />
{<br />
printf ("error %d from tcsetattr\n", errno);<br />
return -1;<br />
}<br />
return 0;<br />
}<br />
<br />
static void set_blocking (int fd, int should_block)<br />
{<br />
struct termios tty;<br />
memset (&tty, 0, sizeof tty);<br />
if (tcgetattr (fd, &tty) != 0)<br />
{<br />
printf ("error %d from tggetattr\n", errno);<br />
return;<br />
}<br />
<br />
tty.c_cc[VMIN] = should_block ? 1 : 0;<br />
tty.c_cc[VTIME] = 5; // 0.5 seconds read timeout<br />
<br />
if (tcsetattr (fd, TCSANOW, &tty) != 0)<br />
printf ("error %d setting term attributes\n", errno);<br />
}<br />
<div>
<br /></div>
<div>
<div>
int main(int argc, char**argv)</div>
<div>
{</div>
<div>
const char *ttyName = "/dev/ttyTHS1";</div>
<div>
<br /></div>
<div>
int ttyFd = open (ttyName, O_RDWR | O_NOCTTY | O_SYNC);</div>
<div>
if (ttyFd) {</div>
<div>
set_interface_attribs (ttyFd, B9600, 0); // set speed to 115,200 bps, 8n1 (no parity)</div>
<div>
set_blocking (ttyFd, 0); // set no blocking</div>
<div>
} else</div>
<div>
printf ("error %d opening %s: %s\n", errno, ttyName, strerror (errno));</div>
</div>
<div>
<br /></div>
<div>
char data[5] = "1234"</div>
<div>
<br /></div>
<div>
write(fd, data, 4);</div>
<div>
<br /></div>
<div>
return 0;</div>
<div>
}</div>
史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-51350084750037564602019-07-12T00:29:00.003-07:002021-05-26T09:20:24.727-07:00Jetson Nano run program on startupI want to run my own program automatically on startup. For example, the name of my program is dragon-eye<br />
<br />
1. Create new file /etc/systemd/system/dragon-eye.service with content below<br />
<br />
[Unit]<br />
Description=Dragon Eye<br />
After=nvargus-daemon.service<br />
<br />
[Service]<br />
ExecStart=/usr/local/bin/dragon-eye<br />
Type=oneshot<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
<div>
<br /></div>
<div>
2.Enable service on startup</div>
<div>
<br /></div>
<div>
sudo systemctl enable dragon-eye</div>
<div>
<br /></div>
<div>
3.Disable service</div>
<div>
<div>
<br /></div>
<div>
sudo systemctl disable dragon-eye</div>
</div>
<div>
<br /></div>
<div>
4.Run-time service control</div>
<div>
<br /></div>
<div>
sudo systemctl start dragon-eye</div>
<div>
<div>
<br /></div>
<div>
sudo systemctl stop dragon-eye</div>
<div>
<br /></div>
<div>
sudo systemctl status dragon-eye</div>
</div>
<div>
<br /></div><div>5.Reference</div><div><br /></div><div><a href="https://www.freedesktop.org/software/systemd/man/systemd.service.html" target="_blank">https://www.freedesktop.org/software/systemd/man/systemd.service.html</a><br /></div><div><br /></div>
史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-23229633779232779002019-06-03T22:12:00.001-07:002019-07-24T04:54:24.055-07:00Jetson Nano GPIO supportJetson Nano GPIO 位在 J41 connector<br />
<br />
<a href="https://www.jetsonhacks.com/nvidia-jetson-nano-j41-header-pinout/" target="_blank">https://www.jetsonhacks.com/nvidia-jetson-nano-j41-header-pinout/</a><br />
<br />
使用GPIO首先要處理權限的問題, 不然只有 root 能操作GPIO.<br />
依據以下命令新增一個 group 叫 gpio. 把想要操作GPIO的user加入這個group.<br />
然後在每次export GPIO後更改sys file system相關檔案的權限<br />
<br />
sudo groupadd -f -r gpio<br />
sudo usermod -a -G gpio $USER<br />
sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/<br />
<br />
修改 /etc/udev/rules.d/99-gpio.rules<br />
<br />
<span style="color: blue;">SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", \</span><br />
<span style="color: blue;"> PROGRAM="/bin/sh -c 'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'"</span><br />
<br />
將chmod 660 改為 chmod 666<br />
<br />
sudo udevadm control --reload-rules && sudo udevadm trigger<br />
<br />
將想要使用的GPIO export命令放在 /etc/profile.d/export-gpio.sh<br />
這樣每次系統重啟就會自動把GPIO export好. 例如GPIO18<br />
<br />
echo 18 > /sys/class/gpio/export<br />
<br />
echo out > /sys/class/gpio/gpio18/direction<br />
<br />
echo 1 > /sys/class/gpio/gpio18/value<br />
<br />
最後要sudo reboot now<br />
<br />
以c/c++來控制GPIO.<br />
<div>
<br /></div>
<span style="color: #24292e; font-family: , "consolas" , "liberation mono" , "menlo" , "courier" , monospace;"><span style="font-size: 13.6px;"><a href="https://github.com/gigijoe/jetsonTX2GPIO" target="_blank">https://github.com/gigijoe/jetsonTX2GPIO</a></span></span><br />
<br />
Input / Output 電路<br />
<br />
<a href="https://www.jetsonhacks.com/2015/12/29/gpio-interfacing-nvidia-jetson-tx1/" target="_blank">https://www.jetsonhacks.com/2015/12/29/gpio-interfacing-nvidia-jetson-tx1/</a><br />
<br />
<br />史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0tag:blogger.com,1999:blog-367552539500456600.post-74805814726513378812019-05-31T23:43:00.000-07:002019-06-04T10:22:35.551-07:00Jetson Naon Camera SupportJetson Nano 支援的 IMX219 Cmaera 連接到主板上CSI-2 Connector. 另外也支援USB UVC 類型的 camera<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5rOyFRkpyHZ5ODzA8o5kTG22gNX-nE6fepLq6JYUhS3kgkST9oTeRj0iFPSDFDZgq09cwEWRd6QEjrLSD7milrf_lg8NiCJ5ffT0cLpgiFIsQfm5HfyxaAKy-qBIFQR3yLcZkiHfCE7U/s1600/IMG_20190601_134832.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5rOyFRkpyHZ5ODzA8o5kTG22gNX-nE6fepLq6JYUhS3kgkST9oTeRj0iFPSDFDZgq09cwEWRd6QEjrLSD7milrf_lg8NiCJ5ffT0cLpgiFIsQfm5HfyxaAKy-qBIFQR3yLcZkiHfCE7U/s640/IMG_20190601_134832.jpg" width="480" /></a></div>
<br />
IMX219 Camera 可直接購買 Raspberry Pi camera module V2 直上, 該模組有800萬畫素, 解析度支援到 3280x2464<br />
<br />
v4l2-ctl -d /dev/video0 --list-formats-ext<br />
ioctl: VIDIOC_ENUM_FMT<br />
<span style="white-space: pre;"> </span>Index : 0<br />
<span style="white-space: pre;"> </span>Type : Video Capture<br />
<span style="white-space: pre;"> </span>Pixel Format: 'RG10'<br />
<span style="white-space: pre;"> </span>Name : 10-bit Bayer RGRG/GBGB<br />
<span style="white-space: pre;"> </span>Size: Discrete 3280x2464<br />
<span style="white-space: pre;"> </span>Interval: Discrete 0.048s (21.000 fps)<br />
<span style="white-space: pre;"> </span>Size: Discrete 3280x1848<br />
<span style="white-space: pre;"> </span>Interval: Discrete 0.036s (28.000 fps)<br />
<span style="white-space: pre;"> </span>Size: Discrete 1920x1080<br />
<span style="white-space: pre;"> </span>Interval: Discrete 0.033s (30.000 fps)<br />
<span style="white-space: pre;"> </span>Size: Discrete 1280x720<br />
<span style="white-space: pre;"> </span>Interval: Discrete 0.017s (60.000 fps)<br />
<span style="white-space: pre;"> </span>Size: Discrete 1280x720<br />
<span style="white-space: pre;"> </span>Interval: Discrete 0.017s (60.000 fps)<br />
<div>
<br /></div>
<div>
測試驅動Camera參考 <a href="https://github.com/JetsonHacksNano/CSI-Camera" target="_blank">https://github.com/JetsonHacksNano/CSI-Camera</a></div>
<div>
<br /></div>
<div>
<div>
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=1280, height=720, framerate=30/1, format=NV12' ! nvvidconv ! xvimagesink -e</div>
</div>
<div>
<br /></div>
<div>
USB Camera基本上只要有UVC支援都能用,選擇非常多</div>
<div>
<br /></div>
<div>
測試驅動</div>
<div>
<br /></div>
<div>
<div>
gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegparse ! jpegdec ! xvimagesink sync=false</div>
</div>
<div>
<br /></div>
<div>
IMX219 Camera 顏色校正<br />
<br />
<a href="https://devtalk.nvidia.com/default/topic/1051913/how-to-close-gstreamer-pipeline-in-python/?offset=14" target="_blank">https://devtalk.nvidia.com/default/topic/1051913/how-to-close-gstreamer-pipeline-in-python/?offset=14</a><br />
<br />
sudo cp camera_overrides.isp /var/nvidia/nvcam/settings<br />
sudo chmod 664 /var/nvidia/nvcam/settings/camera_overrides.isp<br />
sudo chown root:root /var/nvidia/nvcam/settings/camera_overrides.isp<br />
<br /></div>
<div>
在coding過程中,若Camera使用中程式不正常中止或Camera buffer overflow需要重啟Camera Daemon才能再次正常工作<br />
<br />
sudo systemctl restart nvargus-daemon</div>
史帝夫嘰嘰叫http://www.blogger.com/profile/15406007489718427109noreply@blogger.com0