久久午夜无码,日日射天天射五月丁香婷婷我来了 ,欧美黑人又长又粗在线视频,午夜天网站

【W(wǎng)inEdt怎么用】WinEdt好不好_使用技巧

【W(wǎng)inEdt怎么用】WinEdt好不好_使用技巧

傅涵蓄 2025-06-16 硬件 4 次瀏覽 0個(gè)評(píng)論

  本文作者是Lukas Biewald—CrowdFlower的創(chuàng)始人,Lukas曾被《Inc.》雜志評(píng)選為30歲以下杰出企業(yè)家。CrowdFlower成立于2009年,是一個(gè)按需勞動(dòng)力的大數(shù)據(jù)平臺(tái),幫助企業(yè)收集培訓(xùn)數(shù)據(jù)并進(jìn)行人機(jī)交互機(jī)器學(xué)習(xí)。

  Lukas Biewald畢業(yè)于斯坦福大學(xué),獲得數(shù)學(xué)學(xué)士學(xué)位和計(jì)算機(jī)科學(xué)碩士學(xué)位。Lukas曾任職Yahoo日本搜索團(tuán)隊(duì)主管,之后作為高級(jí)數(shù)據(jù)科學(xué)家就職于Powerset,該公司于2008年被微軟收購(gòu)。

  深度學(xué)習(xí)和廉價(jià)硬件的探索

