整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          github資源推薦:目標(biāo)姿態(tài)檢測數(shù)據(jù)集與渲染方法

          準(zhǔn)化數(shù)據(jù)集在多媒體研究中至關(guān)重要。今天,我們要給大家推薦一個匯總了姿態(tài)檢測數(shù)據(jù)集和渲染方法的 github repo。

          項(xiàng)目地址:https://github.com/YoungXIAO13/ObjectPoseEstimationDatasets

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

          該項(xiàng)目分為四個部分:

          • 受控環(huán)境中的對象

          • 野外物體

          • 3D 模型數(shù)據(jù)集

          • 渲染方法

          受控環(huán)境中的對象

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

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

          使用項(xiàng)目上面的代碼 ply2obj.py 將原始 .ply 文件轉(zhuǎn)換為 .obj 文件,并運(yùn)行 create_annotation.py 為數(shù)據(jù)集中的所有場景創(chuàng)建一個注釋文件。

          以上數(shù)據(jù)集的下載地址:

          • 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+ 是用于視點(diǎn)估計的事實(shí)基準(zhǔn)。

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

          數(shù)據(jù)集下載地址:

          • 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 模型數(shù)據(jù)集

          為了驗(yàn)證網(wǎng)絡(luò)泛化能力,可以使用以下數(shù)據(jù)集生成合成訓(xùn)練數(shù)據(jù)。請注意,ABC 包含通用和任意的工業(yè) CAD 型,而 ShapeNetCore 和 ModelNet 包含常見類別的對象,如汽車和椅子。

          數(shù)據(jù)集地址:

          • 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 提供了相關(guān)的 python 代碼,以使用 Blender 作為一個易于安裝和生成照片級真實(shí)圖像的 python 模塊,從 3D 模型生成渲染圖像。

          你可以在這里找到更多關(guān)于使用它的方法。

          • 物理模擬器

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

          • 其他

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

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

          合成計算機(jī)視覺:恢復(fù)許多用于生成合成圖像的技術(shù)

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

          雷鋒網(wǎng)網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

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

          01.計算數(shù)組中元素出現(xiàn)的次數(shù)

          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.實(shí)現(xiàn)數(shù)組淺拷貝

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

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

          03.數(shù)組是否為空判斷

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

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

          04.刪除數(shù)組中所有重復(fù)數(shù)據(jù)

          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)的元素。保留元素的順序并返回數(shù)組的副本。

          05.獲取數(shù)組中的最小/最大元素

          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.獲取數(shù)組中最近的數(shù)據(jù)項(xiàng)

          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.獲取數(shù)組中最小/最大數(shù)據(jù)項(xiàng)的首個索引

          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.等分?jǐn)?shù)組

          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.獲取數(shù)組中最短/最長子串

          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.數(shù)組求和與均值

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

          11.數(shù)組隨機(jī)排序

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

          12.字符串轉(zhuǎn)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.字符串轉(zhuǎn)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.轉(zhuǎn)換 HTML 特殊字符

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

          16.反轉(zhuǎn)字符串中的所有單詞

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

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

          17.反轉(zhuǎn)整個字符串

          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()}));
          

          最后

          以上就是我們開發(fā)中經(jīng)常遇到的場景,都可以用一行代碼來實(shí)現(xiàn)。如果你還有其他的 一行代碼實(shí)現(xiàn)的逆天操作 歡迎留言討論。

          先看看這哥倆的好處。讓我們一起來學(xué)習(xí)Free Pascal和Lazarus。

          下面是基本步驟和資源,能夠幫助你開啟學(xué)習(xí)之旅:

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


          全文結(jié)束。下期預(yù)告:構(gòu)建一個簡單的GUI應(yīng)用程序

          #編程#


          主站蜘蛛池模板: 亚洲综合激情五月色一区| 亚洲高清偷拍一区二区三区 | 杨幂AV污网站在线一区二区| 日本精品高清一区二区| 无码精品不卡一区二区三区| 日本一区二区三区在线观看| 一区二区三区在线| 国产精品区一区二区三| 国产一区在线mmai| 99久久综合狠狠综合久久一区| 久久久久人妻一区精品| 亚洲av高清在线观看一区二区 | 国产成人一区二区三区高清| 免费无码A片一区二三区| 少妇精品无码一区二区三区| 国产午夜精品一区二区三区漫画| 一区二区免费在线观看| 精品一区二区三人妻视频| 久久精品无码一区二区WWW| 熟女精品视频一区二区三区| 成人精品视频一区二区三区不卡 | 色婷婷一区二区三区四区成人网 | 精品免费国产一区二区| 中字幕一区二区三区乱码 | 日韩一区二区三区在线观看| 久热国产精品视频一区二区三区| 中文字幕日韩精品一区二区三区| 一区二区传媒有限公司| 亚洲乱码av中文一区二区| 国产精品无码亚洲一区二区三区| 日本一区二区三区免费高清| 午夜视频在线观看一区| 日韩精品无码人妻一区二区三区 | 福利一区国产原创多挂探花| 亚洲欧洲一区二区三区| 99国产精品一区二区| 久久久久久人妻一区精品| 日韩人妻一区二区三区蜜桃视频| 一区二区免费视频| 无码少妇一区二区三区芒果| 无码精品久久一区二区三区 |