Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91在线视频免费91,国产不卡在线播放,亚洲日本va中文字幕婷婷

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          github資源推薦:目標姿態檢測數據集與渲染方法

          準化數據集在多媒體研究中至關重要。今天,我們要給大家推薦一個匯總了姿態檢測數據集和渲染方法的 github repo。

          項目地址:https://github.com/YoungXIAO13/ObjectPoseEstimationDatasets

          這個數據集匯總了用于對象姿態估計的數據集,以及生成合成訓練數據的呈現方法。在下表中,3D CAD 模型表示為模型,2D 圖像表示為對象。

          該項目分為四個部分:

          • 受控環境中的對象

          • 野外物體

          • 3D 模型數據集

          • 渲染方法

          受控環境中的對象

          此表列出了通常稱為 BOP:Benchmark 6D 對象姿態估計的數據集,該數據集提供精確的 3D 對象模型和精確的 2D~3D 對齊。

          可以下載所有 BOP 數據集,并使用作者提供的工具箱。

          使用項目上面的代碼 ply2obj.py 將原始 .ply 文件轉換為 .obj 文件,并運行 create_annotation.py 為數據集中的所有場景創建一個注釋文件。

          以上數據集的下載地址:

          • HomebrewedDB:https://bop.felk.cvut.cz/datasets/

          • YCB-Video:https://rse-lab.cs.washington.edu/projects/posecnn/

          • T-LESS:https://bop.felk.cvut.cz/datasets/

          • Doumanoglou:https://bop.felk.cvut.cz/datasets/

          • Tejani:https://bop.felk.cvut.cz/datasets/

          • Occluded-LINEMOD:https://bop.felk.cvut.cz/datasets/

          • LINEMOD:https://bop.felk.cvut.cz/datasets/

          野外物體

          在該表中, Pix3D 和 ScanNet 提供精確的 2D-3D 對齊,而其他僅提供粗略的對齊。

          PASCAL3D+ 是用于視點估計的事實基準。

          ScanNet 通常用來評估場景重建和分割。

          數據集下載地址:

          • ApolloCar3D:http://apolloscape.auto/car_instance.html

          • Pix3D:http://pix3d.csail.mit.edu/

          • ScanNet:http://www.scan-net.org/

          • ObjectNet3D:http://cvgl.stanford.edu/projects/objectnet3d/

          • PASCAL3D+:http://cvgl.stanford.edu/projects/pascal3d.html

          • KITTI:http://www.cvlibs.net/datasets/kitti/eval_object.php

          3D 模型數據集

          為了驗證網絡泛化能力,可以使用以下數據集生成合成訓練數據。請注意,ABC 包含通用和任意的工業 CAD 型,而 ShapeNetCore 和 ModelNet 包含常見類別的對象,如汽車和椅子。

          數據集地址:

          • ABC:https://deep-geometry.github.io/abc-dataset/

          • ShapeNetCore:https://www.shapenet.org/download/shapenetcore

          • ModelNet-40:http://modelnet.cs.princeton.edu/

          渲染方法

          • 可微渲染

          這里有兩篇參考論文:CVPR 2018 論文《Neural 3D Mesh Renderer》和 NIPS 2018 論文《RenderNet》。

          • Blender Render 渲染

          本 repo 提供了相關的 python 代碼,以使用 Blender 作為一個易于安裝和生成照片級真實圖像的 python 模塊,從 3D 模型生成渲染圖像。

          你可以在這里找到更多關于使用它的方法。

          • 物理模擬器

          Pybullet是機器人界非常受歡迎的一個物理模擬器。

          • 其他

          Glumpy:不支持無頭渲染(在 ssh 模式下會失敗)

          UnrealCV:Unreal Engine 4 的擴展,幫助與虛擬世界交互并與外部程序通信。

          合成計算機視覺:恢復許多用于生成合成圖像的技術

          via:https://github.com/YoungXIAO13/ObjectPoseEstimationDatasets

          雷鋒網網雷鋒網雷鋒網

          日常 Web 開發中,書寫代碼遵循的原則是用盡可能少的代碼實現盡可能多的功能。本文將探索日常開發中遇到的需求場景,僅用一行代碼來實現。

          01.計算數組中元素出現的次數

          const occurrenceMap = arr => arr.reduce((acc, current) => (acc[current] = (acc[current] || 0) + 1, acc), {});
          
          // output: { a: 2, b: 1, c: 1, d: 1 }
          occurrenceMap(['a', 'b', 'c', 'a', 'd'])
          

          02.實現數組淺拷貝

          const shallowClone = arr => arr.slice(0); 
          // or
          const shallowClone = array => [...array];
          
          // output: [ { a: 'b', b: { c: 'd' } } ]
          shallowClone([{a: 'b', b: {c: 'd'}}])
          

          由于是淺拷貝,嵌套對象或數組將通過引用拷貝,而不是復制。

          03.數組是否為空判斷

          const isEmptyArray = arr => Array.isArray(arr) && !arr.length;
          
          // recommend
          const isEmptyArray = ({ length }) => length === 0;
          
          // output: true
          isEmptyArray(Array(2))
          

          ({ length }) => length === 0 被大多數開發者所推薦,關于是否是數組應該再另一個函數中判斷,遵循“函數單一職責原則”。

          04.刪除數組中所有重復數據

          const removeDuplicates = arr => [...new Set(arr)]; 
          
          
          // output: [ 'a', 'b' ]
          removeDuplicates(['a', 'b', 'a'])
          
          // output: [ { a: 1 }, 'b', { a: 1 } ],包含非原始值
          removeDuplicates([{a: 1}, 'b', {a: 1}])
          
          

          請注意:代碼僅適用于具有原始值(string、number、bigint、boolean、undefined、symbol 和 null)的元素。保留元素的順序并返回數組的副本。

          05.獲取數組中的最小/最大元素

          const lowestNumber = arr => Math.min(...arr);
          const biggestNumber = arr => Math.max(...arr);
          
          // output: 1
          lowestNumber([1, 2, 3, 1])
          
          // output: 3
          biggestNumber([1, 2, 3, 1])
          

          06.獲取數組中最近的數據項

          const closestNumber = (arr, number) => arr.reduce((acc, current) => (Math.abs(current - number) < Math.abs(acc - number) ? current : acc) ); 
          
          // output: 3
          closestNumber([1, 2, 3, 4, 1], 3.2)
          

          07.獲取數組中最小/最大數據項的首個索引

          const indexOfLowestNumber = arr => arr.indexOf(Math.min(...arr));
          const indexOfBiggestNumber = arr => arr.indexOf(Math.max(...arr));
          
          // output: 0
          indexOfLowestNumber([1, 2, 3, 4])
          
          // output: 3
          indexOfBiggestNumber([1, 2, 3, 4])
          

          08.等分數組

          const splitInHalf = arr => [arr.slice(0, Math.ceil(arr.length / 2)), arr.slice(Math.ceil(arr.length / 2))];
          
          // output: [[1, 2], [3, 4]]
          splitInHalf([1,2,3,4])
          

          09.獲取數組中最短/最長子串

          const longestString = arr => arr.reduce((prev, curr) => prev.length > curr.length ? prev : curr);
          const shortestString = arr => arr.reduce((prev, curr) => prev.length < curr.length ? prev : curr);
          
          // output: abc
          console.log(shortestString(['hello', 'fedlab', 'abc']));
          
          // output: fedlab
          console.log(longestString(['hello', 'fedlab', 'abc']));
          

          此代碼還能通過返回值的 length 屬性獲取到最短、最長字符串的長度。

          10.數組求和與均值

          const sum = arr => arr.reduce((a, b) => a + b, 0);
          
          const average = arr => arr.reduce((a, b) => a + b) / arr.length
          

          11.數組隨機排序

          const shuffle = arr => [...arr].sort(() => 0.5 - Math.random());
          

          12.字符串轉CamelCase

          const toCamelCase = str => str.replace(/[\s\._-]+\w/g, (m) => m[m.length-1].toUpperCase());
          
          // output: helloWorld
          toCamelCase('hello-world')
          toCamelCase('hello world')
          toCamelCase('hello_world')
          toCamelCase('hello.world')
          

          13.字符串轉PascalCase

          const toPascalCase = str => str.replace(/[\s\._-]+\w/g, (m) => m[m.length - 1].toUpperCase()).replace(str.charAt(0), str.charAt(0).toUpperCase());
          
          // output: HelloWorld
          toPascalCase('hello-world')
          toPascalCase('hello world')
          toPascalCase('hello_world')
          toPascalCase('hello.world')
          

          15.轉換 HTML 特殊字符

          const htmlSpecialChars = str => str.replace(/[&"'<>]/g, (i) => ({ "&": "&", '"': """, "'": "'", "<": "<", ">": ">" }[i]));
          

          16.反轉字符串中的所有單詞

          const reverseWords = (str) => str.replace(/(\p{L}+)/gu, (word) => [...word].reverse().join(''));
          
          // output: olleh dlrow
          reverseWords('hello world')
          

          Unicode標準定義了每個字符的性質,許多支持Unicode的程序能夠通過\p{quality}來支持其中的一部分。

          17.反轉整個字符串

          const reverseString = str => [...str].reverse().join("");
          

          18.在字詞邊界截斷字符串

          const truncateAfterWord = (str, chars, placeholder = '…') => str.length < chars ? str : `${str.substr( 0, str.substr(0, chars - placeholder.length).lastIndexOf(" "))}${placeholder}`
          
          // output: foo bar…
          truncateAfterWord('foo bar baz', 9)
          

          19.畫一個心型

          520 表白可以用一下子哈。

          const readline=require("readline");function genMonospacedAlphabet(e){return{" ":" ",a:"a",b:"b",c:"c",d:"d",e:"e",f:"f",g:"g",h:"h",i:"i",j:"j",k:"k",l:"l",m:"m",n:"n",o:"o",p:"p",q:"q",r:"r",s:"s",t:"t",u:"u",v:"v",w:"w",x:"x",y:"y",z:"z",A:"A",B:"B",C:"C",D:"D",E:"E",F:"F",G:"G",H:"H",I:"I",J:"J",K:"K",L:"L",M:"M",N:"N",O:"O",P:"P",Q:"Q",R:"R",S:"S",T:"T",U:"U",V:"V",W:"W",X:"X",Y:"Y",Z:"Z","!":"!","@":"@","#":"#",$:"$","%":"%","^":"^","&":"&","*":"*","(":"(",")":")",_:"_","+":"+"}[e]}const rl=readline.createInterface({input:process.stdin,output:process.stdout});rl.question("Say something: ",(e=>{rl.close();const t=e.split("").map((e=>genMonospacedAlphabet(e))).join(""),s=Math.pow,n=e=>new Promise((t=>{setTimeout((()=>{t()}),e)})),o=genMonospacedAlphabet(" "),a=(()=>{let e=-1,s=t.length;return()=>(e>s-1?e=0:e++,e===s||/\s/.test(t[e])?o:t[e])})(),r=async(e,t)=>{await process.stdout.write(((e,t,n=1,o=1)=>s(s(e*n*.05,2)+s(-t*o*.1,2)-1,3)-s(e*n*.05,2)*s(-t*o*.1,3)<0)(e,t,1.2)?""+a():o)};let i=-15;const c=async()=>{for(let e=-25;e<25;e+=1)await r(e,i),await n(2);process.stdout.write("\n"),i<10&&(i++,c())};c()}));
          

          最后

          以上就是我們開發中經常遇到的場景,都可以用一行代碼來實現。如果你還有其他的 一行代碼實現的逆天操作 歡迎留言討論。

          先看看這哥倆的好處。讓我們一起來學習Free Pascal和Lazarus。

          下面是基本步驟和資源,能夠幫助你開啟學習之旅:

          1. 安裝Free Pascal:你需要從官方網站 https://www.freepascal.org/ 下載并安裝Free Pascal編譯器。根據你的操作系統選擇適當的版本,并按照指示進行安裝。
          2. 前往Lazarus官方網站(https://www.lazarus-ide.org/index.php?page=downloads),點擊“Download”鏈接,在彈出的頁面中選擇適合你的操作系統下載適合的Lazarus版本。按照提示進行安裝。
          3. 學習語言基礎:在開始編寫Free Pascal程序之前,你需要了解該語言的基礎知識,例如:數據類型、變量、常量、運算符、流程控制語句、函數、過程等等。你可以參考Free Pascal的官方文檔和在線教程,例如:http://www.freepascal.org/docs.html 和 https://www.learn-pascal.com/。
          4. 編寫你的第一個程序:編寫你的第一個Free Pascal程序是很重要的一步,可以幫助你理解語言的基本結構和語法。一個簡單的示例程序如下:
          program HelloWorld;
          begin
            writeln('Hello, World!');
          end.
          
          1. 熟悉編程環境:Free Pascal通常與Lazarus一起使用,Lazarus是一個開源的跨平臺集成開發環境(IDE),提供了可視化界面設計器和調試器等功能,可以幫助你更輕松地開發Free Pascal應用程序。你可以從Lazarus的官方網站 https://www.lazarus-ide.org/ 下載并安裝Lazarus IDE。
          • 進一步學習和實踐:在掌握Free Pascal基礎知識和編程環境之后,你可以通過閱讀文檔、參考書籍、參與社區等方式深入學習該語言。
          • 官方文檔:Free Pascal和Lazarus都有詳細的官方文檔,包括語言手冊、IDE使用指南和常見問題解答等。你可以從官方網站下載和閱讀這些文檔,例如:http://www.freepascal.org/docs.html 和 https://www.lazarus-ide.org/documentation.html。
          • 在線教程:有很多在線教程和指南可以幫助你學習Free Pascal和Lazarus。一些好的資源包括:https://www.learn-pascal.com/,https://www.tutorialspoint.com/pascal/index.htm,http://www.delphibasics.co.uk/ 和 https://www.tutorialspoint.com/lazarus/index.htm。
          • 書籍:如果你更喜歡閱讀書籍來學習,也有很多好的書籍介紹Free Pascal和Lazarus。一些推薦的書籍包括:《Lazarus Handbook》、《Free Pascal Reference Guide》、《Free Pascal from Square One》和《Object Pascal Language Guide》。
          • 社區和論壇:參與Free Pascal和Lazarus社區可以幫助你更好地理解和掌握這些工具。你可以加入官方郵件列表和論壇,與其他開發者交流和分享經驗。
          1. 練習和實踐:除了學習理論知識,實踐也是學習編程的重要環節。你可以從一些小項目或練習題開始,下期我們來學習使用Lazarus構建一個簡單GUI應用程序。


          全文結束。下期預告:構建一個簡單的GUI應用程序

          #編程#


          主站蜘蛛池模板: 精品在线视频一区| 激情内射日本一区二区三区| 亚洲欧美日韩一区二区三区在线| 日本一区二区三区在线看| 亚洲一区精品无码| 日本一区二区高清不卡| 国产一区二区好的精华液| 亚洲电影一区二区| 日本亚洲成高清一区二区三区| 风间由美在线亚洲一区| 无码少妇丰满熟妇一区二区 | 国产在线观看一区二区三区| 熟女精品视频一区二区三区| 亚洲成AV人片一区二区密柚| 伦理一区二区三区| 国产一区二区三区精品视频| 大屁股熟女一区二区三区 | 国产精品香蕉一区二区三区| 精品一区二区三区四区| 制服丝袜一区二区三区| 伦理一区二区三区| 亚洲AV无码一区东京热| 台湾无码一区二区| 亚洲午夜一区二区三区| 国产精品自拍一区| 精品视频午夜一区二区| 波多野结衣精品一区二区三区 | 国精产品一区一区三区| 亚洲国产精品一区二区第一页免| 精品一区二区高清在线观看| 视频一区二区中文字幕| 中文字幕一区二区三区免费视频| 国产成人一区在线不卡| 在线观看午夜亚洲一区| 久久久老熟女一区二区三区| 亚洲色无码专区一区| 日韩精品一区二区三区在线观看| 无码欧精品亚洲日韩一区夜夜嗨| 一区二区在线视频观看| 国产亚洲3p无码一区二区| 久久亚洲日韩精品一区二区三区|