DeepStream 및 Akka Streams를 사용한 Edge AI용 서버 구축
6367 단어 AkkaScalaIoTdeepstream
이번에는 올해 Edge AI PoC 사건으로 구축한 Edge 서버에서 사양한 기술에 대해 조금 설명하고 싶습니다.
HW
하드웨어는 다음과 같은 구성입니다.
심도 센서(Intel RealSense)는 Jetson Nano 경유로, 다른 비교적 프리미티브인 센서는 M5Camera의 Grove 커넥터에 연결해 Wi-Fi 경유로, 취득한 데이터를 Edge AI 서버의 NVIDIA Jetson AGX Xavier에 흘려 넣는 구성으로 합니다 했다.
Depth Sensor의 Depth 정보는 Jetson Nano에서 1차 처리를 실시한 후, 검출 정보만 Xavier에 보냈습니다.
SW
소프트웨어는 다음과 같이 구성되었습니다.
M5Camera로부터의 영상 스트리밍은 멀티 플랫폼의 스트리밍 프레임워크인 GStreamer 기반의 SDK인 NVIDIA DeepStream로 파이프적인 가공·필터·AI 처리를 실시한 후, Kafka에 흘려 넣어, Alpakka 경유로 Scala로부터 조작했습니다.
또 다른 센서 정보는 JSON을 Akka Streams의 HTTP 구현인 Akka HTTP로 받는 형태를 취했습니다.
예를 들어 위의 JSON을 받는 웹 서버 부분은 다음과 같은 코드입니다.
import java.io._
中略
import akka.event.Logging
final case class Value(
sensor_data: Int
)
final case class Sensor(
timestamp: String,
uid: String,
`type`: String,
values: Array[Value]
)
trait JsonSupport extends SprayJsonSupport with DefaultJsonProtocol {
implicit val valueFormat = jsonFormat1(Value)
implicit val sensorFormat = jsonFormat4(Sensor)
}
trait Service extends Directives with JsonSupport {
val route: Route = post {
extractLog { implicit log =>
entity(as[Sensor]) { sensor =>
val timestamp = sensor.timestamp
val uid = sensor.uid
val `type` = sensor.`type`
val values = sensor.values
中略
complete(StatusCodes.OK)
}
}
}
}
object Main extends Service {
implicit val system: ActorSystem = ActorSystem()
implicit val materializer: ActorMaterializer = ActorMaterializer()
def main(args: Array[String]): Unit = {
Http().bindAndHandle(route, "localhost", 8080)
}
}
마지막으로
Go도 좋지만, Scala도 좋다.
Reference
이 문제에 관하여(DeepStream 및 Akka Streams를 사용한 Edge AI용 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rkyymmt@github/items/99e8447a3dd1701e6e34
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
소프트웨어는 다음과 같이 구성되었습니다.
M5Camera로부터의 영상 스트리밍은 멀티 플랫폼의 스트리밍 프레임워크인 GStreamer 기반의 SDK인 NVIDIA DeepStream로 파이프적인 가공·필터·AI 처리를 실시한 후, Kafka에 흘려 넣어, Alpakka 경유로 Scala로부터 조작했습니다.
또 다른 센서 정보는 JSON을 Akka Streams의 HTTP 구현인 Akka HTTP로 받는 형태를 취했습니다.
예를 들어 위의 JSON을 받는 웹 서버 부분은 다음과 같은 코드입니다.
import java.io._
中略
import akka.event.Logging
final case class Value(
sensor_data: Int
)
final case class Sensor(
timestamp: String,
uid: String,
`type`: String,
values: Array[Value]
)
trait JsonSupport extends SprayJsonSupport with DefaultJsonProtocol {
implicit val valueFormat = jsonFormat1(Value)
implicit val sensorFormat = jsonFormat4(Sensor)
}
trait Service extends Directives with JsonSupport {
val route: Route = post {
extractLog { implicit log =>
entity(as[Sensor]) { sensor =>
val timestamp = sensor.timestamp
val uid = sensor.uid
val `type` = sensor.`type`
val values = sensor.values
中略
complete(StatusCodes.OK)
}
}
}
}
object Main extends Service {
implicit val system: ActorSystem = ActorSystem()
implicit val materializer: ActorMaterializer = ActorMaterializer()
def main(args: Array[String]): Unit = {
Http().bindAndHandle(route, "localhost", 8080)
}
}
마지막으로
Go도 좋지만, Scala도 좋다.
Reference
이 문제에 관하여(DeepStream 및 Akka Streams를 사용한 Edge AI용 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rkyymmt@github/items/99e8447a3dd1701e6e34
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(DeepStream 및 Akka Streams를 사용한 Edge AI용 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rkyymmt@github/items/99e8447a3dd1701e6e34텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)