【W(wǎng)inEdt怎么用】WinEdt好不好_使用技巧

  早期航空器,1818(來源:維基百科&美國(guó)國(guó)會(huì)數(shù)據(jù)庫(kù))

  在制造了一個(gè)圖像識(shí)別機(jī)器人后,顯然下一步是制作一個(gè)可飛行的版本。于是我決定打造一款能夠進(jìn)行面部識(shí)別并響應(yīng)語音命令的自動(dòng)化無人機(jī)。

  ▍選擇一款預(yù)制無人機(jī)

  對(duì)無人機(jī)進(jìn)行編程,最難的部分是如何開始,我是從組裝無人機(jī)零件開始的。但是幾乎和之前所有DIY項(xiàng)目一樣,自己組裝無人機(jī)花了我很多的錢。而且坦白的說,我手工打造的無人機(jī)一直沒有穩(wěn)定飛行過??梢钥隙ǖ氖牵苯淤?gòu)買預(yù)制版本才是更加簡(jiǎn)單經(jīng)濟(jì)的選擇。

  大多數(shù)無人機(jī)制造商都聲稱提供API接口,但對(duì)于業(yè)余愛好者來說并沒有什么明顯的優(yōu)勢(shì)。市面上帶似乎可用的API接口的無人機(jī),大多售價(jià)都超過1000美元,這是一個(gè)很高的進(jìn)入門檻。

  經(jīng)過一些調(diào)查以后,我發(fā)現(xiàn)了Parrot AR Drone 2.0(見下圖)。我認(rèn)為對(duì)于業(yè)余愛好者來說,這是一款理想的機(jī)器。它的價(jià)格不高,還可以進(jìn)行編程。你可以選擇花200美元買一臺(tái)新機(jī)器,但由于很多人買了無人機(jī)又從來不使用它們,因此購(gòu)買一臺(tái)二手機(jī)器也是個(gè)不錯(cuò)的選擇。在eBay上二手無人機(jī)的售價(jià)大約是130美元甚至更低。

  △我收藏的各類無人機(jī),Parrot AR Drone無人機(jī)掛在最左邊

  Parrot AR無人機(jī)飛行的穩(wěn)定性沒有更貴的新款 Parrot Bebop 2.0 好(售價(jià)大約550美元),但是Parrot AR提供一個(gè)好用的node.js客戶端庫(kù)叫做node-ar-drone,很適合在上面進(jìn)行開發(fā)。

  另外一個(gè)優(yōu)勢(shì):Parrot AR無人機(jī)很結(jié)實(shí)。在測(cè)試自動(dòng)化程序的過程中,無論它被撞墻上、家具上、室內(nèi)植物上和客人身上,他仍然能夠良好的飛行。

  相比給地面機(jī)器人編程,給無人機(jī)編程最糟的地方是電池續(xù)航時(shí)間短。一塊電池需要充電幾個(gè)小時(shí),才能飛行大約10分鐘的時(shí)間。因此我建議多買兩塊備用電池,測(cè)試的時(shí)候可以循環(huán)使用。

  ▍給我的無人機(jī)編程

  由于Java天生的驅(qū)動(dòng)能力,因此是非常理想的無人機(jī)編程語言。相信我,無人機(jī)飛行中會(huì)遇到很多異步事件。我雖然沒有在Node上花費(fèi)很多時(shí)間,但這個(gè)語言讓我印象深刻。我最近一次認(rèn)真的為機(jī)器人編程使用的是C語言。用C語言處理線程和各種異常是十分痛苦的,因此最好少用。我希望有人為其它無人機(jī)平臺(tái)建立Java開發(fā)包,因?yàn)檫@個(gè)語言讓我們處理不確定性的開發(fā)事件,變得簡(jiǎn)單有趣。

  架構(gòu)

  我決定在筆記本電腦上運(yùn)行邏輯,在云端進(jìn)行機(jī)器學(xué)習(xí)。比起直接在樹莓派硬件上運(yùn)行神經(jīng)網(wǎng)絡(luò),這種架構(gòu)的延遲更低。我認(rèn)為這種架構(gòu)對(duì)目前的業(yè)余無人機(jī)開發(fā)項(xiàng)目來說是可行的。

  微軟、谷歌、IBM和亞馬遜都有快速、廉價(jià)的云端機(jī)器學(xué)習(xí)API。最終,我選擇了微軟認(rèn)知服務(wù)API(Cognitive Service API)。因?yàn)檫@是唯一一個(gè)提供定制面部識(shí)別功能的API。

  △無人機(jī)的架構(gòu)

  入門

  默認(rèn)情況下,Parrot AR Drone2.0帶有可供客戶端連接的無線網(wǎng)絡(luò)。這個(gè)功能對(duì)編程者來說非常麻煩。每次你希望嘗試什么的時(shí)候,需要先斷開你的網(wǎng)絡(luò)然后連上無人機(jī)的網(wǎng)絡(luò)。幸運(yùn)的是,有一個(gè)名叫ardrone-wpa2的項(xiàng)目非常有用。它可以通過腳本讓無人機(jī)加入你自己的WiFi網(wǎng)絡(luò)。

  遠(yuǎn)程登錄到無人機(jī)是件十分有趣的事。Parrot運(yùn)行在一個(gè)剝離版本的Linux上。你最近一次使用遠(yuǎn)程登錄功能是什么時(shí)候?連接了什么東西?以下是打開終端并直接登錄無人機(jī)的示例。

  % /connect "The Optics Lab" -p "particleorwave" -a 192.168.0.1 -d 192.168.7.43

  % telnet 192.168.7.43

  用命令行模式飛行

  安裝node庫(kù)以后,創(chuàng)建一個(gè)node.js REPL(Read-Evaluate-Print-Loop)并用它引導(dǎo)無人機(jī):

  var arDrone = require('ar-drone');

  var client = arDrone.createClient({ip: '192.168.7.43'});

  client.createRepl();

  drone> takeoff()

  true

  drone> client.animate(‘yawDance, 1.0)

  如果你一直跟著做到這步,那么現(xiàn)在你的無人機(jī)肯定已經(jīng)摔過至少幾次了。我上千次重新粘貼了安全殼,直到它徹底損壞,不得不買一個(gè)新的。我猶豫要不要提這個(gè),實(shí)際上Parrot AR在不安裝安全殼的情況下飛得更好。但無人機(jī)在沒有安全殼的情況下更加危險(xiǎn),因?yàn)楫?dāng)無人機(jī)撞上什么東西時(shí),螺旋槳可能會(huì)折斷,而且會(huì)在家具上留下痕跡。

  通過網(wǎng)頁(yè)控制飛行

  為無人機(jī)構(gòu)建基于web的操作界面并不困難,而且結(jié)果令人滿意(見下圖)。使用Express.js框架可以輕松的構(gòu)建一個(gè)漂亮的web服務(wù)器。

  var express = require('express');

  app.get('/', function (req, res) {

  res.sendFile(path.join(__dirname + '/index.html'));

  });

  app.get('/land', function(req, res) {

  client.land();

  });

  app.get('/takeoff', function(req, res) {

  client.takeoff();

  });

  app.listen(3000, function () {

  });

  我設(shè)置了一個(gè)按鈕來實(shí)現(xiàn)AJAX請(qǐng)求。

  <html>

  < language='java'>

  function call(name) {

  var xhr = new ();

  xhr.open('GET', name, true);

  xhr.send();

  }

  </>

  <body>

  <a onclick="call('takeoff');">Takeoff</a>

  <a onclick="call('land');">Land</a>

  </body>

  </html>

  從無人機(jī)上獲得視頻流

  我發(fā)現(xiàn)使用無人機(jī)攝像頭發(fā)送反饋的最佳方法是打開一個(gè)連接,并將我的網(wǎng)絡(luò)服務(wù)器中的PNG連續(xù)發(fā)送到我的網(wǎng)站。我的網(wǎng)絡(luò)服務(wù)器使用AR無人機(jī)庫(kù)從無人機(jī)攝像頭中連續(xù)拉取PNG圖片。

  var pngStream = client.getPngStream();

  pngStream

  .on('error', console.log)

  .on('data', function(pngBuffer) {

  sendPng(pngBuffer);

  }

  function sendPng(buffer) {

  res.write('--daboundary\nContent-Type: image/png\nContent-length: ' + buff

  er.length + '\n\n');

  res.write(buffer);

  });

  在無人機(jī)圖像上運(yùn)行人臉識(shí)別

  Azure的面部API功能強(qiáng)大且易用。它可以識(shí)別你上傳的朋友照片,也可以猜測(cè)年齡和性別,我發(fā)現(xiàn)這兩個(gè)功能的準(zhǔn)確率高得令人驚訝。延遲時(shí)間約為200毫秒,費(fèi)用是1.5美元/1,000次。對(duì)我開發(fā)的這個(gè)程序來說,這是完全合理的。下面是關(guān)于如何發(fā)送一個(gè)圖像并進(jìn)行面部識(shí)別的代碼。

  var oxford = require('project-oxford'),

  oxc = new oxford.Client(CLIENT_KEY);

  loadFaces = function() {

  chris_url = "https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAALyAAAAJGMyNmIzNWM0LTA5MTYtNDU4Mi05YjExLTgyMzVlMTZjYjEwYw.jpg";

  lukas_url = "https://media.licdn.com/mpr/mpr/shrinknp_400_400/p/3/000/058/147/34969d0.jpg";

  oxc.face.faceList.create('myFaces');

  oxc.face.faceList.addFace('myFaces', {url => chris_url, name=> 'Chris'});

  oxc.face.faceList.addFace('myFaces', {url => lukas_url, name=> 'Lukas'});

  }

  oxc.face.detect({

  path: 'camera.png',

  analyzesAge: true,

  analyzesGender: true

  }).then(function (response) {

  if (response.length > 0) {

  drawFaces(response, filename)

  }

  });

  我使用ImageMagick庫(kù)來注釋PNG圖片中的面孔。在這點(diǎn)上有很多可以擴(kuò)展的方向,如使用情感API確定面部的情緒等。

  運(yùn)行語音識(shí)別控制無人機(jī)

  語音識(shí)別部分最棘手的不是語音識(shí)別本身,而是以微軟的Speech API要求的格式將音頻流從網(wǎng)頁(yè)傳輸?shù)奖镜胤?wù)器,最終代碼的大部分是為了實(shí)現(xiàn)這個(gè)功能。一旦你能夠通過單通道采集到正確頻率的音頻,這個(gè)API就可以很好的工作,而且非常容易使用。它的價(jià)格是4美元/1000次請(qǐng)求,這對(duì)于業(yè)務(wù)愛好者的應(yīng)用來說,基本上算是免費(fèi)的。

  RecordRTC有一個(gè)很好的庫(kù),這是客戶端網(wǎng)絡(luò)音頻錄制的好起點(diǎn)。在客戶端上,我們可以添加代碼來保存音頻文件:

  app.post('/audio', function(req, res) {

  var form = new formidable.IncomingForm();

  // specify that we want to allow the user to upload multiple files in a single request

  form.multiples = true;

  form.uploadDir = path.join(__dirname, '/uploads');

  form.on('file', function(field, file) {

  filename = "audio.wav"

  fs.rename(file.path, path.join(form.uploadDir, filename));

  });

  // log any errors that occur

  form.on('error', function(err) {

  console.log('An error has occured: \n' + err);

  });

  // once all the files have been uploaded, send a response to the client

  form.on('end', function() {

  res.end('success');

  });

  // parse the incoming request containing the form data

  form.parse(req)

  speech.parseWav('uploads/audio.wav', function(text) {

  console.log(text);

  controlDrone(text);

  });

  });

  我使用FFmpeg程序減少音頻采樣點(diǎn),并將其合并為一個(gè)通道,上傳到微軟:

