記錄用anaconda在windows環境安裝facefusion,使之可使用gpu運作

0、安裝cuda_11.8,安裝完成後,下載cudnn archive並解壓縮到cuda的安裝目錄。使用visual studio installer安裝C++ build tool和windows SDK(按照安裝的默認選項即可)。

1、在conda新建一個虛擬環境
conda create -n facefusion python=3.10

2、安裝pytorch,讓pytorch使用gpu運作
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

3、新建一個文件夾,在文件夾內獲取facefusion代碼
git clone https://github.com/facefusion/facefusion.git

4、安裝環境依賴
pip install -r requirements.txt

5、安裝ffmpeg
conda install ffmpeg

6、應該可以正常使用gpu運行了
python run.py –execution-providers cuda

記錄一次yolo環境安裝

yolo是一個object detect model,顧名思義就是拿來檢測物件的。

使用yolo官網的安裝步驟

git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install

在全新的環境中去執行的話,可能最終安裝完成之後會變成只能夠使用CPU來運算的方式。

我解決的方式是,先將本地安裝好的pytorch刪除,然後去pytorch官網https://pytorch.org/get-started/locally/選擇適用於自己的選項來安裝。

然後再根據yolo官網的安裝步驟安裝環境,完成後,即會使用GPU來運算。速度會比CPU快得多。

 

Gin(Golang)におけるHTMLテンプレート記述方法

package main

import (
"github.com/gin-gonic/gin"
"net/http"
)

type C struct {
Id int
Name string
}

func main() {
router := gin.Default()
router.LoadHTMLGlob("templates/*.tmpl")
router.GET("/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.tmpl", gin.H{
"a": "a",
"b": []string{"b_todo1","b_todo2"},
"c": []C{{1,"c_mika"},{2,"c_risa"}},
"d": C{3,"d_mayu"},
"e": true,
"f": false,
"h": true,
})
})
router.Run(":8080")
}

 

<html>

{{/* コメント*/}}

{{/* ドット名前でgoから受け取れる */}}
<h1>{{.a}}</h1>

{{/* ループはrange, ドットで要素にアクセス, endで終了 */}}
<ul>
{{range .b}}
<li>{{.}}</li>
{{end}}
</ul>

{{/* 構造体は、ドットにメンバ名でアクセス */}}
{{range .c}}
<p>{{.Id}}<b>{{.Name}}</b></p>
{{end}}

{{/* 構造体、ループなしなら, ドット変数ドットメンバ */}}
<p>{{.d.Id}}<b>{{.d.Name}}</b></p>

{{/* if文 */}}
{{if .e}}
<p> e true </p>
{{else}}
<p> e false </p>
{{end}}

{{if .f}}
<p> f true </p>
{{else}}
<p> f false </p>
{{end}}

{{/* goソースでgは指定されていない */}}
{{if .g}}
<p> g true </p>
{{else}}
<p> g false </p>
{{end}}

{{/* withはifが真の場合、ドットに情報が設定される */}}
{{with .h}}
<p> h1 {{.}} </p>
{{end}}

{{/* withでなくif使うと、ドットアクセスで特定要素が出力されず */}}
{{if .h}}
<p> h2 {{.}} </p>
{{end}}

{{/* 変数宣言できる */}}
{{/* printf など関数使用可能。fmt.Printfのエイリアス */}}
{{$i := "ii"}}
<p>{{$i}}</p>
<p>{{printf "%s-%s" $i "iii"}}</p>

{{/* defineで定義することも可 */}}
{{define "J"}}
<p>jjj</p>
{{end}}

<hr>

{{/* defineで定義された呼び出しはtemplate */}}
{{template "J"}}

{{/* 不等号比較など、小なりはlt */}}
{{$k := 8}}
{{if lt 5 $k}}
<p> 8 large </p>
{{else}}
<p> 5 large </p>
{{end}}

</html>

 

Google偷偷升級了日文Google Now

之前Google Now擁有對答功能的版本據我能用的就只有英文版而已,而最近又多了個選擇,就是日文版。
以前就只有英文能夠對應用戶的說話自動進行各種操作或搜索,現在日文也可以了。
目前已經確定可以用的語音命令有
”〇〇〇に電話をかけて”(打電話給〇〇〇)
”〇〇〇にXXXとメッセージを送信して”(給〇〇〇發送信息,寫“XXX”)
”XXXをメモして”(筆記記下XXX)
”周辺のバス停”(周邊的bus站)
“映画名” (映画館/上映時間案内)(告訴它電影名會讀出該電影的信息)
“近くの映画館”(附近的電影院)
”朝8時にアラームをセット”(早上8點設好鬧鐘)
“ソニーの株価”(sony的股價)
“アプリ名”を起動(告訴它app名會幫你啟動)
“スポーツチーム名” (運動球隊的名字,例如曼聯)
“〇〇〇の年齢は?”(〇〇〇多少歲?)
“明日〇〇〇と予定に追加”(明天加上〇〇〇的行程)

我問他曼聯的情況,它還告訴我曼聯最近輸給了奧林比亞高斯0:2。

Google還沒有正式公開說明,不過應該也快了吧。到時應該會有更多可用的命令了。

PHP使用cURL時對404的判別方法

使用cURL時,假如使用以下代碼

if( curl_exec($ch) ){
    //success
} else {
    //error
}

就算那個網頁404,都會跑去success那邊。

需要使用以下設置

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); //處理失敗判斷
$onlineData = curl_exec($ch);

if( curl_exec($ch) ){
    //success
} else {
    //error
}

就能解決。

因為設置 CURLOPT_FAILONERROR 為 TRUE時,使用curl返回的http狀態碼大於400都會判定為處理失敗。