【W(wǎng)inEdt怎么用】WinEdt好不好_使用技巧

  exports.parseWav = function(wavPath, callback) {

  var cmd = 'ffmpeg -i ' + wavPath + ' -ar 8000 -ac 1 -y tmp.wav';

  exec(cmd, function(error, stdout, stderr) {

  console.log(stderr); // command output is in stdout

  });

  postToOxford(callback);

  });

  自主搜索路徑

  我用ardrone-autonomy庫(kù)為我的無人機(jī)繪制自動(dòng)尋徑地圖。在無人機(jī)無數(shù)次墜落在客廳的家具和植物上后,我妻子好心的建議我把我的項(xiàng)目搬到車庫(kù)里去。那里沒有太多可破壞的東西了,但也沒有太多的空間(見下圖)。

  △在我的“實(shí)驗(yàn)室”里試飛無人機(jī)

  如果我能獲得更大的實(shí)驗(yàn)空間,我會(huì)繼續(xù)研究智能搜索算法。但現(xiàn)在我只需要讓我的無人機(jī)能夠起飛、旋轉(zhuǎn),去尋找我的朋友和敵人:

  var autonomy = require('ardrone-autonomy');

  var mission = autonomy.createMission({ip: '10.0.1.3', frameRate: 1, imageSize: '640:320'});

  console.log("Here we go!")

  mission.takeoff()

  .zero() // Sets the current state as the reference

  .altitude(1)

  .taskSync(console.log("Checkpoint 1"))

  .go({x: 0, y: 0, z: 1, yaw: 90})

  .taskSync(console.log("Checkpoint 2"))

  .hover(1000)

  .go({x: 0, y: 0, z: 1, yaw: 180})

  .taskSync(console.log("Checkpoint 3"))

  .hover(1000)

  .go({x: 0, y: 0, z: 1, yaw: 270})

  .taskSync(console.log("Checkpoint 4"));

  .hover(1000)

  .go({x: 0, y: 0, z: 1, yaw: 0

  .land()

  把所有的東西放在一起

  看看這個(gè)視頻,我?guī)е业臒o人機(jī)起飛去尋找我的朋友克里斯:

  小結(jié)

  一旦建立好一切,你可以通過API控制無人機(jī)視頻源,無人機(jī)編程就變得非常有趣。伴隨著新的圖像識(shí)別技術(shù),給我們提供了各種應(yīng)用的可能,無論從觀察地面植物到在墻壁上作畫。Parrot無人機(jī)不是為在室內(nèi)小空間飛行設(shè)計(jì)的,一個(gè)價(jià)格更高的無人機(jī)能讓整個(gè)應(yīng)用變成現(xiàn)實(shí)。最終,無人機(jī)會(huì)變得更加穩(wěn)定,現(xiàn)實(shí)世界中將出現(xiàn)大量類似的應(yīng)用。

  微軟的認(rèn)知服務(wù)云API易于使用而且價(jià)格便宜。首先,我擔(dān)心無人機(jī)的異常廣角攝像頭會(huì)影響面部識(shí)別,而無人機(jī)螺旋槳的噪音會(huì)干擾語音識(shí)別。但總體來說,表現(xiàn)要好于預(yù)期。延遲問題也不像我所擔(dān)心的那樣。使用云計(jì)算處理實(shí)時(shí)圖像流看起來似乎是個(gè)奇怪的架構(gòu),但它可能是許多應(yīng)用的未來之路。

  編譯:媛媛

  招聘 志愿者

  希望你有穩(wěn)定輸出的時(shí)間,英文能力佳,從業(yè)者優(yōu)先。

  加入「AI從業(yè)者社群」請(qǐng)備注個(gè)人信息

  添加小雞微信 liulailiuwang

轉(zhuǎn)載請(qǐng)注明來自夕逆IT,本文標(biāo)題:《【W(wǎng)inEdt怎么用】WinEdt好不好_使用技巧》

每一天,每一秒,你所做的決定都會(huì)改變你的人生!

發(fā)表評(píng)論

快捷回復(fù):

評(píng)論列表 (暫無評(píng)論,4人圍觀)參與討論

還沒有評(píng)論,來說兩句吧...

色呦呦免费在线视频| 在线观看播放另类国产小视频 | 国产精品偷伦视频无遮挡| 深夜啪啪啪啪网站| 欧美日韩人妻少妇| 久久亚洲A∨无码精品色午夜| 午夜AAA片一区二区专区| 美女奶头国产精品| 96久久久宗合视频| 日本福利视频一区| 蜜桃一区一区三区| 最新国内精品自在自线视频| 亚洲中文久久精品无码av| 欧美日一区在线| 日韩精品久久不卡中文字幕| 亚洲黄色片密臀男人的天堂| 成人无吗后入| 成人网站免费18| 久丁香综合素质久久月| 激情综合五月欧美| 日韩一区二区三区中文字幕在线观看 | 国产妇女乱一性一交| 色欲视频久久综合| 日本黄色A V网站| 欧美熟女乱伦一区二| 久久毛片网站| 日韩精品无码JAVA| 偷窥色拍 熟女 少妇| 国产精品欧美在线| 在线国产欧美亚洲天堂| 婷五月公司| 色五月天一区二区三区| 久久这里只有精品18| 国产日韩欧美精品久久久一区二区 | 亚洲美女第一页| 人人人操人人爽| 后入在线| 欧美日韩精品一级黄片| 国产精品无码久久| 久久99精品日产| 射天天干天天|